Установка и настройка denyhosts

 

1. Устанавливаем denyhosts

2. Заносим собственный IP адрес в «белый список»

3. Настройка denyhosts с помощью /etc/denyhosts.conf

4. Перезапустите службу denyhosts и добавление в автозагрузку

5. Удалить заблокированный IP-адрес из DenyHosts

 

Denyhosts - это скрипт для защиты ssh от взлома брутфорсом. Он анализирует число неудачных попыток коннекта к серверу и после определённого их количества блокирует ip с которого пытаются приконектится. Блокирует путём добавления ip в /etc/hosts.deny и добавления правила для iptables.

 

1. Устанавливаем denyhosts

 

$ sudo apt-get install denyhosts

 

или

 

$ sudo apt install denyhosts

 

Если вы видите такую ошибку

------------------------------------------

apt-get install denyhosts

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package denyhosts

------------------------------------------

не спешите расстраиваться, все решаемо.

 

Скачиваем установочный пакет

 

$ cd /tmp/ && wget http://downloads.sourceforge.net/project/denyhost/denyhost-3.0/denyhosts-3.0.tar.gz

 

Распаковываем и устанавливаем

 

$ tar xzf denyhosts*.tar.gz

$ cd DenyHosts*

$ sudo python setup.py install

 

Для автозапуска копируем демона в каталог /etc/init.d/

 

$ sudo cp /usr/local/bin/daemon-control-dist /etc/init.d/denyhosts

 

Дальше нужно отредактировать sudo vi /etc/init.d/denyhosts

------------------------------------------

DENYHOSTS_BIN = “/usr/local/bin/denyhosts.py”

DENYHOSTS_LOCK = “/run/denyhosts.pid”

DENYHOSTS_CFG = “/etc/denyhosts.conf”

PYTHON_BIN = “/usr/bin/env python”

------------------------------------------

 

2. Заносим собственный IP адрес в «белый список»

 

Белых списка два. И в оба нужно занести нужные адреса.

 

    2.1 Отредактируйте /etc/hosts.allow файл, и добавьте IP-адрес вашего клиента. Это гарантирует то, что вы случайно не будете заблокированы:

 

$ sudo nano /etc/hosts.allow

 

Синтаксис выглядит следующим образом:

 

sshd: whitelist-ip1, whitelist-ip2, ...., whitelist-ipN

 

Например, занесите в «белый список» 202.54.1.1 и 203.54.2.3, для этого введите:

 

sshd: 202.54.1.1 , 203.54.2.3

 

Или просто

 

sshd: 172.145.33.45

 

Сохраните изменения и выйдете из файла.

 

    2.2 Не все знают или не видят или не особо смотрят логи, но есть ещё один файл куда нужно прописать исключения. Это файл Allowed-warned-hosts.

 

Переходим в нужную директорию

 

$ cd /var/lib/denyhosts

 

Смотрим есть ли там нужный файл Allowed-warned-hosts

 

$ ls -la

 

Если файла allowed-warned-hosts нет, то создаем его командой

 

$ touch allowed-warned-hosts

 

Открываем в редакторе и заносим туда свои IP, но уже без названия службы. Просто ip-адрес или диапазон адресов.

 

$ nano allowed-warned-hosts

 

И добавьте каждый IP-адрес в отдельной строке.

 

# We mustn't block localhost

127.0.0.1

172.16.25.125

172.16.25.126

172.16.25.127

 

Сохраняем изменения, используя комбинацию клавиш Ctrl + O и выходим из редактора, используя Ctrl + X.

 

3. Настройка denyhosts с помощью /etc/denyhosts.conf

 

В системе на базе Debian или Ubuntu Linux режим работы по умолчанию – это режим демона (daemon), а файл конфигурации – /etc/denyhosts.conf:

 

$ sudo nano /etc/denyhosts.conf

 

Обязательно убедитесь, что SECURE_LOG  настроен следующим образом:

 

SECURE_LOG = /var/log/auth.log

 

HOSTS_DENY  необходимо настроить следующим образом:

 

HOSTS_DENY = /etc/hosts.deny            #Список забаненых ip

 

