我说的并不只是阻塞端口。
我记得我曾经发现一个主机,当我运行常规 tcp 扫描时nmap hostname
,nmap 不会返回任何有意义的结果。它存在超时问题。如果我将超时值设置为相当低的值并设置,--max-retries 0
它就会起作用。
有谁知道会导致 nmap 出现问题的 iptables 规则集?
答案1
如果你想阻止主机进行 syn 扫描,你可以使用 2 种方法:
陷阱方法:
iptables -A INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m limit --limit 3/m --limit-burst 6 -m recent --name blacklist --set -j DROP
iptables -A INPUT -m 最近 --rcheck --nam 黑名单 -j DROP
正常方式:
iptables -A INPUT -p tcp --syn -m limit --limit 7/s -m recent --name blacklist --set -j DROP
iptables -A INPUT -m 最近 --rcheck --nam 黑名单 -j DROP
如果您想阻止您的主机进行 FIN、ACK、Xmas 或其他扫描,请告诉我更新我的答案。
答案2
是的。我不记得具体细节了,但你可以找我发的“问题”(实际上是社区 Wiki),标题为“iptables 技巧和窍门“。在那里,你可以找到专门为难 nmap 而设计的 iptables 规则。
此外,我TARPIT
在链中部署了一个目标INPUT
。TARPIT 基本上通过允许 TCP 三次握手来“捕获”任何试图打开 TCP 连接的人,但随后将 TCP 窗口大小锁定为 0 并删除防火墙中有关该连接的所有状态。尝试打开端口的主机现在被困住了:连接已建立,但无法发送任何内容,并且由于它从未收到 FIN 或 RST,因此它会停留在 TCP-Established 状态,直到 TCP 超时*。与此同时,防火墙只是愉快地运行,因为它已经删除了该连接的所有状态,因此没有使用任何资源。
两者结合成功挫败了各种端口扫描器。它们碰到我的防火墙就死机了 :)
*TCP 超时是很多比 TCP SYN 超时时间长。大约长三个数量级,如果我没记错的话。因此,端口扫描程序将运行极其由于线程因等待 TCP 超时而卡住,因此速度很慢。
答案3
你可能会发现这有趣的是,它描述了如何实时检测和阻止端口扫描。