Единственный способ защититься от подбора паролей по SSH – это блокировать такие подключения. Рассмотрим программу для защиты сервера от брутфорса паролей – Fail2Ban.
Fail2Ban – инструмент позволяющий защитить сервер от брутфорса таких сервисов как SSH, FTP, Apache и т.д. ОН производит анализ логов программ и в случае превышения лимита на неудачные логины банит IP адрес злоумышленника при помощи правил iptables, при «бане» администратору высылается оповещение.
Официальный сайт Fail2Ban: http://www.fail2ban.org/
Рассматривать будем установку Fail2Ban на сервер с ОС Centos и настраивать защиту будем только для ssh и ftp. В стандартном репозитории есть только старая версия, поэтому лучше всего сразу подключить альтернативный RPMForge.
Установка:
yum install fail2ban
Настройка:
Открываем файл /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
Естесвенно статью где то скомуниздил, так как сам я полный ламер в юниксе, но себе поставил и все работает 🙂
Да и проверка того как ломились к нам на сервак
sudo cat /var/log/secure* | grep ‘Failed password’ | grep sshd | awk ‘{print $1,$2}’ | sort -k 1,1M -k 2n | uniq -c
вы не могли бы пример показать как показать как сделать чтобы отчет приходил на почту например на эту xxx@mail.ru