Июн 032012
 


Появилась работка, администрировать несколько серверов, на них стоят такие системы debian и centos.
Заметил что кто-то не хороший человек, редиска брутит пароли к ssh.
Решил положить этому конец.
Fail2Ban — это локальный сервис, который мониторит логи на предмет попытки подбора пароля к ftp, http-сервисам, ssh. Если попытки подбора находятся, fail2ban блокирует ip источника. Сервис очень гибко в настройке — есть возможность блокировать с помощью iptables или /etc/hosts.allow (deny), есть функция оповещения на email, log, сбрасывать блокировку через заданное время и прочее.
Fail2ban анализирует логи и на основе регулярных выражений применяет правила iptables для защиты вашей машины
В centos пришлось мне качать с офф. сайта сырцовый пакет. 0.8.6., в debian`e не составила проблем установить пакет fail2ban.
Для ddosa он тоже хорош, но если dddos больше 10тыс хостов. То fail2ban вам уже не поможет.
Приступим.

cd /tmp/

качаем.

wget https://github.com/fail2ban/fail2ban/tarball/0.8.6

теперь распакуем его и запустим установку.

# tar -jxf fail2ban-0.8.6.tar.bz2

Перейдем в директорию распаковавшегося архива.

# cd fail2ban-0.8.6

Запустим установку.

# python setup.py install

Теперь скопируем
# cp /usr/src/fail2ban-0.8.4/files/redhat-initd /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban
Теперь настроем его.

# cat /etc/fail2ban/jail.conf | grep -v "#"
[DEFAULT]

ignoreip = 127.0.0.1/8 192.168.1.0/24
bantime  = 1200
findtime  = 600
maxretry = 2
backend = auto

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=mail@likeunix.ru, sender=fail2ban]
logpath  = /var/log/secure
maxretry = 2

[vsftpd]

enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
maxretry = 3

Настрйока самого fail2ban

# cat /etc/fail2ban/fail2ban.conf | grep -v "#"
[Definition]

loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock

теперь по подробнее о настройке.
ignoreip — указываем localhost и свою под сеть, мы же не хотим случайно не заблокировать себя
bantime — время запрета (в секундах) на повторные подключения
findtime — время (в секундах) за которое просматривается журнал на наличие maxretry записей о попытках для блокировки нападающего
maxretry — максимальное кол-во неудачных попыток за время «findtime», после которого применяется действие из раздела «action
backend — автоматический выбор механизма сканирования лог-файлов
dest – кому слать оповещения о «забаненных»
sender – «отправитель» письма
enabled — разрешен
port — можно указывать числовое значение (в данном случае — 22)
filter — название фильтра (см. директорию /etc/fail2ban/filter.d)
logpath — Указываем лог-файл в фильтр.
#
loglevel — уровень детализации логов (1-4)
logtarget — /var/log/fail2ban.log # лог-файл
socket — /var/run/fail2ban/fail2ban.sock # сокет демона

Осталось только запустить его.

# /etc/init.d/fail2ban start

Теперь добавим его в автозагрузку.

# chkconfig fail2ban on

Проверим правильно мы все сделали.

# ps -ef | grep fail2ban
# tail -f /var/log/fail2ban.log
# iptables --list | grep fail2ban

Если по ошибки был за банен не тот IP то можно сбросить все правила.

# iptables –F

Добавлю в Debiane почему то он с начало не слал ничего на почту, то есть не оповещал меня кого забанил.
Оказалось в стандартном конфиге проблема.
Нужно изменить это:

##action = %(action_)s

На это:

action = %(action_mw)s

И все теперь все присылается.

Так же хочу отметить что, для правильно построения системы подобные атаки не представляют высокой опасности, они создают достаточно высокий плохой трафик а так же повышают нагрузку на сервер. Таким образом, приведенные выше примеры более чем оправданны.

Есть также и другие способы обезопаситься от флуда. к примеру настройка iptables
так уже есть и готовое решение наподобие fail2nab называется он sshit.

 Leave a Reply

(required)

(required)

37 Запросов к базе. 0,359 Генерации страницы, 36MB Использование памяти.
Вы зашли с IP: 54.198.210.67