iptables记录但不丢弃数据包


0

我正在尝试为我的Web服务器创建一些简单的iptables DOS保护规则。我正在按照以下规则进行测试:

iptables -N LOGDROP > /dev/null 2> /dev/null
iptables -F LOGDROP
iptables -A LOGDROP -j LOG --log-prefix "LOGDROP "
iptables -A LOGDROP -j DROP

iptables -I INPUT -p tcp --dport 8000 -i eth0 -m state --state NEW -m recent --set
iptables -I INPUT -p tcp --dport 8001 -i eth0 -m state --state NEW -m recent --set

iptables -I INPUT -p tcp --dport 8000 -i eth0 -m state --state NEW -m recent --update --seconds 1 --hitcount 4 -j LOGDROP
iptables -I INPUT -p tcp --dport 8001 -i eth0 -m state --state NEW -m recent --update --seconds 1 --hitcount 4 -j LOGDROP

我在单独的计算机上创建了一个简单的脚本来执行wget,然后睡眠0.2秒钟。我在端口8000和8001上启动了此脚本,并且正如我所料,我在/ var / log / messages中看到丢弃消息:

Jul 30 20:03:57 Server kernel: LOGDROP IN=eth0 OUT= MAC=08:00:27:d5:52:24:08:00:27:6d:cf:2f:08:00 SRC=192.168.56.102 DST=192.168.56.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=31049 DF PROTO=TCP SPT=44071 DPT=8000 WINDOW=14600 RES=0x00 SYN URGP=0
Jul 30 20:04:00 Server kernel: LOGDROP IN=eth0 OUT= MAC=08:00:27:d5:52:24:08:00:27:6d:cf:2f:08:00 SRC=192.168.56.102 DST=192.168.56.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=63571 DF PROTO=TCP SPT=38876 DPT=8001 WINDOW=14600 RES=0x00 SYN URGP=0
Jul 30 20:04:00 Server kernel: LOGDROP IN=eth0 OUT= MAC=08:00:27:d5:52:24:08:00:27:6d:cf:2f:08:00 SRC=192.168.56.102 DST=192.168.56.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=63984 DF PROTO=TCP SPT=44075 DPT=8000 WINDOW=14600 RES=0x00 SYN URGP=0

一切似乎都很棒,除了我检查wireshark时,发现来自源端口44071的连接已成功,这意味着我看到了完整的tcp握手,HTTP GET和套接字关闭。日志中的其他两个条目已成功删除,这意味着我在Wireshark中仅看到一个SYN数据包。

有人知道为什么在源端口38876上的连接会被记录为拒绝,但实际上并未断开吗?

Answers:


0

您的规则首先从INPUT表跳转到LOGDROP表,然后又跳转到LOG表,因此LOGDROP表中的最后一个条目永远不会被调用,因为您已经将执行移到了LOG表中。


如果是这样,为什么上面的两个连接(ID 63571和63984)会被记录删除?
adam35413

0

我在看wireshark时发现确实确实有阻塞的流量,我的脚本只是在重用套接字。结果,对于我的日志中任何被阻止的套接字条目,我都会看到多个初始SYN。

另外,为了使上述规则起作用,我需要在每个iptable行中添加--name属性。如果不使用--name,则来自同一IP地址的所有连接都将计入命中数,无论其到达哪个端口。

总而言之,该问题已解决。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.