Posterous theme by Cory Watilo

Filed under: featured

Protecting SSH

Я пытался использовать fail2ban под Linux для отстрела ботов. Но через некоторое время он у меня отказался работать. Почему - не знаю, причины я особо не искал. И вчера заменил его на другое решение - sshguard. Первое впечатление - не слишком хорошее, потому что надо было все настраивать руками. Но немного разобравшись, быстро поставил его на все свои линукс-сервера. Итак, что потребуется: Ubuntu вместе с UFW, syslog-ng. [cc lang="bash"] apt-get install sshguard [/cc] Примечание: на данный момент у меня версия 1.0 которая в пакетах отказалась нормально парсить логи. Потому берем исходники версии 1.1, ./configure --with-firewall=iptables и после сборки стопаем syslog-ng, заменяем /usr/sbin/sshguard новым бинарником (он будет раза в 4 больше) и запускаем syslog-ng вновь. и в /etc/syslog-ng/syslog-ng.conf дописать в конец примерно следующее: [cc lang=text] destination sshguardproc { 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); }; [/cc] Это будет передавать все сообщения об аутентификации sshguard'у. Он попытается их блокировать путем создания правил iptables. Однако имея ufw пришлось несколько адаптировать указанный в документации метод. /etc/ufw/before.rules, сразу же под # End required lines добавил [cc lang="bash"] :sshguard - [0:0] [/cc] и далее в списке правил [cc lang="bash"] ... -A ufw-before-input -p tcp --dport 22 -j sshguard #ufw-not-local ... [/cc] Так все на порт 22 будет проходить через эту цепочку. И в ней же sshguard будет отстреливать вредителей. Аналогичную процедуру делаем и для before6.rules с учетом именования цепочек там. Для тех кто еще не запускал ufw следует прописать политики по умолчанию в /etc/default/ufw и выполнить [cc lang="bash"] ufw enable ufw logging off [/cc] и после всего [cc lang="bash"] /etc/init.d/syslog-ng reload [/cc] Enjoy =)