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

В статье <a href="/2010/10/09/bezopasnost-vps-servera/">Безопасность VPS-сервера</a> я уже описывал те мероприятия, что необходимо совершить для обеспечения безопасной работы на удаленном сервере.

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

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

```text
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
```

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

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

```conf
sshd: 210.83.70.250
```

Для автоматизации данного процесса установил программу <a href="http://denyhosts.sourceforge.net/" rel="nofollow">denyhosts</a>:

```shell
$ sudo apt-get install denyhosts
```

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

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

```text
PURGE_DENY = 10m
```

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

```text
BLOCK_SERVICE  = sshd
```

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

```text
BLOCK_SERVICE = ALL
```

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

```text
ADMIN_EMAIL = admin@mail.com
```

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

```shell
$ sudo service denyhosts restart
```

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

```text
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
```

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

