记录所有传入数据包的源 IP

记录所有传入数据包的源 IP

如何记录发送数据包或连接到服务器的所有机器的 IP 地址?另外,如何阻止参与 DDoS 并用数据包淹没服务器的 IP?

答案1

预先说几句谨慎的话:防御 DDoS 攻击很困难,通常需要 ISP 的帮助。仅靠 iptables 并不能保护您,甚至可能有害。我不认为你真的想做你所要求的事情。

  • DDoS 旨在通过使系统超载而导致拒绝服务。记录数据包会增加系统的负载。所以你会帮攻击者一个忙。
  • IP 地址的来源很容易被欺骗。想象一下,您通过 ssh 连接到服务器,并且攻击者了解了您笔记本电脑的 IP 地址。发送数据包看起来就像来自任何给定的 IP(在本例中是您的笔记本电脑),这是非常非常容易的。您的服务器将通过阻止您的 IP 地址来响应,从而有效地将您拒之门外。此技术允许攻击者拥有任何被服务器阻止的 IP 地址。再说一遍,你是在帮攻击者一个忙,让他们的工作变得更加简单。

排除了这一点:

将每个单独的 IP 地址记录到系统日志中(每个 IP 每小时最多 1 个条目):

iptables -I INPUT 1 \! -i lo                 \
  -m hashlimit --hashlimit-name "IP_SOURCES" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 1           \
               --hashlimit-upto 1/hour       \
  -j LOG

替换iptablesip6tables对 IPv6 数据包执行相同的操作。

阻止IP的工作方式类似,只需将conntrack模块放入上述规则中,匹配NEW连接并将跳转目标设置为DROP.但我再次强调,如果你真的这样做的话,你会对自己造成伤害。

iptables -I INPUT 1 \! -i lo                 \
  -m conntrack --ctstate NEW                 \
  -m hashlimit --hashlimit-name "RATE_LIMIT" \
               --hashlimit-mode srcip        \
               --hashlimit-burst 20          \
               --hashlimit-above 1/min       \
  -j DROP

这将允许每分钟 20 次连接尝试,并丢弃所有其他连接尝试。已建立连接的数据包仍然可以完好无损地通过。

正如评论中所述,fail2ban这可能是阻止不需要的流量的一个很好的解决方案。如果攻击者正在生成 SYN-flood 或正在使用 IPv6,它不会对您有帮助,但如果攻击者试图使用“普通”IPv4 暴力破解您的 ssh 或 smtp 服务器,那么它将很有用。联系。

相关内容