有人可以解释以下规则:
-A default-INPUT -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
-A default-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
我想我添加了em来防止SYN泛滥,但我不确定了。
答案 0 :(得分:20)
-A default-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
现在进行下一个命令:
-A default-INPUT -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
SYN ACK FIN RST URG PSH ALL NONE
。iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN
SYN
标志的数据包,并且ACK, FIN and RST
标志未设置。FIN,RST,ACK
标志设置且SYN
未设置时,此规则匹配;这是SYN集的反向匹配,FIN,RST,ACK
未设置。为了理解这个模块的使用,你需要对TCP段及其3次握手有一点了解。
这是3次握手:
3 way TCP handshake http://www.cisco.com/web/about/ac123/ac147/images/ipj/ipj_9-4/94_syn_fig1_lg.jpg
因此TCP段具有控制连接状态的标志。
TCP细分:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Port | Destination Port |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Acknowledgment Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data | |U|A|P|R|S|F| |
| Offset| Reserved |R|C|S|S|Y|I| Window |
| | |G|K|H|T|N|N| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Checksum | Urgent Pointer |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
我认为这不会阻止SYN
洪水,主要是因为我还没有尝试过。虽然这个会限制SYN
洪水:
# Limit the number of incoming tcp connections
# Interface 0 incoming syn-flood protection
iptables -N syn_flood
iptables -A INPUT -p tcp --syn -j syn_flood
iptables -A syn_flood -m limit --limit 1/s --limit-burst 3 -j RETURN
iptables -A syn_flood -j DROP
取自:http://www.cyberciti.biz/tips/howto-limit-linux-syn-attacks.html
答案 1 :(得分:5)
第二行是防止无效数据包。
-A default-INPUT -p tcp -m tcp --sport 0:1023 ! --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
拒绝所有具有SYN位和任何其他标志集的入站数据包。如果这是一台服务器,这是有道理的。
任何合法的入站连接都会发送一个设置了SYN位的初始数据包,但不会发送其他数据包。使用多个标志是tcp堆栈上的攻击媒介,需要删除。
另外两个攻击是NULL,其中没有设置任何标志,而圣诞树则设置了所有标志。为防止这些,请使用
# Protect against common attacks
# Block tcp packets that have no tcp flags set.
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# Block tcp packets that have all tcp flags set.
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP