Fail2Ban или DenyHosts для блокировки неверных попыток входа по SSH

Есть ли способ автоматически блокировать IP-адрес, когда пользователь пытается войти в систему как любое неверное имя пользователя? У меня уже есть:

[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
bantime = 31536000

в /etc/fail2ban/jail.conf

4
задан 25 October 2015 в 07:51

5 ответов

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

Вот более подробное руководство:

Установить пакет denyhosts (sudo apt-get install denyhosts)

Посмотрите на конфигурацию по умолчанию в /etc/denyhosts.conf, вас могут заинтересовать DENY_TRESHOLD_INVALID, [ 114] и DENY_TRESHOLD_ROOT варианты.

Что касается сервера синхронизации, он по умолчанию отключен, и вам необходимо включить его, раскомментировав опцию SYNC_SERVER.

Также неплохо установить опцию PURGE_DENY на 1w или что-то подобное в случае, если вы заблокируете себя, поэтому запись будет очищена через неделю, и вы сможете снова войти в систему.

0
ответ дан 25 October 2015 в 07:51

Почему бы просто не запретить все входы в систему root полностью через SSH, а не использовать Fail2Ban или другие вещи? Сделав это и отказавшись от использования имени пользователя root, вы устраните проблему, связанную с тем, чтобы заблокировать всех пользователей, потому что даже если они угадывают пароль root, он будет запрещать им вход. Независимо от того, сколько раз они пытаются.

В /etc/ssh/sshd_config найдите строку, содержащую PermitRootLogin. Отредактируйте его в любом текстовом редакторе, но убедитесь, что вы используете sudo / gksudo (gksudo, только если вы используете текстовый редактор с графическим интерфейсом). Сделайте ту строку, о которой я упоминал, скажите PermitRootLogin no, затем сохраните и выполните sudo service ssh restart.

(Этот ответ был написан для неправильно сформулированного исходного вопроса. Этот ответ не будет изменен для соответствия пересмотренному вопросу, потому что я не могу ответить на него. Я могу удалить ЭТОТ ответ в будущем)

0
ответ дан 25 October 2015 в 07:51

Это намеренно не поддерживается в fail2ban :

Другими словами, недопустимые пользователи могут получить 2 попытки, в то время как неверный пароль для действительных пользователей получит 5 попыток. Как это можно сделать в fail2ban?

Убедительный аргумент против этого говорит о том, что он позволяет злоумышленнику узнать, является ли имя пользователя действительным, и, таким образом, резко уменьшает пространство поиска атаки методом перебора. [ 114]

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

0
ответ дан 25 October 2015 в 07:51

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

Fail2ban предоставляет простое решение для этого.

Прежде всего, нам нужно добавить круглый куб в /etc/fail2ban/jail.conf

[roundcube]

enabled  = false

port     = http,https

filter   = roundcube

action   = iptables-multiport[name=roundcube, port="http,https"]

logpath  = [YOUR PATH TO ROUNDCUBE HERE]/logs/errors

maxretry = 5

findtime = 600

bantime = 3600

Заменить [YOUR PATH TO ROUNDCUBE HERE] в приведенном выше фактической папке круглого куба

например /home/roundcube/public_html/logs/errors

[ 1112] Далее нам нужно создать фильтр.

Добавить /etc/fail2ban/filter.d/roundcube.conf

[Definition]

failregex = IMAP Error: Login failed for . from <HOST>(\. . in .?/rcube_imap\.php on line \d+ \(\S+ \S+\))?$

ignoreregex =

Теперь у нас есть основы, нам нужно проверить наш фильтр. Для этого мы используем fail2ban-regex.

Наслаждайтесь

0
ответ дан 25 October 2015 в 07:51

Сначала определите фильтр для недопустимых пользователей в filter.d/sshd-invaliduser.conf:

[INCLUDES]
before = common.conf

[Definition]
_daemon = sshd

failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .*? from <HOST>(?: port \d+)?\s*$
ignoreregex = 

[Init]
journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd

Затем включите его в jail.local:

[sshd-invaliduser]
enabled = true
maxretry = 1
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Это работает с fail2ban 0.9.6- 2 на Debian 9.

0
ответ дан 25 October 2015 в 07:51

Другие вопросы по тегам:

Похожие вопросы: