Установка DenyHosts

Установка DenyHosts

Что такое DenyHosts?

DenyHosts – это утилита для безопасности вашего сервера, которая написана на python. Данная  утилита читает log  доступа к серверу (access log ) с целью предотвратить атаки методом подбора ключа. DenyHosts блокирует IP-адреса, которые пытаются перебирать пароли  и после определенного количества неудачных попыток — IP получает бан.

В своей статье «Установка DenyHosts» я расскажу как можно установить, настроить и использовать DenyHosts в Unix/Linux. На готовом примере, я покажу как это делается.

Установка DenyHosts

Установка DenyHosts на CentOS/RedHat/Fedora:

Для установки DenyHosts на CentOS или любом другом дистрибутиве основанном на RHEL, нужно добавить репозиторий EPEL.

После чего, выполняем команду для установки:

# yum install denyhosts

Как только утилита загрузится на сервер, то DenyHosts выполнит установку и произведет конфигурирование.

Установка DenyHosts на Debian/Ubuntu:

Сперва, нужно обновить ОС:

# apt-get update -y && apt-get upgrade -y

После обновления, у вас будет установлены все свежие пакеты, по этому, можно установить утилиту DenyHosts с помощью команды:

# apt-get install denyhosts

Для других Unix/Linux ОС, я буду использовать исходный код данной утилиты.

Установите git! После чего, выполните:

# cd /usr/local/src && git clone https://github.com/denyhosts/denyhosts.git

Переходим в скачанную папку:

$ cd denyhosts

Запускаем скрипт для установки:

# python setup.py install

После запуска команды что выше, DenyHosts выполнит установку на сервере, но Вы должны вручную настроить данный инструмент.

Скопируйте скрипт для запуска программы в папку /etc/init.d/:

# cp /usr/local/src/denyhosts/daemon-control-dist /etc/init.d/denyhosts

Нужно подправить пути:

# vi /etc/init.d/denyhosts

И приводим к такому виду (у вас может отличатся):

[...]
DENYHOSTS_BIN   = "/usr/bin/denyhosts.py"
[...]

Выставляем права:

# chown root /etc/init.d/denyhosts && chmod 700 /etc/init.d/denyhosts

Если у вас установлена утилита chkconfig, то вы можете использовать ее и добавить DenyHosts в автозагрузку ОС:

# chkconfig --add denyhosts

Если у вас нет chkconfig (или аналогичный утилиты)  на вашем сервере вы можете вручную создавать символические ссылки в /etc/rc2.d, /etc/rc3.d, /etc/rc5.d.

Настройка DenyHosts производится в файле /etc/denyhosts.conf, скопируем ее:

# cp /usr/local/src/denyhosts/denyhosts.conf /etc

Перезапускаем (запускаем) DenyHosts:

# /etc/init.d/denyhosts restart

Может возникнуть ошибка:

Can't read: /var/log/auth.log
[Errno 2] No such file or directory: '/var/log/auth.log'

Решением послужило:

# touch /var/log/auth.log

Создание белых списков

Как только вы установили DenyHosts, убедитесь, что Вы внесли свой IP-шник или подсеть в белый список. Если вы пропустите этот пункт, то есть вероятность того что вы заблокируете себя на своем собственном сервере.

И так, открываем файл для добавления списка разрешенных хостов для сервера:

# vim /etc/hosts.allow

В этом файле, пропишите все IP адреса с которых вы хотите подключаться к серверу и они не будет блокироваться на сервере. Каждый ИП нужно прописать в отдельную строку, например:

# If you’re going to protect the portmapper use the name “rpcbind” for the
# daemon name. See rpcbind(8) and rpc.mountd(8) for further information.
#
sshd: 66.66.66.66

# localhost
ALL : 127.0.0.1 : allow

#Backup network
ALL : 113.113.*.* : allow
sshd : 12.12.12.* : allow
All : 192.168.*.* : allow

# and for everything else, DENY DO NOT ADD ANYTHING BELOW THIS
sshd : ALL : deny

Создание черных списков

Теперь, после того как я создал белый список, я остальных буду блокировать, для этого служит файл hosts.deny. Я его открою и внесу изменения:

# vim /etc/hosts.deny

И прописываем строку:

sshd: ALL **

