我想知道如果及时检测到这些攻击,是否可以阻止 TCP SYN 或 ICMP 洪水攻击。如果唯一的方法是阻止僵尸网络的 IP 地址,那么过滤这些地址的最准确过程是什么?
阻止 DDOS TCP SYN 和 UDP 洪水攻击
SYN Flood 可以通过启用SYN Cookie来缓解。SYN Cookie 可防止攻击者填满您的 SYN 队列并使合法用户无法访问您的服务。
在 Linux 上,您可以使用这些设置来有效地启用和设置 SYN Cookie:
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
要使这些设置在启动时自动加载,请将这些行添加到文件中/etc/sysctl.conf:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3
正如微软在这篇文章中所描述的那样,也可以保护 Windows 盒子。Windows Vista 及更高版本默认启用 SYN 攻击保护。
不幸的是,对于 UDP 泛洪,您无能为力。但是,在 ICMP/Ping 洪水中,您可以将服务器设置为忽略 Ping,因此攻击将只有一半有效,因为您的服务器不会消耗带宽来回复其接收的数千个 Ping。
您可以通过运行以下配置来做到这一点:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
当然,将这一行添加到文件中/etc/sysctl.conf:
net.ipv4.icmp_echo_ignore_all = 1
但是有些看门狗系统需要启用 ICMP Echo 才能工作。因此,某些租用服务器会要求您启用 ICMP Echo。但是您仍然可以使用iptables仅在某些接口中禁用 Ping。
在 Windows 上,这可以通过以下命令完成:
netsh firewall set icmpsetting 8 disable
Windows 防火墙必须处于活动状态。
这些攻击很可能会使用 IP 欺骗来完成,第一道防线是鼓励您的 ISP 采用BCP38来避免 IP 欺骗。
拒绝服务攻击的问题在于,您通常需要首先防止恶意流量到达您的手中。你不能在本地做很多事情,但你总是可以选择像 CloudFare(他们也实施 BCP38)这样的服务,因为他们可以在这些数据包到达你之前清理它们。
作为严重 UDP 攻击的一个例子,我是加州一所大学的高级网络管理员,几天前,我们遇到了来自世界各地不少于 553 个独立主机的严重 UDP 洪水攻击。是的,真的。我只能限制来自我们的提供商的(大型)传入管道,并部分过滤一些传入,以及一些由此产生的响应 UDP .. 这是一个非常讨厌的攻击向量.. 仍在努力提出更好的响应再次发生这种情况时部署的对策套件。