Я пытался использовать fail2ban под Linux для отстрела ботов. Но через некоторое время он у меня отказался работать. Почему – не знаю, причины я особо не искал. И вчера заменил его на другое решение – sshguard.
Первое впечатление – не слишком хорошее, потому что надо было все настраивать руками. Но немного разобравшись, быстро поставил его на все свои линукс-сервера.
Итак, что потребуется: Ubuntu вместе с UFW, syslog-ng.
Примечание: на данный момент у меня версия 1.0 которая в пакетах отказалась нормально парсить логи. Потому берем исходники версии 1.1, ./configure –with-firewall=iptables и после сборки стопаем syslog-ng, заменяем /usr/sbin/sshguard новым бинарником (он будет раза в 4 больше) и запускаем syslog-ng вновь.
и в /etc/syslog-ng/syslog-ng.conf дописать в конец примерно следующее:
program("/usr/sbin/sshguard"
template("$DATE $FULLHOST $MESSAGE\n"));
};
# filter LOG_AUTH messages which also contain "ssh"
filter authssh {
facility(auth, authpriv);
};
# copy filtered logs into the sshguard process
log {
source(s_all);
filter(authssh);
destination(sshguardproc);
};
Это будет передавать все сообщения об аутентификации sshguard’у. Он попытается их блокировать путем создания правил iptables. Однако имея ufw пришлось несколько адаптировать указанный в документации метод.
/etc/ufw/before.rules, сразу же под # End required lines добавил
и далее в списке правил
-A ufw-before-input -p tcp --dport 22 -j sshguard
#ufw-not-local
...
Так все на порт 22 будет проходить через эту цепочку. И в ней же sshguard будет отстреливать вредителей.
Аналогичную процедуру делаем и для before6.rules с учетом именования цепочек там.
Для тех кто еще не запускал ufw следует прописать политики по умолчанию в /etc/default/ufw и выполнить
ufw logging off
и после всего
Enjoy =)
А я просто перенёс ссш на другой порт
Vasili Sviridov
July 11th, 2008
а ещё есть такая штука, как port-knocking
оно всяко лучше, чем просто перенос ssh на другой порт
Anton Kudris
September 12th, 2008