В статье о Fail2Ban мы рассмотрим пример защиты SSH-сервиса от брутфорс-атак. Рассматривать настройку Fail2Ban будем на сервере с операционной системой Ubuntu.
1. Установка Fail2Ban на сервер
Fail2ban можно установить на все дистрибутивы, основанные на ядре Linux. Для примера мы будем производить установку на Ubuntu 16.04. Для остальных дистрибутивов, отличных от линейки Debian, таких как Fedora, Centos, RedHat, процесс установки будет отличаться только названием пакетного менеджера того или иного дистрибутива.
Перед тем как начать устанавливать Fail2Ban, стоит обновить систему и установленные пакеты до актуальной версии, выполнив команды:
sudo apt update
sudo apt upgrade
Пакет Fail2Ban устанавливается одной командой:
sudo apt install fail2ban -y
2. Создание файла конфигурации Fail2Ban
Чтобы не «сломать» Fail2Ban, не нужно редактировать его основной файл конфигурации. Сделайте копию файла конфигурации с названием jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Файл /etc/fail2ban/jail.local подключается в работу Fail2Ban автоматически и обрабатывается в приоритетном порядке.
3. Настройка файла конфигурации
Чтобы изменить файл конфигурации, откроем его командой:
sudo vim /etc/fail2ban/jail.local
Мы будем вносить изменения в секцию [DEFAULT].
- Ignoreip – IP -адреса, которые не будут блокироваться. Здесь можно указать ваш IP, если он статичный.
- bantime - время, на которое Fail2Ban заблокирует подозрительный IP.
- findtime - время, в которое Fail2Ban определит подозрительный IP.
- maxretry - число неудачных попыток в установленный период (findtime).
Для применения настроек Fail2Ban его необходимо перезапустить:
sudo service fail2ban restart
Если Fail2Ban не перезапустится, причину можно посмотреть в логе:
tail -f /var/log/fail2ban.log
4. Защита SSH
Файл конфигурации Fail2Ban имеет по умолчанию подготовленные секции для различных сервисов.
Откроем файл конфигурации /etc/fail2ban/jail.local. Нам нужна секция [sshd], также она может называться [ssh-iptables].
- enabled - состояние фильтра: включен или выключен.
- filter - параметр отвечает за фильтр, который будет применяться
- action - действия, выполняемые при бане IP-адреса.
- logfile - файл с логами, которые будет отслеживать Fail2Ban.
Файл конфигурации, который заблокирует IP на 12 часов, если с него в течение двух минут было произведено 3 неудачных попытки авторизоваться, выглядит так:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 120
maxretry = 3
bantime = 43200
После внесения изменений необходимо перезапустить Fail2Ban:
sudo service fail2ban restart
Хочется отметить, не имеет никакого смысла делать менее трех попыток установки. В расчет берутся две возможные ошибки при авторизации, включенный CAPS и неправильная раскладка. А чтобы не авторизоваться каждый раз при подключении к серверу, можно настроить авторизацию по ключам https://hoster.ru/faq/5588886-ssh-generaciya-i-avtorizaciya-po-klyucham-na-vps-vds
Таким же методом можно настроить правила для защиты от подбора паролей прочих сервисов на вашем сервере.