我正在研究 Linux Mint 18.1 和 GNU/Linux Debian 9 Stretch(测试)。
我只有 IPv4 可用。我想提高网络的安全性,我读到了以下内容:阻止众所周知的 TCP 攻击。假设我想尝试一下这条评论。
问题是,我不知道如何将这些规则添加到iptables
'raw
表?
答案1
在这里,我假设您不关心 IPv6。所以你要编辑的文件是:
/etc/sysconfig/iptables
将其放在 iptables 文件的顶部。它是 RAW 表的骨架实现,在任何与路由相关的表(例如 FILTER)之前使用。请注意,每个表在其定义的底部都有自己的 COMMIT 命令:
*raw
:TCPFLAGS - [0:0]
# the two rules below assure that only TCP packets get examined. All others continue into the *filter table.
-A PREROUTING -p tcp -j TCPFLAGS
-A PREROUTING -j ACCEPT
# quickly accept standard handshakes
# ALLOW ACK or ACK/SYN
#-A TCPFLAGS -j ACCEPT
-A TCPFLAGS -p tcp --tcp-flags FIN,ACK,URG,PSH,RST ACK -j ACCEPT
# allow ACK/FIN with either URG or PSH, or both, or neither
# but SYN and RST can't be set
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,ACK,RST ACK,FIN -j ACCEPT
# allow SYN or ACK/SYN
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST SYN -j ACCEPT
# allow RST or ACK/RST
-A TCPFLAGS -p tcp --tcp-flags FIN,SYN,URG,PSH,RST RST -j ACCEPT
# this rule catches xmas-tree and fin attacks
-A TCPFLAGS -p tcp --tcp-flags FIN FIN -j DROP
# this rule catches xmas-tree and syn/rst attacks
-A TCPFLAGS -p tcp --tcp-flags SYN SYN -j DROP
# this rule catches null attacks
-A TCPFLAGS -p tcp --tcp-flags ALL NONE -j DROP
#-A TCPFLAGS -p tcp -ecn-tcp-cwr -j DROP
# these rules catch bad ack combinations
#-A TCPFLAGS -p tcp --tcp-flags ACK ACK -j ACC
-A TCPFLAGS -j ACCEPT
# so, what do we accept for tcp?
# handshakes (ACK/FIN), (ACK/SYN), (SYN), (ACK), (RST), (ACK/RST), and data packets with
# PSH or URG or FIN or ACK
COMMIT
上面的内容位于*过滤器定义之上。我不保证规则的正确性。请注意,我已经注释掉了一些对我不起作用的规则。如果您发现我的规则有任何问题,请在下面指出。
答案2
在来自的帮助下iptables-save
,我发现正确的格式是什么,将其保存到:
/etc/iptables/rules.v4
问题中链接的规则示例如下:
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p icmp -m u32 ! --u32 "0x4&0x3fff=0x0" -j DROP
-A PREROUTING -p icmp -m length --length 1492:65535 -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN FIN,SYN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,PSH,URG -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
COMMIT