Единственный способ защититься от подбора паролей по 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