Перейти к содержанию
IPS Invision Community 🇷🇺
  • Использование fail2ban для защиты SSH от подбора пароля

    Использование fail2ban для защиты SSH от подбора пароля

    В данной статье мы рассмотрим защиту SSH-сервиса от брутфорс-атак на примере сервера Ubuntu 16.04 с помощью программы fail2ban, которая эффективно отслеживает сетевую активность и блокирует запросы с устройств, IP-адрес которых попал в чёрный список.

    Технические требования

    • сервер с Ubuntu 16.04
    • пользователь с sudo-правами
    • текстовый редактор nano

    Шаг 1. Установка fail2ban

    Перед установкой программы стоит обновить индекс пакетов, выполнив команду:

    sudo apt-get update

    Пакет fail2ban присутствует в официальном репозитории, поэтому его можно установить одной командой:

    sudo apt-get install fail2ban -y

    Итак, fail2ban установлен. Теперь необходимо произвести минимальную настройку.

    Шаг 2. Создание файла конфигурации

    Программа включает в себя готовый файл конфигурации, однако создателями программы не рекомендуется вносить в него изменения, чтобы не возникло проблем при работе с серверов, поэтому мы просто создадим себе его копию:

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

    Все правки конфигурации мы будем производить в файле /etc/fail2ban/jail.local, этот файл будет подключен автоматически и его настройки имеют наивысший приоритет.

    Шаг 3. Глобальные настройки

    Откройте файл /etc/fail2ban/jail.local текстовым редактором. Так как мы рассматриваем настройку на примере Ubuntu, то будем использовать nano:

    sudo nano /etc/fail2ban/jail.local

    Как и в большинстве конфигов, здесь всё, что находится справа от знака #, является комментарием и не учитывается программой. В первую очередь нас интересует секция [DEFAULT]. В ней содержатся основные правила:

    • ignoreip - указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля не будете заблокированы.
    • bantime - время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
    • findtime - интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
    • maxretry - число неуспешных попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.

    Чтобы настройки вступили в силу, необходимо перезапустить fail2ban:

    sudo service fail2ban restart

    К слову, fail2ban ведёт лог, поэтому если не удаётся перезапустить программу из-за некорректной конфигурации, то стоит заглянуть в лог:

    tail -n 20 -f /var/log/fail2ban.log

    Параметр n указывает, сколько последних строк из лога вывести на экран.

    Шаг 4. Защита SSH

    Файл конфигурации fail2ban имеет по умолчанию подготовленные секции для различных сервисов, поэтому защита какого-либо из них требует минимальных усилий и знаний. Итак, откроем снова файл конфигурации /etc/fail2ban/jail.local и найдём в нём секцию [sshd] (в вашей системе это может быть [ssh] или [ssh-iptables], если это так, то используйте ту секцию, которая у вас есть). Пробежимся по параметрам (в большинстве своём они не являются обязательными, и если не будут указаны, то применяются настройки по умолчанию):

    • enabled - состояние (true/false) фильтра, показывающее, включен он или выключен.
    • filter - какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
    • action - действия, выполняемые при бане IP-адреса.
    • logfile - файл с логами, которые будет отслеживать fail2ban.

    Исходя из этого, конфиг, банящий IP на 12 часов, если с него в течение 10 минут было произведено 3 неудачных попытки авторизоваться, выглядит так:

    [sshd]
    enabled  = true
    filter   = sshd
    action   = iptables[name=SSH, port=ssh, protocol=tcp]
    logpath  = /var/log/auth.log
    findtime    = 600
    maxretry    = 3
    bantime     = 43200

    Сохраните изменения (в nano это Ctrl+O) и перезапустите fail2ban для применения настроек:

    sudo service fail2ban restart

    Шаг 5. Проверка настроек

    Этот шаг не является обязательным, но всё же имеет смысл проверить, что всё работает как было задумано. Посмотреть полный список правил, которыми руководствуется программа при мониторинге активности можно с помощью команды

    sudo iptables –L

    Также для выполнения проверки достаточно несколько раз ввести неправильный пароль при авторизации и убедиться, что дальнейшие запросы от вас не обрабатываются. Следует обратить внимание на следующее:

    • желательно проверку производить не с того же IP, с которого осуществляете настройку (чтобы иметь возможность разбанить себя и отредактировать конфиг).
    • для проверки время бана лучше выставить поменьше.
    • необходимо убедиться, что IP, с которого производится проверка, не был указан в ignoreip.
    • важно знать, как удалить IP-адрес из чёрного списка:
    sudo fail2ban-client set SECTION unbanip IP

    где SECTION - название секции в конфигурационном файле, в соответствии с правилами которой IP был заблокирован, а IP - адрес, который требуется разблокировать. В нашем случае команда выглядит так:

    sudo fail2ban-client set sshd unbanip XXX.XXX.XXX.XXX

    Итак, пробуем: для теста я поставил maxretry = 2, bantime = 600, то есть при двух ошибках мой IP-адрес будет заблокирован на 10 минут.

    ssh root@95.213.195.80
    root@95.213.195.80's password: 
    Permission denied, please try again.
    root@95.213.195.80's password:

    После второй попытки консоль пару минут ожидала ответа от сервера, но в итоге соединение было разорвано. Дальнейшие попытки соединения в течение 10 минут отклонялись на стороне сервера ещё до запроса пароля, как и ожидалось:

    ssh root@95.213.195.80
    ssh: connect to host 95.213.195.80 port 22: Connection refused

    Заключение

    Мы рассмотрели использование fail2ban для защиты SSH от брутфорса. Аналогичным образом можно защитить FTP, apache, postfix, dovecot и многие другие сервисы. Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.

    Было ли это полезно?

    qwert

    Обратная связь

    Рекомендуемые комментарии

    Комментариев нет



    Создайте учетную запись или войдите, чтобы комментировать

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти
×
×
  • Создать...
Вверх
Вверх