0

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

“新的意思是数据包已经开始了一个新的连接,或者与一个在两个方向上都没有看到数据包的连接相关联”手册页

NEW 是否跟踪握手?如在

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

-或者-

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

用于 UDP

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

-或者-

client1 -MSG1-> client2 NEW
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
4

2 回答 2

0

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

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

于 2013-04-08T02:12:54.663 回答
0
client1 -SYN-> client2 NEW
client1 <-SYN,ACK- client2 ESTABLISH
client1 -ACK-> client2 ESTABLISHED

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

你也应该添加 RELATED 状态。

好吧,如果你当前的机器有 192.168.1.0/24 的 ip,它会在创建传出连接时被阻止

我的建议是这样的:

$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
于 2014-09-17T11:20:37.313 回答