Iptables国家

时间:2013-04-07 01:09:09

标签: filter firewall iptables

我试图阻止外部网络为TCP和UDP启动与内部网络的连接。我的想法是使用--state。我不确定不同州的手册页是什么意思。

“NEW表示数据包已启动新连接,或者与未在两个方向上看到数据包的连接相关联”手册页

NEW会跟踪握手吗?如在

client1 -SYN-> client2新
client1< -SYN,ACK- client2 NEW
client1 -ACK-> client2 ESTABLISHED

-OR -

client1 -SYN-> client2新
client1< -SYN,ACK- client2 NEW
client1 -ACK-> client2新
client1< -DATA- client2 ESTABLISHED

for UDP

client1-MSG1-> client2新
client1< -MSG2- client2 NEW
client1-MSG3-> client2 ESTABLISHED

-OR -

client1-MSG1-> client2新
client1< -MSG2- client2 ESTABLISHED

这是否会阻止传入的新连接,但允许新的传出连接通过?

-A FORWARD -p tcp -m state --state NEW ! -s 192.168.1.0/24 -j DROP
-A FORWARD -p tcp -m state --state ESTABLISHED ! -s 192.168.1.0/24 -j DROP
-A FORWARD -p tcp -m state --state NEW,ESTABLISHED -s 192.168.1.0/24 -j ACCEPT

2 个答案:

答案 0 :(得分:0)

我没有测试UDP,但是一旦发送了SYN数据包就连接了TCP,连接就变成了ESTABLISHED所以

client1 -SYN-> client2新
client1< -SYN-ACK-client2 ESTABLISHED

答案 1 :(得分:0)

client1 -SYN-> client2 NEW
client1 <-SYN,ACK- client2 ESTABLISH
client1 -ACK-> client2 ESTABLISHED

当SYN,ACK,它应该是ESTABLISHED状态时要小心,如果它是SYN,ACK并且它是一个新连接,它通常是攻击。

你也应该添加RELATED状态。

好吧,如果您当前的机器的IP为192.168.1.0/24,则在创建传出连接时将被阻止

我的建议是这样的:

$IPTABLES -A INPUT -p tcp -s 192.168.1.0/24 --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset 
$IPTABLES -A INPUT -p tcp -s 192.168.1.0/24 ! --syn -m state --state NEW -j DROP
$IPTABLES -A allowed -p TCP -s 192.168.1.0/24 --syn -j ACCEPT
$IPTABLES -A allowed -p TCP -s 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A allowed -p TCP -s 192.168.1.0/24 -j DROP