use*_*688 5 security linux hosts.allow csf
我将我的/etc/hosts.allow文件修改为
sshd : 192.168.0.0/255.255.255.0 : allow
sshd : xxx.xxx.xxx.* : allow
sshd : ALL : deny
Run Code Online (Sandbox Code Playgroud)
(其中 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 ...
Run Code Online (Sandbox Code Playgroud)
我的期望是否正确,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 密钥,他们可能输入了错误的凭据,或者根本没有收到登录提示。
输入 IPhosts.allow将允许其连接到您在那里指定的服务,但他们仍然需要输入正确的凭据才能连接到服务器。
未列为允许的 IP 应显示以下消息:
ssh_exchange_identification: Connection closed by remote host
Run Code Online (Sandbox Code Playgroud)
我相信,如果他们尝试连接到 SSH,这将被视为登录失败,如果他们达到失败登录限制,他们最终将进入 csf.deny。他们将建立与 SSH 端口的连接,但由于拒绝规则而无法对自己进行身份验证,CSF 会将其视为登录失败。
阻止非列出 IP 的 SSH 的更好选择是在 CSF 中完全阻止它,如本文末尾所述。
除了csf.deny之外,重要的文件还有csf.allow、 和csf.ignore。
csf.allow将允许从任何源端口上列出的 IP 到任何目标端口的连接。
csf.ignore将忽略列出的 IP 中的任何失败操作,它不会受到失败登录或连接的限制。
csf.deny您可以从with中删除 IPcsf -dr IP并将其列入白名单csf.allowcsf -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
Run Code Online (Sandbox Code Playgroud)