Как заблокировать все попытки входа в систему root с помощью denyhosts и / или fail2ban?


8

В настоящее время я блокирую все логины ssh, используя root. Но я хотел пройти лишнюю милю и заблокировать IP-адрес клиента, который пытался войти в систему как root. В настоящее время у меня есть и работает denyhosts и fail2ban, могу ли я использовать denyhosts и или fail2ban для блокировки IP-адресов тех, кто пытается войти в систему как root?

Ответы:


2

В зависимости от вашего дистрибутива, отредактируйте /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.)


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

17

Скопируйте этот код в новый файл /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-адрес через одну неделю.


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

Это определенно правильный ответ. Лучше всего отключить входы root в конфигурации sshd, а затем установить maxretry на 1 в jail.conf.
anteatersa

1

Поскольку по умолчанию /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

0

Как вы заблокировали ssh логины? / bin / false или опция syd_config DenyUsers?

Я не могу придумать ответ из моей головы, но IIRC denyhosts анализирует файл журнала, так что просто посмотрите, не получена ли запись в файле журнала после того, как кто-то попытается войти в систему с отключенным root


2
Я отредактировал конфигурационный файл ssh /etc/ssh/sshd_configи изменил PermitRootLoginс да на нет. Я не знаю, относится ли это к делу, но у меня установлен rssh, который позволяет только определенным пользователям входить в систему с использованием sftp, но не разрешает ssh.
Самуэлл

Вы проверили файлы журнала ssh, если он попытался войти в систему?
MitziMeow

Да, я вижу, что существует много неудачных попыток входа пользователя по множеству разных IP-адресов, которые я не распознаю.
Самуэлл

тогда денихоты должны работать
MitziMeow
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.