Как установить DenyHosts на Centos 7

DenyHosts — это программное обеспечение с открытым исходным кодом, разработанное на языке Python Филом Шварцем.

Он в основном предназначен для мониторинга и анализа журналов сервера SSH на недопустимые попытки входа в систему, атак на основе словаря и принудительных атак путем блокировки исходящих IP-адресов путем добавления их в файл /etc/hosts.deny на сервере и, тем самым, предотвращения IP-адресов от дальнейших попыток входа в систему.

Благодаря своей простоте и возможности вручную настраивать правила, он широко используется в качестве альтернативы Fail2ban, который немного сложнее в использовании и настройке.

В этом уроке я покажу вам, как устанавливать и настраивать DenyHosts на вашем сервере CentOS 7 различными способами.

Предпосылки

Прежде чем приступить к установке, мы должны убедиться, что наша система отвечает всем требованиям программного обеспечения для компиляции и установки приложения.

А также, он должен быть настроен со статическим IP-адресом.

Программное обеспечение DenyHosts зависит от модуля «ipaddr» Python.

На первом этапе обновите системные репозитории и программные пакеты, включая модуль python, выполнив следующие команды:

 # yum update
# yum install python-ipaddr -y 

1. Установка DenyHosts из репозитория Epel

Нам нужно установить этот пакет с помощью репозитория Epel, для его установки используйте следующую команду:

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
# yum install denyhosts -y 

Настройка Denyhosts

После установки Denyhosts вам необходимо добавить свой IP-адрес в список разрешенных IP-адресов, чтобы убедиться, что ваш собственный IP-адрес включен в белый список, поэтому вы никогда не получите блокировку.

 # cat /etc/hosts.allow
#
# hosts.allow This file contains access rules which are used to
# allow or deny connections to network services that
# either use the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 37.217.142.41
sshd: 37.217.142.42
sshd: 37.217.142.43
sshd: 37.217.142.44 

Затем вам необходимо занести в черный список все требуемые IP-адреса, которые вы хотите заблокировать.

Мы можем убедиться, что наш IP-адрес также не входит в черный список.

 # cat /etc/hosts.deny
#
# hosts.deny This file contains access rules which are used to
# deny connections to network services that either use
# the tcp_wrappers library or that have been
# started through a tcp_wrappers-enabled xinetd.
#
# The rules in this file can also be set up in
# /etc/hosts.allow with a 'deny' option instead.
#
# See 'man 5 hosts_options' and 'man 5 hosts_access'
# for information on rule syntax.
# See 'man tcpd' for information on tcp_wrappers
#
sshd: 78.189.206.37
sshd: 121.14.27.58
sshd: 1.246.228.161
sshd: 103.89.89.47
sshd: 116.29.148.2
# DenyHosts: Tue Jan 9 10:16:15 2018 | sshd: 222.186.174.81
sshd: 222.186.174.81
# DenyHosts: Tue Jan 9 10:40:46 2018 | sshd: 217.61.20.181
sshd: 217.61.20.181
# DenyHosts: Tue Jan 9 13:15:53 2018 | sshd: 112.86.117.182
sshd: 112.86.117.182 

Включение службы DenyHosts

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

# systemctl enable denyhosts
# systemctl start denyhosts

# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (running) since Wed 2018-01-10 06:47:54 UTC; 3h 57min ago
Docs: man:systemd-sysv-generator(8)
Process: 30660 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)
CGroup: /system.slice/denyhosts.service
└─30665 python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf

Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Starting SYSV: Activates/Deactivates the...
Jan 10 06:47:54 li226-12.members.linode.com denyhosts[30660]: starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf
Jan 10 06:47:54 li226-12.members.linode.com systemd[1]: Started SYSV: Activates/Deactivates the. 

Настройка оповещений по электронной почте в DenyHosts

Мы можем установить оповещения по электронной почте о подозрительных входах и ограниченных узлах, внося изменения в файл конфигурации DenyHosts.

Вы можете добавить свой адрес электронной почты в переменную ADMIN_EMAIL в файле конфигурации /etc/denyhosts.conf, чтобы получать оповещения по электронной почте о подозрительных входах.

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

Здесь я добавил свой адрес электронной почты cryptoparty@itsecforu.ru чтобы предупредить себя о любых атаках.

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

Удаление запрещенных IP-адресов

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

Вы можете использовать следующую команду для просмотра журналов реального времени:

 # tail -f /var/log/secure
Jan 10 10:56:43 li226-12 sshd[2096]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:08 li226-12 sshd[2102]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:57:43 li226-12 sshd[2113]: refused connect from 222.186.43.6 (222.186.43.6)
Jan 10 10:59:17 li226-12 sshd[2133]: refused connect from 222.186.43.6 (222.186.43.6)

Очевидно, что наш сервер пытается отказаться от соединения с IP 222.186.43.6 из этих журналов.

Давайте посмотрим, как удалить этот IP-адрес из черного списка.

Нам нужно проверить эту запись IP-файла в файле /etc/hosts.deny и все эти пользовательские файлы deny, созданные с помощью denyhosts.

Мы можем удалить запись 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 

