Если ваш /var/log/auth.log пухнет от записей вида
Mar 22 10:56:50 username sshd[24818]: Invalid user adiaz from 58.221.34.18
Mar 22 10:56:54 username sshd[24928]: Invalid user capacita from 58.221.34.18
Mar 22 10:56:58 username sshd[25065]: Invalid user manuel from 58.221.34.18
Mar 22 10:57:02 username sshd[25164]: Invalid user silvia from 58.221.34.18
Mar 22 10:57:06 username sshd[25294]: Invalid user adriano from 58.221.34.18
Mar 22 10:57:10 username sshd[25393]: Invalid user rfonseca from 58.221.34.18
то пора принимать меры :) Один из вариантов защиты от подбора паролей к ssh, это установка sshit.
sshit — это перловый скрипт, который анализирует данные от syslogd в поисках брутфорс атак. Если количество неудачных попыток достигает определённого числа, то ip атакующего блокируется с помощью фаервола ipfw, ipfw2 или pf (на выбор).
Установка
-
В ISPManager, в разделе Настройки сервера → Возможности, включаем Брэндмауэр ipfw (как установить ipfw без ISPManager).
-
Ставим из портов sshit:
# cd /usr/ports/security/sshit # make install clean
В конце установки будет дана инструкция по дальнейшей настройке:
===> CONFIGURATION NOTE: Configuration of sshit is done via main configuration file located at /usr/local/etc/sshit.conf To run the script, add a line in /etc/syslog.conf: auth.info;authpriv.info |exec /usr/local/sbin/sshit and restart syslogd. If you want to use pf as the firewall, you should add a table and the corresponding deny rule. For example, (In /etc/pf.conf) table <badhosts> persist block on $extdev from <badhosts> to any and reload the pf rules. If you want to use ipfw2 (with table) as the firewall, you should add a table and the corresponding deny rule. For example, # ipfw add deny ip from table(0) to any
-
Следуя инструкции открываем файл /etc/syslog.conf и после
auth.info;authpriv.info /var/log/auth.log
добавляем:
auth.info;authpriv.info |exec /usr/local/sbin/sshit
-
Перезапускаем syslogd:
# /etc/rc.d/syslogd restart
-
Настраиваем sshit, файл /usr/local/etc/sshit.conf:
# тип фаервола, я использую ipfw2 FIREWALL_TYPE = ipfw2 # Количество попыток, после которых ip будет заблокирован MAX_COUNT = 3 # Время в секундах, за которое считаются неудачные попытки WITHIN_TIME = 300 # Время в секундах, на которое будет заблокирован ip RESET_IP = 3600 ... остальные настройки ...
-
В конец файла /etc/rc.firewall добавляем правило для блокировки:
${fwcmd} add deny all from "table(0)" to any
-
Перезагружаем сервер
-
Проверяем список правил фаервола:
# ipfw show 00100 247446 699254233 allow ip from any to any via lo0 00200 0 0 deny ip from any to 127.0.0.0/8 00300 0 0 deny ip from 127.0.0.0/8 to any 00400 22 1436 deny ip from table(0) to any
Цифры перед последним правилом означают: 00400 — номер правила, 22 — число пакетов попавших под правило, 1436 — число байт попавших под правило. Эти цифры будут меняться по ходу работы фаервола.
Посмотреть таблицу 0, в которой хранятся адреса атакующих, можно с помощью команды
# ipfw table 0 list 141.164.71.71/32 0
Результат работы sshit в файле /var/log/auth.log:
Mar 23 00:00:19 username sshd[88589]: Invalid user admin from 141.164.71.71
Mar 23 00:00:21 username sshd[89495]: Invalid user test from 141.164.71.71
Mar 23 00:00:23 username sshd[89892]: Invalid user guest from 141.164.71.71
Mar 23 00:00:24 username sshit: BLOCKING 141.164.71.71 with ipfw2
По материалам:
— Защита ssh от брутфорс атак.
— sshit - защита от подбора паролей ssh/ftp
— Sshit - защищаем сервер от перебора паролей
Комментарии
Замечательная инструкция!!! Спасибо большое, все сделал по шагам - работает!
Смущает только при редактировании некоторых файлов сообщение file has hard-links detach before saving, что это за hard-links не подскажите?
4.4.4. Символические ссылки (еще раз об именах файлов)
Добавить комментарий