iptables TCP 標誌

iptables TCP 標誌

我是 iptables 和網路的初學者,所以請原諒我提出這樣的初學者問題。

我在網路上找到了過濾畸形資料包的部分:

/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL SYN -m state --state NEW -j RETURN

但據我所知,第一個(新)封包應該包含 SYN 標誌,並且該規則將阻止新連線?或者我誤解了這一點?

應用以下規則後會發生什麼?

/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL RST,ACK,PSH,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL FIN,PSH,ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG
/usr/bin/sudo /sbin/iptables -A tcpchk -p tcp --tcp-flags ALL ACK,URG,FIN

如果我是對的那就沒有行動嗎? iptables 將檢查上面的標誌並直接轉到下一個規則,對嗎?

答案1

第二個範例沒有任何操作,因此除了累積統計資料之外什麼也不做。

iptables -xvn -L tcpchk

ALL SYN 匹配已建立的連接,並將已建立的連接踢出 tcpchk 鏈,並返回其父鏈(大概是 INPUT)。這-j 返回將資料包傳回給父級。

該規則不會導致故障,因為它實際上不會丟棄或拒絕任何東西。

相關內容