![使用 iptables 丢弃数据包,以便 root 用户进行 ssh 登录](https://linux22.com/image/742199/%E4%BD%BF%E7%94%A8%20iptables%20%E4%B8%A2%E5%BC%83%E6%95%B0%E6%8D%AE%E5%8C%85%EF%BC%8C%E4%BB%A5%E4%BE%BF%20root%20%E7%94%A8%E6%88%B7%E8%BF%9B%E8%A1%8C%20ssh%20%E7%99%BB%E5%BD%95.png)
是否可以让 iptables DROP 任何具有用户“root”的数据包,以便 SSH 守护进程甚至不必浪费周期来拒绝登录尝试?
我已经在 ssh_config 中拒绝了 root 登录尝试。但这仍然会占用资源来拒绝和记录该尝试。我想在数据包被发送到守护进程之前,在防火墙(又名 iptables)处丢弃该数据包。
那么是否可以根据用户丢弃数据包?
我想避免使用像 fail2ban 这样的禁止 IP 地址的解决方案。我不想禁止 IP 地址。
答案1
根据 SSH 协议 RFC 的记录,这是不可能的,因为登录数据只有在建立并加密连接后才会发送。因此,防火墙永远不会看到登录名。因此,防火墙无法根据它看不到的内容丢弃数据包。
拒绝服务是 SSH 协议的一个已知漏洞,必须通过其他方式来缓解。