2017-02-23 260 views
-2

我有一個服務監聽eth1的端口80和443上的客戶流量。託管我的服務的服務器還在eth0和localhost上託管其他管理員/特權訪問內容IPTable規則來限制eth1訪問端口80和443

我試圖設置iptable規則來鎖定與客戶端位於同一網絡上的服務器上的eth1(通過eth1阻塞諸如ssh之類的東西/訪問在端口9904上運行的內部服務等)我也想確保規則不禁止經常訪問eth1:80和eth1:443。我已經提出了以下規則,但希望與iptable高手一起回顧關於此規則可能存在的問題。

-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -i eth1 -j DROP 
  • 執行上述規則足矣
  • 如何上面從找到的規則不同,谷歌搜索
-P INPUT ACCEPT 
-P FORWARD ACCEPT 
-P OUTPUT ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 80 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --dport 443 -j ACCEPT 
-A INPUT -i eth1 -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j DROP 
-A INPUT -i eth1 -p tcp -j ACCEPT 
-A INPUT -i eth1 -j DROP 
+0

Stackoverflow用於編程問題。你會在serverfault.com找到iptable的大師 – Prabhu

+0

謝謝我得到了這個答案在http://serverfault.com/questions/834534/iptable-rules-to-restrict-eth1-access-to-ports-80-and-443可能有同樣問題的人 – dejavu013

回答

0

感謝我得到這個回答https://serverfault.com/questions/834534/iptable-rules-to-restrict-eth1-access-to-ports-80-and-443時,將它添加此處爲完整性

第一組規則首先允許您的端口 80和443上的所有傳入數據包。然後,它會丟棄所有其他傳入數據包(除了那些已被接受的數據包)。

第二組規則允許第一端口80 和443的所有傳入的數據包然後降至傳入的連接(不包括80和443 已接受),這與僅設置了SYN標誌的數據包。 然後它允許所有傳入的數據包。

這裏的區別是你的OUTGOING連接會發生什麼。在第一個規則集 中,如果您嘗試連接到另一個服務器,則服務器發送迴應的任何 數據包將被丟棄,因此 將不會收到任何數據。在第二種情況下,這些數據包將被 因爲來自遠程服務器的第一個分組允許將具有兩個 SYN和ACK集,因此通過SYN測試,以及任何後續 分組將不具有SYN集在所有,並且因此通過考試。

這已使用的跟蹤連接這就需要 內核保持防火牆的每個連接的軌道被傳統做,有 命令狀

-A INPUT -m跟蹤連接--ctstate ESTABLISHED,RELATED -j ACCEPT

將傳入數據包與現有連接匹配,或與某個其他現有連接(例如FTP數據連接)相關的連接。如果你沒有使用FTP或使用 多個隨機端口的其他協議,則第二個規則集基本上達到 相同的結果,而不跟蹤的開銷,並檢查這些 連接。