2013-04-07 65 views
0

我試圖阻止外部網絡啓動連接到我的內部網絡的TCP和UDP。我的想法是使用 - 狀態。我不確定不同國家的手冊頁是什麼意思。Iptables狀態

「新的含義,該數據包已經開始了新的連接,或以其他方式還沒有看到在兩個方向上的數據包的連接相關的」手冊頁

不新的軌道握手?如在

CLIENT 1 -SYN->客戶端2 NEW
CLIENT 1 < -SYN,ACK-客戶端2 NEW
CLIENT 1 -ACK->客戶端2 ESTABLISHED

- 或 -

客戶端1 -SYN->客戶端2 NEW
CLIENT 1 < -SYN,ACK-客戶端2 NEW
CLIENT 1 -ACK->客戶端2 NEW
CLIENT 1 < -DATA-客戶端2 ESTABLIS HED

爲UDP

CLIENT 1 -MSG1->客戶端2 NEW
CLIENT 1 < -MSG2-客戶端2 NEW
CLIENT 1 -MSG3->客戶端2 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 

回答

0

我沒有測試UDP但是對於TCP只要SYN數據包被髮送成爲既定所以連接

客戶端1 -SYN->客戶端2 NEW
客戶端1 < -SYN-ACK-客戶機程序ESTABLISHED

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

小心當SYN,ACK,它應建立狀態,如果是SYN,ACK,這是一個新的連接,這是正常的攻擊。

你也應該添加RELATED狀態。

$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 

好,如果你目前該機具有的192.168.1.0/24的IP,它會創建出站連接

我的建議是這樣的,當阻塞