Сегодня рассмотрим установку и настройку Fail2Ban на Ubuntu Server 16.04-20.04. Также рассмотрим защиту SSH-сервера от атак типа Brute Force. И так начнем.
Установка Fail2Ban
Устанавливать Fail2Ban будем на операционную систему Ubuntu Server. Перед установкой программы сперва выполним обновление системы:
sudo apt update
sudo apt dist-upgrade -y
Пакет Fail2Ban присутствует в официальном репозитории, поэтому его можно установить одной командой:
sudo apt install fail2ban -y
Настройка Fail2Ban для SSH
Все правки конфигурации мы будем производить в файле /etc/fail2ban/jail.local
, этот файл будет подключен автоматически и его настройки имеют наивысший приоритет.
Откройте файл /etc/fail2ban/jail.local
:
sudo nano /etc/fail2ban/jail.local
Ubuntu Server 14.04/16.04
Подготовим наш файл конфигурации к мониторингу SSH. Добавим секцию [sshd]
:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200
ignoreip = 10.5.5.0/24
- enabled – состояние (true/false) фильтра, показывающее, включен он или выключен.
- filter – какой фильтр применяется (со списком фильтров можно ознакомиться в /etc/fail2ban/filter.d/).
- action – действия, выполняемые при бане IP-адреса.
- logpath – файл с логами, которые будет отслеживать fail2ban.
- ignoreip – указание, какие IP-адреса не должны блокироваться. Вы можете задать через пробел несколько адресов, которые fail2ban не будет учитывать в своих проверках. Например, если у вас постоянный IP-адрес, то вы можете указать его, и тогда при ошибочном вводе пароля ваш IP не будет заблокирован. Также можете указать сразу и подсеть IP-адресов
- bantime – время в секундах, в течение которого подозрительный IP-адрес будет заблокирован.
- findtime – интервал времени в секундах, в течение которого программой будет определяться подозрительная активность.
- maxretry – число неудавшихся попыток авторизации в течение findtime секунд до попадания IP-адреса в бан.
Ubuntu Server 18.04/20.04
В более новых версиях Ubuntu применяется иной подход к написанию секции [sshd].
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
findtime = 600
maxretry = 3
bantime = 43200
ignoreip = 10.5.5.0/24
Разберем что же мы указали в нашем jail.local. Бан для IP на 12 часов, если с него в течение 10 минут было произведено 3 неудачных попытки авторизации
Можно подправить значения на свои. Далее сохраняемся (Ctrl+O) и выходим (Ctrl+X), перезапустим fail2ban для применения настроек:
sudo service fail2ban restart
К слову, fail2ban ведёт лог, поэтому если не удаётся перезапустить программу из-за некорректной конфигурации, то стоит заглянуть в лог:
tail -n 20 -f /var/log/fail2ban.log
Параметр -n
указывает, сколько последних строк из лога вывести на экран.
Для выполнения проверки достаточно несколько раз ввести неправильный пароль при авторизации и убедиться, что дальнейшие запросы от вас не обрабатываются. Следует обратить внимание на следующее:
- желательно проверку производить не с того же IP, с которого осуществляете настройку (чтобы иметь возможность разбанить себя и отредактировать конфиг).
- для проверки время бана лучше выставить поменьше.
- необходимо убедиться, что IP, с которого производится проверка, не был указан в
ignoreip
.
Заключение
Мы рассмотрели использование fail2ban для защиты SSH от брутфорса. Аналогичным образом можно защитить FTP, apache, postfix, dovecot и многие другие сервисы. Вот например статьи для защиты WordPress, защита OpenVPN или защита phpmyadmin .Это убережёт вас от проникновения злоумышленников на сервер путём подбора пароля.