BLOCK_SERVICE  = sshd              #Сервисы с которыми работает denyhosts

 

Установить пороговый лимит отказа для попыток входа в систему:

 

PURGE_DENY =             # Время, по истечении которого забаненные IP удаляются. Смысла нет.

DENY_THRESHOLD_INVALID = 5        #Число неудачных попыток входа c несуществующим логином до бана

DENY_THRESHOLD_VALID = 10          #Число попыток входа с существующим логином, но неверным паролем до бана

DENY_THRESHOLD_ROOT = 1            #Число неудачных попыток входа до бана для пользователя root

DENY_THRESHOLD_RESTRICTED = 1

 

IPTABLES = /sbin/iptables    #Блокировать входящие подключения с использованием IPTABLES

DAEMON_SLEEP = 20s           #Период активации демона

 

Если нам нужно чтобы denyhosts высылал вам отчеты о проделанной работе, то нужно подправить следующие пункты. Комментировать я думаю смысла нет.

 

ADMIN_EMAIL = admin@bestmail.ru

SMTP_HOST = localhost

SMTP_PORT = 25

SMTP_FROM = DenyHosts <bestmail@bestmail.ru>

SMTP_SUBJECT = DenyHosts Daily Report</h6>

 

Если всё устраивает, то сохраняем изменения, используя комбинацию клавиш Ctrl + O и выходим из редактора, используя Ctrl + X.

 

4. Перезапустите службу denyhosts и добавление в автозагрузку

 

Введите следующую команду на Ubuntu Linux 16.04 LTS или более новой версии:

 

$ sudo systemctl restart denyhosts.service

 

Для более старых версий Ubuntu/Debian Linux или систем не на основе systemd, введите:

 

$ sudo /etc/init.d/denyhosts restart

 

Включение службы denyhosts на Ubuntu Linux 16.04 LTS во время загрузки

 

$ sudo systemctl enable denyhosts.service

 

Примеры возможных выводов данных:

 

Synchronizing state of denyhosts.service with SysV init with /lib/systemd/systemd-sysv-install...

Executing /lib/systemd/systemd-sysv-install enable denyhosts

 

5. Удалить заблокированный IP-адрес из DenyHosts

 

Если вдруг так случилось что важный ip был заблокирован, то для начала нужно остановить службу denyhosts

 

$ sudo /etc/init.d/denyhosts stop

 

Чтобы удалить заблокированный IP-адрес полностью, нам нужно отредактировать следующие файлы, удалив оттуда IP-адрес.

 

# nano /etc/hosts.deny

# nano /var/lib/denyhosts/hosts

# nano /var/lib/denyhosts/hosts-restricted

# nano /var/lib/denyhosts/hosts-root

# nano /var/lib/denyhosts/hosts-valid

# nano /var/lib/denyhosts/users-hosts

 

Заблокированный адрес будет добавлен во все файлы в каталоге /var/lib/denyhosts/, но и не стоит забывать о /etc/hosts.deny. И если с фалом /etc/denyhost все просто, то с папкой /var/lib/denyhosts/ будет проблематичней.

 

Один из лучших способов найти в какой файл внесен заблокированный адрес это команда grep. Т.е. чтобы найти заблокированный адрес 8.8.8.8 выполните команду:

 

$ cd /var/lib/denyhosts

$ grep 8.8.8.8 *

 

Команда покажет в каких файлах есть этот адрес. Удаляем и запускаем denyhosts.

 

$ sudo /etc/init.d/denyhosts start

 

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

 

Вы можете сделать это в 4 командах. python script автоматизирует процесс удаления:

 

$ sudo /etc/init.d/denyhosts stop

$ git clone https://github.com/rsprabery/unblock.git

$ sudo python unblock/unblock.py <IP_ADDRESS>

$ sudo /etc/init.d/denyhosts start

 

Теперь расскажу что да как. Сначала останавливаем denyhosts. Скачиваем скрипт который найдет и удалит заблокированный адрес. Запускаем скрипт заменив IP_ADDRESS на нужный ip. Запускаем denyhosts.

 

Скрипт работает на всех версиях Ubuntu. Работает быстро, четко, без редактирования каких либо файлов.