Denyhosts – это скрипт, написанный на Python для защиты SSH серверов от переборов паролей (брутфорса)

Denyhosts – это скрипт, написанный на Python для защиты SSH серверов от переборов паролей (брутфорса)
Denyhosts – это скрипт, написанный на Python для защиты SSH серверов от переборов паролей (брутфорса).Скрипт отслеживает логи системы о неудачных авторизациях.
Denyhosts работает следующим образом: он проверяет логи и добавляет в /etc/hosts.deny ip адреса, с которых наблюдается много попыток неудачного входа. Для того чтобы это работало, ssh должен быть собран с tcpwrappers (что делается по умолчанию).

Для установки denyhosts необходим репозитарий EPEL. Проверяем, есть ли EPEL  в списке репозитариев:

1 yum repolist
Как добавить репозитарий если нет, читаем тут: Репозитории Centos 6
Установка:
1 yum install denyhosts
Сохраняем конфиг по умолчанию (на случай отката обратно):
1 cp /etc/denyhosts.conf /etc/denyhosts.conf.default
Создадим файл, куда будут записываться ip-адреса забаненых:
1 touch /etc/hosts.denyssh
Редактируем доступ к серверу:
1 vi /etc/hosts.allow
Содержимое файла:
1 # разрешаем локальной сети и vpn каналу
2  sshd : 192.168.17.0/255.255.255.0 : allow
3  sshd : 192.168.222.0/255.255.255.0 : allow
4 # запретим доступ списку из файла
5  sshd : /etc/hosts.denyssh : deny
6 # остальным разрешим
7  sshd : ALL : allow
Редактируем конфиг:
1 vi /etc/denyhosts.conf
Содержимое моего конфига denyhosts.conf:
1 # — Путь до логов, куда помещается информация о соединениях
2 SECURE_LOG = /var/log/secure
3
4 # — ip — адреса забаненых
5 HOSTS_DENY = /etc/hosts.denyssh
6
7 # — Период бана (2y — два года)
8 PURGE_DENY = 2y
9
10 # —
11 #PURGE_THRESHOLD = 2
12
13 # — какие сервисы контролировать (например: ftpd)
14 BLOCK_SERVICE = sshd
15
16 # — Количество попыток входа с несуществующим логином
17 DENY_THRESHOLD_INVALID = 7
18
19 # — Количество попыток входа с неверным паролем
20 DENY_THRESHOLD_VALID = 7
21
22 # — Количество попыток войти c учетной записью root
23 DENY_THRESHOLD_ROOT = 1
24
25 # —
26 DENY_THRESHOLD_RESTRICTED = 1
27
28 #
29 WORK_DIR = /var/lib/denyhosts
30
31 #
32 SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
33
34 #
35 HOSTNAME_LOOKUP=YES
36
37 # Redhat/Fedora:
38 LOCK_FILE = /var/lock/subsys/denyhosts
39
40 #
41 ADMIN_EMAIL = root
42
43 #
44 SMTP_HOST = localhost
45 SMTP_PORT = 25
46
47 #
48 #SMTP_USERNAME=foo
49 #SMTP_PASSWORD=bar
50
51 #
52 SMTP_FROM = DenyHosts <nobody@localhost>
53
54 # by DenyHosts when it reports thwarted abuse attempts
55 SMTP_SUBJECT = DenyHosts Report from $[HOSTNAME]
56
57 #
58 #SMTP_DATE_FORMAT = %a, %d %b %Y %H:%M:%S %z
59
60 #
61 #SYSLOG_REPORT=YES
62
63 #
64 #ALLOWED_HOSTS_HOSTNAME_LOOKUP=NO
65
66 #
67 AGE_RESET_VALID=5d
68
69 #
70 AGE_RESET_ROOT=25d
71
72 #
73 AGE_RESET_RESTRICTED=25d
74
75 #
76 AGE_RESET_INVALID=10d
77
78 #
79 #RESET_ON_SUCCESS = yes
80
81 #
82 #PLUGIN_DENY=/usr/bin/true
83
84 #
85 #PLUGIN_PURGE=/usr/bin/true
86
87 #
88 #PLUGIN_PURGE=/usr/share/denyhosts/plugins/restorecon.sh
89
90 #
91 #USERDEF_FAILED_ENTRY_REGEX=
92
93 #
94 DAEMON_LOG = /var/log/denyhosts
95
96 #
97 #DAEMON_LOG_MESSAGE_FORMAT = %(asctime)s — %(name)-12s: %(levelname)-8s %(message)s
98
99 #
100 DAEMON_SLEEP = 30s
101
102 #
103 DAEMON_PURGE = 1h
104
105 #
106 #SYNC_SERVER = xmlrpc.denyhosts.net:9911
107
108 #
109 #SYNC_INTERVAL = 1h
110
111 #
112 #SYNC_UPLOAD = no
113 #SYNC_UPLOAD = yes
114
115 #
116 #SYNC_DOWNLOAD = no
117 #SYNC_DOWNLOAD = yes
118
119 #
120 #SYNC_DOWNLOAD_THRESHOLD = 10
121 #
122 #SYNC_DOWNLOAD_RESILIENCY = 5h
Запускаем Denyhosts:
1 service denyhosts start
Добавляем его в «автозагрузку»:
1 chkconfig denyhosts on
Дополнение:
НЕ ВЕРИТЕ, ЧТО ЗАЩИЩАТЬСЯ ДЕЙСТВИТЕЛЬНО НАДО?
Вот количество неудавшихся авторизации:
1 cat /var/log/secure | grep sshd | grep invalid | wc -l                                        874

Источник: http://xaxatyxa.ru/_centos/zashhishhaemsya-centos-podbora-parolya-seti.html

Leave a Comment

Your email address will not be published. Required fields are marked *

Shares