Fail2ban - утилита, которая парсит log-файлы на предмет определенных событий и выполняет действия, когда такие события появляются в log-файлах. Эта утилита позволит предотвратить перебор паролей (brute force) и различные подозрительные действия от удаленных компьютеров. Единственное условие - запись события в log- файле.
Базовая установка содержит готовые фильтры для ssh, exim, postfix,cyrus-imap, apache, lighttpd, named и т.д. Можно их создавать и самим, для этого понадобится некоторое знание регулярных выраженией (regexp) в python. Сама настройка Fail2ban очень проста и логична. Рассмотрим базовую установку на сервере Linux Ubuntu Server 10.04 и простую настройку защиты ssh сервера.
Предположим, что наш ssh сервер слушает порт tcp:30500
1) Устанавливаем fail2ban
2) Основной файл конфигурации: /etc/fail2ban/jail.conf
Рассмотрим его подробней:
Секция "DEFAULT" описывает настройки для всех фильтров по умолчанию, и используются в случае, если в фильтре не заданы свои настройки.
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime = 600
maxretry = 3
Секция "ssh" описывает настройки фильтра для ssh сервера.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
В нашем случае, установим значение port =30500 и maxretry = 2 (2 попытки ввода пароля перед блокировкой) и добавим bantime = 3600 - время блокировки на 1 час. Получаем:
[ssh] enabled = true port = 30500 filter = sshd logpath = /var/log/auth.log maxretry = 2 bantime = 3600
3) Включим фильтр ssh-ddos, который будет защищать ssh сервер от попыток ddos-a. Ищем секцию"ssh-ddos"
[ssh-ddos] enabled = false port = ssh filter = sshd-ddos logpath = /var/log/auth.log maxretry = 6
Включаем работу данного фильтра, изменяем порт сервера ssh на 30500 и изменяем значение maxretry и добавляем bantime.
[ssh-ddos] enabled = true port = 30500 filter = sshd-ddos logpath = /var/log/auth.log maxretry = 2 bantime = 3600
Сохраняем файл конфигурации (Ctrl+O)
4) Не забываем перезапустить fail2ban после редактирования конфигурационного файла:
5) Пробуем подключиться с удаленного компьютера по ssh и вводить неправильные пароли/логины. При правильной настройке файлов конфигурации, после 2-х попыток ввода неправильного пароля, удаленный компьютер сможет повторить попытку подключения к ssh серверу только через 1 час.
6) Лог работы fail2ban находится здесь: /var/log/fail2ban.log