我目前正在使用 iptables 记录端口 22 的连接:
-A INPUT -p tcp -m tcp -m multiport --dports 22,NNN,NNN -m state --state NEW -j LOG --log-prefix "SSH Connection " --log-level 1
并设置 Fail2Ban jail 来禁止所有对端口 22 的连接尝试。但是,我的 iptables 列表中的许多条目显示 0:0(0 次命中,0 个数据包)。
如果 iptables 不增加计数器,那么如何才能连接到这个端口呢?
答案1
使用 iptables,第一个匹配的规则获胜。几乎可以肯定,你有一个更早的规则正在影响你的数据包。
答案2
这可能是 SYN 扫描的产物:
SYN 扫描是 TCP 扫描的另一种形式。端口扫描器不使用操作系统的网络功能,而是自己生成原始 IP 数据包并监视响应。这种扫描类型也称为“半开扫描”,因为它实际上从未打开完整的 TCP 连接。端口扫描器会生成 SYN 数据包。如果目标端口已打开,它将以 SYN-ACK 数据包进行响应。扫描器主机会以 RST 数据包进行响应,在握手完成之前关闭连接。[3] 如果端口已关闭但未经过滤,目标将立即以 RST 数据包进行响应。
使用原始网络有几个优点,它使扫描器可以完全控制发送的数据包和响应的超时时间,并允许详细报告响应。关于哪种扫描对目标主机的干扰较小,存在争议。SYN 扫描的优点是各个服务实际上永远不会收到连接。但是,握手期间的 RST 可能会给某些网络堆栈带来问题,特别是打印机等简单设备。这两种方式都没有确凿的论据。