我目前使用root阻止所有sshlogin。 但我想多走一步,阻止试图以root身份login的客户端的IP地址。 我目前有denyhosts和fail2ban设置和工作,我可以使用denyhosts和或fail2ban来阻止那些试图以root身份login的IP地址?
根据您的发行版,编辑/etc/fail2ban/jail.conf更新[ssh]部分以显示类似的内容
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log bantime = 3600 maxretry = 3
根据需要更改参数。 它不会专门阻止根,但每一次失败的尝试。 小心, maxretry利用bantime 。 如果你用自己的密码失败,而maxtretry设置为低,你阻止自己的bantime 。 重新启动fail2ban。
我不会试图永远封锁IP,因为很多尝试都来自于dynamicIP,这些IP可能会阻碍一些合法的用户。
(某些发行版提供了一个jail.options文件,用于修改,这是更改的首选位置,因为它不应该被覆盖conf的更新所影响)。
将此代码复制到一个新文件/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才能准确识别失败的根login尝试 – 使用:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf
testing它是否确定了正确的日志条目。
然后你需要编辑你的jail.local来使用新的filter – 添加如下内容:
[ssh] enabled = true port = 1:65535 filter = sshd-root logpath = /var/log/auth.log bantime = 604800 maxretry = 3
显然你应该根据你的需要调整这些值。 上面的设置将三次尝试以root用户身份login后,将所有传入的数据包从有问题的IP地址中删除,并在一周后再次释放IP。
由于默认的/etc/fail2ban/filter.d/sshd.conf已经有AllowUsers和DenyUsers的正则expression式了…
... ^%(__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连接 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
你是如何阻止sshlogin? / bin / false或sshd_config DenyUsers选项?
我想不出一个答案,但我的头,但IIRC denyhosts分析日志文件,所以只要看看你是否有一个失败的日志文件中的条目后,一些人尝试login到根与它禁用