为了避免有人知道我的机器上打开了哪个端口,我认为打开所有未使用的端口会很有用,这样 nmaper 就无法识别哪个端口真正打开了。
nmap
如何通过扫描使端口显示为打开状态
答案1
您已经为扫描您的网络 IP 地址的人提供了 labrea,但现在已经有一段时间没有对其进行测试了。
labrea - 用于传入 IP 连接尝试的蜜罐
labrea 为指定 IP 地址块中未使用的 IP 地址创建虚拟机。 LaBrea 坐下来监听 ARP“谁拥有”请求。
当针对特定 IP 的 ARP 请求未得到答复的时间超过其“速率”设置(默认值:3 秒)时,labrea 会制作一个 ARP 答复,将所有发往该 IP 的流量路由到“虚假”MAC 地址。 labrea 嗅探发送到该 MAC 地址的 TCP/IP 流量,然后使用它创建的 SYN/ACK 数据包响应任何 SYN 数据包。
要在 Debian 中安装它,请执行以下操作:
sudo apt-get install labrea
至于在一些指定的公共端口上应答,并提供警报,你有普萨德,尽管据我记得这并不是监听所有端口。
你总是可以运行蜜罐,尽管我已经有一段时间没有测试它们了。
尽管如此,在我看来,我更愿意放弃所有与未使用端口的连接,暴露于外部的服务越少,攻击的途径就越少。
答案2
在 Linux 上,您可以使用iptables
'ssocket
匹配以iptables
了解端口是否TCP
正在使用。结合xtables 插件的TARPIT
目标(也使用 LaBrea 的概念)这可以使外观打开任何没用过 TCP
自动端口,同时让实际打开的端口照常工作。因为UDP
开放端口不应答和丢弃端口之间可能没有太大区别,所以我不再谈论它(默认情况下只是丢弃 udp)。
规则:
iptables -N openclosed
iptables -A openclosed -p tcp -m socket --nowildcard -j RETURN
iptables -A openclosed -p tcp -j TARPIT --honeypot
iptables -I INPUT -j openclosed
注意事项:每个连接都会创建一个由 netfilter 使用的 conntrack 条目。因此,该解决方案可以使大量的conntrack资源得到利用。当系统收到攻击而不是扫描时,请记住这一点。虽然TARPIT
可以在没有 netfilter 的情况下使用(使用NOTRACK
),但我不确定socket
是否可以,而且无论如何这不能像上面那样简单。添加该--honeypot
选项可以TARPIT
使扫描(如果不发送数据)更便宜,而且对于 netfilter 也更便宜;请随意删除它。也--nowildcard
可能适合也可能不适合路由器使用(但无论如何对于INPUT
链中的本地使用来说都是可以的)。