我修改我的/etc/hosts.allow
文件为
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 文件没有按照我想要的方式运行?
或者,我是否被通用错误消息(5 in the last 300 secs
)误导了,因为实际上这些 IP 地址并没有真正尝试输入用户和密码 5 次?
我的目标是阻止未经批准的 IP 地址输入用户名和密码。我如何知道我是否实现了这个目标?
当他们的 IP 确实被拒绝时,我应该期望 csf.deny 文件显示什么?
答案1
csf.deny
被 ConfigServer 防火墙使用,并且那里列出的 IP 将根本不允许连接到服务器。
如果 IP 在csf.deny
文件中,则意味着它在服务器防火墙的所有端口上都被阻止,并且不会在任何服务上显示任何登录屏幕,因为它永远不会与服务器建立连接。
过去 300 秒内超过 5 次,意味着他们未能通过身份验证过程,因此被列入 CSF 黑名单。如果仅允许使用 SSH 密钥,则可能是他们输入了错误的凭据,或者根本没有收到登录提示。
输入 IPhosts.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.deny
你可以从中删除 IPcsf -dr IP
并将其列入白csf.allow
名单csf -a IP
如果您想要完全阻止非预先批准的 IP 的 SSH,并且想要避免csf.deny
由于 SSH 登录失败而导致的增长,您可以完全阻止 SSH 端口 22(如果您没有更改它),通过将其从 中的 TCP_IN 行中删除csf.config
。
在更改任何内容后csf.config
,您需要重新启动 CSF 以csf -r
重新加载配置文件。
这将阻止所有 IP 的端口 22,除了 csf.allow 中列出的 IP。
通过从 中的 TCP_IN 中删除端口 22 csf.config
,并将您的 IP 放入 中csf.allow
,您将只允许这些 IP 连接到端口 22,任何其他 IP 都不会显示任何 SSH 登录,但在尝试连接到 SSH 时会收到超时消息。
如果您只输入 IP csf.allow
,则将允许所有端口,但您可以使用高级端口+IP 过滤仅指定单个端口。
输入此项csf.allow
将允许从 IP 连接到端口 22,即使 中不允许端口 22 csf.config
。
tcp:in:d=22:s=x.x.x.x