Я мог заметить эту запись в файле hosts.deny.

 # DenyHosts: Wed Jan 10 03:40:07 2018 | sshd: 222.186.43.6 sshd: 222.186.43.6 

Я удалил эту запись и перезапустил службу denyhosts, чтобы изменения вступили в силу.

2. Установка из репозитория Github

Мы можем либо загрузить репозиторий Github, либо загрузить последний дистрибутив DenyHosts и скомпилировать его из этих исходных пакетов.

Давайте посмотрим, как  установить denyhosts из Github Repo.

 # yum install git
# git clone https://github.com/denyhosts/denyhosts
Cloning into 'denyhosts'...
remote: Counting objects: 1353, done.
remote: Total 1353 (delta 0), reused 0 (delta 0), pack-reused 1353
Receiving objects: 100% (1353/1353), 263.93 KiB | 0 bytes/s, done.
Resolving deltas: 100% (899/899), done. 

После загрузки файлов из Github нам нужно установить его.

Вы можете установить его, выполнив эту команду из папки denyhosts, как показано ниже:

 #cd denyhosts
#python setup.py install 

Это действие установит модули DenyHosts в каталог сайтов-пакетов python.

Аналогично, из исходного дистрибутива вы можете загрузить последний Denyhosts и установить его, как описано выше.

Остальные этапы настройки одинаковы в обоих случаях.

Настройка Denyhosts

После установки вы можете скопировать образец файла конфигурации denyhosts.conf, созданный в папке установки, которая содержит большинство возможных настроек в /etc.

Файл конфигурации содержит различные настройки вместе с их описанием, которые должны помочь вам быстро настроить DenyHosts.

После того как вы отредактировали файл конфигурации, сохраните его.

 # cp -rp denyhosts.conf /etc/ 

Затем нам нужно скопировать пример скрипта daemon-control.dist  для управления демоном и изменить рекомендуемый раздел в соответствии с вашим расположением файла конфигурации.

  # cp daemon-control-dist daemon-control
# chmod 700 daemon-control 

Теперь мы можем отредактировать файл управления демонами.

Вам нужно только отредактировать этот раздел в верхней части экрана, как показано ниже. 


###############################################

###############################################
#### Edit these to suit your configuration ####
###############################################

DENYHOSTS_BIN = "/usr/bin/denyhosts.py"
DENYHOSTS_LOCK = "/var/run/denyhosts.pid"
DENYHOSTS_CFG = "/etc/denyhosts.conf"

PYTHON_BIN = "/usr/bin/env python"
#########################################

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

Но я рекомендую вам настроить эти параметры в соответствии с вашей конкретной системой.

После того как вы отредактировали файлы управления конфигурацией и демонами, обязательно ограничьте выполнение сценария управления демонами root.

Запуск DenyHosts вручную

После настройки Denyhosts для запуска в качестве демона с помощью нашего скрипта управления демонами вы можете запустить его вручную, просто выполнив эту команду из установочной папки:

 # ./daemon-control start
starting DenyHosts: /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/etc/denyhosts.conf 

Вы можете обратиться к журналу демона (/var/log/denyhosts), чтобы убедиться, что DenyHosts работает успешно.

Кроме того, вы можете запустить DenyHosts вручную, чтобы запустить его из командной строки с помощью Python, точно так же укажите путь к конфигам.

 # python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
# ps aux | grep denyhosts
root 25650 0.0 1.0 216116 10740 ? S 09:44 0:00 python /usr/bin/denyhosts.py --config /etc/denyhosts.conf --daemon
root 25656 0.0 0.2 112668 2200 pts/0 S+ 09:44 0:00 grep --color=auto denyhosts 

Вышеупомянутая команда запускает DenyHosts  в фоновом режиме.

Запуск Denyhosts автоматически

Мы можем установить cronjobs для запуска Denyhosts автоматически при старте системы.

Или мы можем создать символическую ссылку из /etc/init.d, как показано ниже:

 # cd /etc/init.d
# ln -s /root/denyhosts/daemon-control denyhosts
# ll | grep denyhosts
lrwxrwxrwx 1 root root 30 Jan 10 04:48 denyhosts -> /root/denyhosts/daemon-control 

Теперь мы можем управлять этим сервисом из обычной команды systemctl.

# systemctl enable denyhosts
denyhosts.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig denyhosts on

# systemctl start denyhosts
# systemctl status denyhosts
● denyhosts.service - SYSV: Activates/Deactivates the
Loaded: loaded (/etc/rc.d/init.d/denyhosts; bad; vendor preset: disabled)
Active: active (exited) since Thu 2018-01-11 09:57:53 UTC; 2s ago
Docs: man:systemd-sysv-generator(8)
Process: 25876 ExecStart=/etc/rc.d/init.d/denyhosts start (code=exited, status=0/SUCCESS)

Заключение

В этой статье мы обсудили, как установить и настроить DenyHosts на нашем сервере CentOS 7.

Этот инструмент можно легко настроить, а также поддерживать уведомления по электронной почте, SMTP и syslog.

Это приложение является отличным решением для защиты атак SSH-сервера, таких как атаки на основе словарей и атаки брутфорс.

 

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

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

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