После добавления всех изменений нужно выполнить перезапуск DenyHosts для активации созданных правил на сервере:

# /etc/init.d/denyhosts restart

Настройка DenyHosts

После выполнения установки DenyHosts, его можно уже использовать. Тем не менее, можно  выполнить улучшения и настроить его под себя.  Для этого, открываем конфиг и внесем изменения:

# vim /etc/denyhosts.conf

В данном файле, имеется довольно много настроек, но об основных я расскажу в более подробной форме.

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

BLOCK_SERVICE
В этот параметр стоит добавить «all», т.к при атаке с какого-то адреса по ssh, может начинаться и другие атаки с этого ИП.

DENY_THRESHOLD_INVALID
В этой переменной задаем количество попыток при вводе пароля к несуществующему юзеру. Я выставляю данный параметр в «5».

DENY_THRESHOLD_VALID
В этой переменной задаем количество попыток при вводе пароля к существующему юзеру. Я выставляю данный параметр в «3».

DENY_THRESHOLD_ROOT
В этой переменной задаем количество попыток при вводе пароля к юзеру root. Я выставляю данный параметр в «1». Но если вы запретили подключение для пользователя root в самой настройке ssh сервера, то эта опция не имеет никакого значения.

SYNC_SERVER
Я расскоментирую опцию SYNC_SERVER для обмена со списком «плохих» хостов (хостов, с которых была замечена атака) с главным сервером утилиты.

SYNC_INTERVAL
Опция задает интервал времени для синхронизации. Я установлю данный параметр в «1h».

SYNC_UPLOAD
Опция говорит, можно ли загрузить на главный сервер список «плохих» хостов. Рекомендую выставить в «yes», для того чтобы другие юзеры могли от них защититься.

SYNC_DOWNLOAD
Опция говорит, можно ли загрузить с сервера список «плохих» хостов. По дефолту выставлено в «yes». Рекомендуется ничего не менять для этого значения.

Это основные параметры которые стоит изменить, а остальные по усмотрению и по наблюдению за сервером и атаками на него.

Проверка SSH логов на попытки атак

Чтобы проверить DenyHosts SSH логи и узнать, сколько злоумышленников или хакеров попыталось получить доступ к серверу используйте следующую команду:

# tail -f /var/log/secure

И если вы хотите удалить забаненные IP-адреса из DenyHosts, используйте следующую команду чтобы остановить службу denyhosts:

# /etc/init.d/denyhosts stop

После чего, используйте следующие команды, чтобы удалить забаненные IP-адреса:

# vim /etc/hosts.deny
# vim /var/lib/denyhosts/hosts
# vim /var/lib/denyhosts/hosts-restricted
# vim /var/lib/denyhosts/hosts-root
# vim /var/lib/denyhosts/hosts-valid
# vim /var/lib/denyhosts/users-hosts

После удаления запрещенного IP-адреса, необходимо перезапустить denyhost с помощью следующей команды:

# /etc/init.d/denyhosts start

Если вы хотите, чтобы найти конкретные IP-адреса, самый простой способ — использованиt команды GREP как в следующем примере, заменив YOUR_IP_for_SEARCH с выбранным адресу:

# cd /var/lib/denyhosts && grep YOUR_IP_for_SEARCH *

На этом, у меня все, тема «Установка DenyHosts» завершена.

2 thoughts on “Установка DenyHosts

  1. Автор брешет, либо не пробовал то о чём пишет.

    В официально поставляемых репозиториях debian|ubuntu нет пакета denyhosts.

    • Для особо не опытных и обвинителей, показываю:

      # uname -a
      Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u2 (2015-07-17) x86_64 GNU/Linux

      Собственно, у меня установлен Debian 8. Идем дальше…..
      root@debian:~# apt-get remove denyhosts
      Reading package lists… Done
      Building dependency tree
      Reading state information… Done
      The following packages were automatically installed and are no longer required:
      aisleriot ant ant-optional argyll argyll-ref baobab browser-plugin-gnash
      Use ‘apt-get autoremove’ to remove them.
      The following packages will be REMOVED:
      denyhosts
      0 upgraded, 0 newly installed, 1 to remove and 116 not upgraded.
      After this operation, 317 kB disk space will be freed.
      Do you want to continue? [Y/n]

      Просьба не обвинять, если не знаете и не уверены!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.