В настоящее время я блокирую все входы по ssh с использованием root. Но я хотел сделать все возможное и заблокировать IP-адрес клиента, который пытался войти в систему как root. У меня в настоящее время установлены и работают denyhosts и fail2ban, могу ли я использовать denyhosts и / или fail2ban для блокировки IP-адресов тех, кто пытается войти в систему как root?
Скопируйте этот код в новый файл /etc/fail2ban/filter.d/sshd-root.conf:
[INCLUDES]
# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf
[Definition]
_daemon = sshd
failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$
ignoreregex =
ПОЖАЛУЙСТА, ВНИМАНИЕ, что вам, возможно, придется отредактировать failregex, чтобы точно идентифицировать неудачные попытки входа в систему root - используйте:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf
чтобы проверить, что он определяет правильные записи журнала.
Затем вам нужно отредактировать свой jail.local, чтобы использовать новый фильтр - добавьте что-то вроде:
[ssh]
enabled = true
port = 1:65535
filter = sshd-root
logpath = /var/log/auth.log
bantime = 604800
maxretry = 3
Очевидно, вам следует отрегулировать эти значения в соответствии с вашими потребностями. Приведенные выше настройки отбрасывают все входящие пакеты с ошибочного IP-адреса после трех попыток входа в систему как root и снова освобождают IP через неделю.
В зависимости от вашего дистрибутива отредактируйте /etc/fail2ban/jail.conf
Обновите [ssh]
раздел, чтобы показать что-то вроде этого
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
bantime = 3600
maxretry = 3
При необходимости измените параметры. Он не будет специально блокировать root, но каждую попытку, которая терпит неудачу. Будь осторожен с maxretry
и bantime
. Если у вас не получится ввести собственный пароль, пока maxtretry
установлен на низком уровне, вы блокируете себя для bantime
. Перезапустите fail2ban.
Я бы не стал пытаться заблокировать IP-адрес навсегда, поскольку множество попыток поступает с динамических IP-адресов, которые могут заблокировать некоторых законных пользователей в более поздний момент времени.
(Некоторые дистрибутивы предлагают файл jail.options для ваших модификаций. Это предпочтительное место для размещения ваших изменений, поскольку на него не должны влиять обновления, перезаписывающие conf.)
Поскольку по умолчанию /etc/fail2ban/filter.d/sshd.conf
уже есть регулярное выражение для AllowUsers и DenyUsers ...
...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...
Следующие будут:
exampleusername
с внешних IP-адресовroot
или любые соединения в локальной сети (192.168.0. *)Строка `/ etc / ssh / sshd_config ':
AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1
И в /etc/fail2ban/jail.conf
:
ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 1
findtime = 99999999
bantime = 99999999
Как вы заблокировали вход по ssh? / bin / false или параметр sshd_config DenyUsers?
Я не могу придумать ответ из головы, но IIRC denyhosts анализирует файл журнала, поэтому просто посмотрите, если вы получите неудачную запись в файле журнала после того, как кто-то попытается войти в систему с правами root с отключенным