sshd : 192.168.0.0/255.255.255.0 : allow sshd : xxx.xxx.xxx.* : allow sshd : ALL : deny
(其中xxx表示我的实际IP地址编号,通配符*表示完整范围0-255)然后重新启动sshd和Apache Web服务器.随着来自国外的IP地址继续出现在/etc/csf/csf.deny中,我观察了下周.
116.31.116.15 # lfd: (sshd) Failed SSH login from 116.31.116.15 (CN/China/-): 5 in the last 300 secs ...
我的期望是正确的,即hosts.allow文件中的拒绝IP地址甚至不应该出现登录屏幕以尝试登录,因此csf.deny日志中的条目证明我的hosts.allow文件没有做我做的事情想?
或者,我是否被通用错误消息(最近300秒中的5个)误导,因为实际上这些IP地址实际上并未尝试输入用户和密码5次?
我的目标是防止未经批准的IP地址甚至输入用户名和密码.我怎么知道我是否实现了这个目标?
解决方法
如果IP位于csf.deny文件中,则表示它在所有端口上的服务器防火墙中被阻止,并且不会在任何服务上显示任何登录屏幕,因为它永远不会与服务器建立连接.
在过去300秒内,这意味着他们未通过身份验证过程,这使他们在CSF中被列入黑名单.如果只允许SSH密钥,则可能是他们输入了错误的凭据,或者他们根本没有获得登录提示.
将IP放入hosts.allow将允许它连接到您在那里指定的服务,但是他们仍然需要输入正确的凭据才能连接到服务器.
未列为允许的IP应显示以下消息:
ssh_exchange_identification: Connection closed by remote host
我相信,如果他们尝试连接到SSH,这将被视为登录失败,如果他们达到失败的登录限制,他们将最终进入csf.deny.它们将建立与SSH端口的连接,但由于拒绝规则将无法对自身进行身份验证,并且CSF会将其视为登录失败.
对于未列出的IP阻止SSH的更好选择是在CSF中完全阻止它,如本文末尾所述.
除了csf.deny之外,重要的文件也是csf.allow和csf.ignore.
csf.allow将允许从任何源端口上列出的IP到任何目标端口的连接.
csf.ignore将忽略列出的IP中的任何失败操作,它将不会受到登录失败或连接的限制.
您可以使用csf -dr IP从csf.deny中删除IP,并使用csf -a IP在csf.allow中将其列入白名单
如果您想完全阻止非预先批准的IP的SSH,并且希望避免因SSH登录失败而导致csf.deny增长,则可以通过从TCP_IN中删除它来完全阻止SSH端口22(如果尚未更改) csf.config中的行.
在csf.config中更改任何内容后,需要使用csf -r重新启动CSF以重新加载配置文件.
这将阻止所有IP的端口22,但csf.allow中列出的IP除外.
通过从csf.config中的TCP_IN中删除端口22,并将您的IP放在csf.allow中,您将只允许那些IP连接到端口22,任何其他IP都不会显示任何SSH登录,但会收到超时消息尝试连接SSH时.
如果只将IP放在csf.allow中,则允许所有端口使用,但只能使用高级端口ip过滤指定单个端口.
将其放在csf.allow中将允许从IP连接到端口22,即使csf.config中不允许端口22也是如此.
tcp:in:d=22:s=x.x.x.x