我试图阻止外部网络为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
答案 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