среда, 14 ноября 2012 г.

Защита от брутфорса паролей SSH и FTP

ygyygyugyguygy Любой владелец сервера, если заглянет в логи подключений к серверу по протоколам ssh и ftp обычно приходит в ужас от того, что там твориться. Сразу становится видно, что идёт постоянный брутфорс паролей. Причём IP адреса, с которых пытаются подключиться обычно принадлежат странам Африки, Китая и так далее, так что пытаться как то достучаться до их провайдеров даже и не стоит, да и это физически не реально, так как диапазон мест, из которых брутят, огромен.
Единственный способ защититься – это тупо блокировать такие подключения при помощи файрвола. Сразу скажу, что брутфорс обычно идёт не в ручную, а с помощью ботов, которые в свою очередь часто не понимают, что они уже попали в бан и продолжают свои попытки дальше, ещё больше увеличивая срок своего бана.Есть много способов осуществить затеянное, но мы остановимся на одном из простых инструментов для защиты сервера от брутфорса паролей – утилиты Fail2Ban.
Fail2Ban – инструмент позволяющий защитить сервер от брутфорса таких сервисов как SSH, FTP, Apache и т.д. ОН производит анализ логов программ и в случае превышения лимита на неудачные логины банит IP адрес злоумышленника при помощи правил iptables, при «бане» администратору высылается оповещение.
Официальный сайт Fail2Ban: http://www.fail2ban.org/
Рассматривать будем установку Fail2Ban на сервер с ОС Centos и настраивать защиту будем только для ssh и ftp.  В стандартном репозитории есть только старая версия, поэтому лучше всего сразу подключить альтернативный RPMForge.
Установка:
yum install fail2ban.noarch
Настройка:
Открываем файл /etc/fail2ban/jail.conf и меняем стандартные значения на необходимые нам:
Для ssh
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, sender=fail2ban]
logpath = /var/log/secure
maxretry = 5
Для ftp (на примере vsftpd, обратите внимание, есть ещё proftpd)
[vsftpd-iptables]
enabled = true
filter = vsftpd
action = iptables[name=VSFTPD, port=ftp, protocol=tcp]
sendmail-whois[name=VSFTPD, dest=root, sender=fail2ban]
logpath = /var/log/secure
maxretry = 6
bantime = 600
Описание параметров:
ignoreip – это разделенный пробелами список ip-адресов, которые не могут быть блокированы fail2ban. Сюда можно занести свою локальную машину или комьютер, с которого будут проводится эксперименты над системой
bantime – время в секунда, на которое блокируется хост.
maxretry – максимальное число ошибочных попыток доступа к сервису, прежде чем хост будет заблокирован fail2ban.
filter – имя соответствующего файла-фильтра в /etc/fail2ban/filter.d, без конечного .conf
action – имя соответствующего файла-реакции на срабатывание фильтра в /etc/fail2ban/action.d
logpath – файл логов, мониторинг которого осуществляет fail2ban, для проверки попыток атак.
enabled – может принимать значение true или false. Включено,выключено правило.
dest – кому слать оповещения о «забаненных»
sender – «отправитель» письма
maxretry – количество повторных «ошибочных» попыток логина
Запуск fail2ban:
service fail2ban start
Ну и конечно добавляем в автозагрузку:
chkconfig fail2ban on
Если вы указали в конфигах в параметрах dest правильный email, то через некоторое время на него вы начнёте получать сообщения о заблокированных товарищах. Проверить все блокировки можно введя в консоли команду
iptables -L
Если всё настроено правильно, то вы увидите, что ваш лог подключений перестал разрастаться с такой скоростью, как раньше. Проверить работу можно в принципе блокнув себя, правда при блоке в ssh вы некоторое время не попадёте на сервер, ну а вообще сбросить блокировки можно командой
iptables -F

0 коммент.:

Отправить комментарий