实验环境

攻击机:192.168.92.128,已安装slowhttptest
靶机:192.168.92.129,已安装apache httpd,开启iptables服务

实验步骤

一、配置iptables

以下操作使用靶机执行

# 开启iptables
systemctl start iptables

配置iptables防护规则

# 新建一个链
iptables -N syn-flood

# 匹配传入的TCP SYN数据包, 并将它们传递给名为syn-flood的自定义链
iptables -I INPUT -p tcp --syn -j syn-flood

# 允许端口80的TCP流量通过防火墙
iptables -I INPUT 2 -p tcp -m tcp --dport 80 -j ACCEPT

# 在自定义链syn-flood中,限制每秒通过的TCP SYN数据包数量,以防止SYN Flood攻击
iptables -I syn-flood -p tcp -m limit --limit 3/s --limit-burst 6 -j RETURN

# 将名为syn-flood的自定义链的末尾附加一个规则,该规则会拒绝所有匹配到的数据包。
iptables -A syn-flood -j REJECT

# 查看规则
iptables -nvL

攻击机发起syn攻击

以下操作使用攻击机执行

hping3 --rand-source -S -p 80 192.168.92.129 --flood

观察攻击效果

以下操作使用靶机执行

netstat -ant | more

可以看到服务器一很多的SYN_RECV半连接

限制同一IP的连接数

以下操作使用靶机执行

重启iptables,就会自动删除上面配置的规则

iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
# 表示匹配并发连接数量超过16的数据包
iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 16 -j REJECT

使用攻击机,发起slowhttptest攻击

以下操作使用攻击机执行

slowhttptest -c 10000 -B -i 5 -r 200 -u http://192.168.92.129 -p 3 > 1.txt &

slowhttptest工具执行慢速HTTP攻击测试。模拟攻击者发送大量低速HTTP请求以尝试耗尽服务器资源或导致服务不可用。

下面是命令的各个部分的解释:

slowhttptest: 这是慢速HTTP攻击测试工具的命令。
-c 10000: 这部分指定要发送的HTTP请求的数量,这里是10000个。
-B: 这是一个选项,表示在每个请求之间包括一些不完整的请求头,模拟慢速请求。
-i 5: 这部分指定了请求之间的延迟,以毫秒为单位。在这里,延迟为5毫秒。
-r 200: 这是一个选项,指定了每个请求的速率,即每秒发送200个请求。
-u http://192.168.0.116: 这部分指定了目标URL,即HTTP请求将发送到的服务器地址。
-p 3: 这是一个选项,指定了要使用的HTTP请求方法,这里是3(POST方法)。
> 1.txt: 这部分将命令的输出重定向到名为1.txt的文本文件中,以保存测试结果。
&: 这是一个后台运行的符号,它使命令在后台运行,以便您可以继续使用终端。

测试网站是否正常

其他知识

删除iptables的规则

方法 1: 按规则号删除

如果要删除规则号为3的规则,可以执行以下命令:

iptables -D INPUT 3

方法 2: 按匹配条件删除

如果您不知道规则号,可以使用匹配条件删除规则。这需要您提供要匹配的规则的匹配条件,然后删除匹配的规则。

例如,如果您知道要删除具有特定源IP地址的规则,可以执行以下命令:

iptables -D INPUT -s 192.168.1.100 -j ACCEPT

这将删除匹配源IP地址为192.168.1.100并采取ACCEPT动作的规则。

方法 3: 清空链

如果您想要删除特定链中的所有规则,可以使用-F选项清空该链。例如:

iptables -F INPUT

这将清空INPUT链中的所有规则。