среда, 9 мая 2012 г.

Часть 1. Fail2ban - активная защита сервера Linux Ubuntu Server 10.04 на основе информации из логов.


   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

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. Сюда можно занести свою локальную машину или компьютер, с которого будут проводится эксперименты над системой.
bantime - время в секундах, на которое будет блокироваться хост.
maxretry - максимальное число ошибочных попыток доступа к сервису, прежде чем хост будет заблокирован fail2ban.
 Секция  "ssh" описывает настройки фильтра для ssh сервера.
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
enabled - может принимать значение true или false. Включен,выключен фильтр.
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.
Ищем секцию"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 после редактирования конфигурационного файла:
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 НОМЕР

2 комментария:

  1. Здравствуйте! Всё сделал "по учебнику", но после попытки вода комманд
    /var/log/fail2ban.log
    и
    nano /etc/fail2ban/jail.conf

    Получаю следующее:
    bash: /var/log/fail2ban.log: Permission denied
    bash: /etc/fail2ban/jail.conf: Permission denied

    Подскажите, пожалуйста, что и где поменять?



    ОтветитьУдалить
    Ответы
    1. Добрый день! Редактировать конфиги необходимо под рутом. Как вариант: sudo nano /etc/fail2ban/jail.conf или после входа в консоли под рутом : sudo su -

      Удалить