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

8

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

Samwell
источник

Ответы:

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-адрес через одну неделю.

ChrisG
источник
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
jmunsch
источник
0

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

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

MitziMeow
источник
2
Я отредактировал конфигурационный файл ssh /etc/ssh/sshd_configи изменил PermitRootLoginс да на нет. Я не знаю, относится ли это к делу, но у меня установлен rssh, который позволяет только определенным пользователям входить в систему с использованием sftp, но не разрешает ssh.
Самуэлл
Вы проверили файлы журнала ssh, если он попытался войти в систему?
MitziMeow
Да, я вижу, что существует много неудачных попыток входа пользователя по множеству разных IP-адресов, которые я не распознаю.
Самуэлл
тогда денихоты должны работать
MitziMeow