我将我的/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 文件显示什么?
csf.deny
由 ConfigServer 防火墙使用,并且列出的 IP 将根本不允许连接到服务器。如果 IP 在
csf.deny
文件中,则意味着它在所有端口上都被服务器防火墙阻止,并且不会在任何服务上显示任何登录屏幕,因为它永远不会与服务器建立连接。5 在最后 300 秒内,意味着他们未能通过身份验证过程,这使他们在 CSF 中被列入黑名单。如果只允许使用 SSH 密钥,则可能是他们输入了错误的凭据,或者他们根本没有收到登录提示。
输入 IP
hosts.allow
将允许它连接到您在那里指定的服务,但他们仍然需要输入正确的凭据才能连接到服务器。未列为允许的 IP 应显示以下消息:
我相信,如果他们尝试连接到 SSH,这将被视为登录失败,如果他们达到登录失败的限制,他们将最终进入 csf.deny。他们将建立与 SSH 端口的连接,但由于拒绝规则而无法进行身份验证,CSF 将其视为登录失败。
如本文末尾所述,为未列出的 IP 阻止 SSH 的更好选择是在 CSF 中完全阻止它。
除了 csf.deny 之外,重要的文件还有
csf.allow
, 和csf.ignore
.csf.allow
将允许从任何源端口上列出的 IP 连接到任何目标端口。csf.ignore
将忽略来自列出的 IP 的任何失败操作,它不会受到失败登录或连接的限制。您可以从中删除 IP
csf.deny
并将其csf -dr IP
列入白名单csf.allow
csf -a IP
如果您想完全阻止未经预先批准的 IP 的 SSH,并希望避免
csf.deny
由于 SSH 登录失败而导致您的增长,您可以完全阻止 SSH 端口,如果您没有更改它,则 22,方法是从csf.config
.更改 中的任何内容后
csf.config
,您需要重新启动 CSFcsf -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
.