DenyHost на страже сервера

15 January 2011 #vps#security

В статье Безопасность VPS-сервера я уже описывал те мероприятия, что необходимо совершить для обеспечения безопасной работы на удаленном сервере.

Сам я к этому вопросу подошел коренным образом, закрыл все порты, кроме 22 и 80. Сервер sshd принимает подключение только от одного пользователя и при этом осуществляет аутентификацию только по ключу, вход по паролю запрещен. Не зная имени пользователя и не имея на руках ключа зайти на сервер просто не возможно. А для блокирования особо любопытных использовал fail2ban, отправляя их на определенное время в ban.

Однако вчера обратил внимание на то, что с одного из ip-адресов продолжаются попытки входа на сервер под разными именами. Выглядело это примерно таким образом:

Jan 14 22:48:44 juev sshd[19013]: Invalid user vanessa from 210.83.70.250
Jan 14 22:48:46 juev sshd[19015]: Invalid user will from 210.83.70.250
Jan 14 22:48:49 juev sshd[19017]: Invalid user willie from 210.83.70.250
Jan 14 22:48:52 juev sshd[19019]: Invalid user win from 210.83.70.250
Jan 14 22:48:55 juev sshd[19021]: Invalid user samba from 210.83.70.250
Jan 14 22:48:58 juev sshd[19023]: Invalid user samba from 210.83.70.250
Jan 14 22:49:01 juev sshd[19025]: User sshd from 210.83.70.250 not allowed because not listed in AllowUsers
Jan 14 22:49:04 juev sshd[19027]: User sshd from 210.83.70.250 not allowed because not listed in AllowUsers
Jan 14 22:49:10 juev sshd[19030]: Invalid user adam from 210.83.70.250
Jan 14 22:49:12 juev sshd[19033]: Invalid user anton from 210.83.70.250
Jan 14 22:49:15 juev sshd[19035]: Invalid user gary from 210.83.70.250
Jan 14 22:49:18 juev sshd[19037]: Invalid user nemesis from 210.83.70.250
Jan 14 22:49:21 juev sshd[19039]: Invalid user shadow from 210.83.70.250
Jan 14 22:49:23 juev sshd[19041]: Invalid user shadow from 210.83.70.250
Jan 14 22:49:26 juev sshd[19043]: Invalid user cisco from 210.83.70.250

Для безопасности это не представляет никакой угрозы, так как я уже говорил о том, что вход по паролю запрещен. Но все равно не приятно. Я так и не понял, почему fail2ban перестал блокировать.

Проблема решилась очень быстро после занесения следующей строки в файл /etc/hosts.deny:

sshd: 210.83.70.250

Для автоматизации данного процесса установил программу denyhosts:

$ sudo apt-get install denyhosts

Программа представляет собой python-скрипт, как и fail2ban, однако потребляет гораздо меньше памяти. В результате анализа файла /var/log/auth.log denyhosts находит адреса любопытствующих и добавляет их в конец файла /etc/hosts.deny.

Denyhosts имеет массу настроек в файле /etc/denyhosts.conf. Уже после установки все готово к работе. Однако стоит обратить внимание на следующие параметры программы:

PURGE_DENY = 10m

По умолчанию PURGE_DENY ничему не присвоен, и соответственно, все занесенные ip-адреса остаются в файле /etc/hosts.deny навсегда. Установив данный параметр в 10m, мы указываем программе сбрасывать список ip-адресов каждые 10 минут.

BLOCK_SERVICE  = sshd

Параметр BLOCK_SERVICE по умолчанию имеет значение sshd, что говорит о том, что программа будет отслеживать попытки входа только по ssh-протоколу. Если же нужно отслеживать и другие типы соединений, достаточно значение данного параметра изменить на ALL:

BLOCK_SERVICE = ALL

Если собираетесь получать по электронной почте уведомления о заблокированных ip-адресах, достаточно изменить параметр ADMIN_EMAIL, установив ему значение вашей электронной почты:

ADMIN_EMAIL = admin@mail.com

После изменения настроек программы перезапускаем ее:

$ sudo service denyhosts restart

И периодически получаем на свой электронный адрес список заблокированных ip-адресов. Сегодня утром получил очередное письмо:

Added the following hosts to /etc/hosts.deny:

190.141.25.97
186.14.125.33
210.83.70.250
134.93.165.0
173.0.61.113
212.156.4.6
188.231.0.81
67.212.68.81
124.217.229.162
219.143.125.205

Желающих пробиться на сервер оказалось не так много, но теперь и они должны понять, что делать им тут нечего.