
Установка 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» завершена.
Автор брешет, либо не пробовал то о чём пишет.
В официально поставляемых репозиториях 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]
Просьба не обвинять, если не знаете и не уверены!