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
root@server: apt-get update
root@server: apt-get install fail2ban
root@server: apt-get install fail2ban
2) Основной файл конфигурации: /etc/fail2ban/jail.conf
root@server: nano /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
ignoreip - это разделенный пробелами список ip-адресов, которые не могут быть блокированы fail2ban.
Сюда можно занести свою локальную машину или компьютер, с которого будут проводится эксперименты над системой.# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1
bantime = 600
maxretry = 3
bantime - время в секундах, на которое будет блокироваться хост.
maxretry - максимальное число ошибочных попыток доступа к сервису, прежде чем хост будет заблокирован fail2ban.
Секция "ssh" описывает настройки фильтра для ssh сервера.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
enabled - может принимать значение true или false. Включен,выключен фильтр.enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
port - может принимать значение в соответствии с описанием в файле /etc/services или цифровое значение (номер порта).
filter - имя соответствующего файла-фильтра в /etc/fail2ban/filter.d, без конечного .conf
logpath - файл логов, мониторинг которого осуществляет fail2ban, для проверки подозрительных действий.
maxretry - максимальное число ошибочных попыток доступа к сервису (только для данного фильтра), прежде чем хост будет заблокирован fail2ban.
В нашем случае, установим значение 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.enabled = true
port = 30500
filter = sshd
logpath = /var/log/auth.log
maxretry = 2
bantime = 3600
Ищем секцию"ssh-ddos"
[ssh-ddos]
enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6
Включаем работу данного фильтра, изменяем порт сервера ssh на 30500 и изменяем значение maxretry и добавляем bantime.enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6
[ssh-ddos]
enabled = true
port = 30500
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2
bantime = 3600
Сохраняем файл конфигурации (Ctrl+O)enabled = true
port = 30500
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 2
bantime = 3600
4) Не забываем перезапустить fail2ban после редактирования конфигурационного файла:
root@server: service fail2ban restart
5) Пробуем подключиться с удаленного компьютера по ssh и вводить неправильные пароли/логины. При правильной настройке файлов конфигурации , после 2-х попыток ввода неправильного пароля, удаленный компьютер сможет повторить попытку подключения к ssh серверу только через 1 час.6) Лог работы fail2ban находится здесь: /var/log/fail2ban.log
Снятие бана Fail2ban
Для того, чтоб посмотреть список забаненных IP необходимо ввести в консоли:
root@server iptables -L fail2ban-ssh
После этого удаляем правило, где НОМЕР - номер из предыдущего вывода
root@server iptables -D fail2ban-ssh НОМЕР
После этого удаляем правило, где НОМЕР - номер из предыдущего вывода
root@server iptables -D fail2ban-ssh НОМЕР
Здравствуйте! Всё сделал "по учебнику", но после попытки вода комманд
ОтветитьУдалить/var/log/fail2ban.log
и
nano /etc/fail2ban/jail.conf
Получаю следующее:
bash: /var/log/fail2ban.log: Permission denied
bash: /etc/fail2ban/jail.conf: Permission denied
Подскажите, пожалуйста, что и где поменять?
Добрый день! Редактировать конфиги необходимо под рутом. Как вариант: sudo nano /etc/fail2ban/jail.conf или после входа в консоли под рутом : sudo su -
Удалить