如何使用IPTables

對於希望保護Linux服務器安全的任何人來說,IPTables都是無價之寶。 它可以根據任意數量的標準,外部端口來阻止或接受數據包,並執行許多網絡分析任務。 這在防禦攻擊時特別有用,因為它可以基於子網和其他條件執行所有操作。 但是,這種靈活的實用程序由於是命令行實用程序,因此非常複雜且令人困惑。 幸運的是,通過一些基本示例,可以使它的許多“有用性”變得更易於訪問。

IPTables入門

默認情況下,該服務已安裝在大多數Linux發行版上。 但是,為方便起見,本教程假定您擁有運行最新版本的Ubuntu或CentOS的專用服務器或虛擬服務器。

教科書

讓我們逐步看一下可以使用該服務完成的一些任務示例。 這些命令使您感覺這是可能的,並且應該易於適應其他情況。

我們將從檢查防火牆的狀態開始。 該命令對於診斷問題非常有用,您可以使用它來確定哪些規則當前處於活動狀態,以及給定條目是否可能意外阻止流量。

iptables -L -nv

現在,在這種情況下,我們僅顯示防火牆規則的子集,僅顯示NAT鏈。

iptables -t nat -L -nv

IPTable通常可以啟動,停止或重新啟動。 如果流量路由嚴重混亂,並且您想在出現問題時關閉整個子系統以進行調試,則此功能特別有用。

service iptables start
service iptables stop
service iptables restart

如果防火牆完全損壞,則可以一次清除所有IPTables規則。 請注意,在某些情況下,這可能會破壞高級設置和連接重定向,但通常不會破壞任何內容,您沒有使用高級功能。 這是將其備份並重新啟動的好方法。

iptables -F

假設您已經找到了一套很好的規則,並希望保留它們。 重新啟動服務器後,它們將自動恢復。 在CentOS / Redhat下,輸入以下命令,規則將保存在/ etc / sysconfig / Iptables中。

service iptables save

此命令可與其他發行版一起使用,並且保留/ root / myrules規則:

iptables-save > /root/myrules

如果您的規則在啟動時未自動還原,請使用以下命令來還原它們。 在CentOS / Redhat上:

service iptables restart

在其他發行版中:

iptables-restore < /root/myrules

現在讓我們繼續創建特定類型的防火牆規則。 假設您要阻止來自10.01.10.1或10.01.10.0/24子網的所有流量。

iptables -A INPUT -s 10.10.10.1 -j DROP
iptables -A INPUT -s 10.10.10.0/24 -j DROP

現在,讓我們阻止所有傳入的SSH訪問。 請注意這一點,如果您已通過SSH連接,則會終止當前連接:

iptables -A INPUT -p tcp --dport 22 -j DROP

現在,我們將結合前面的兩個規則,阻止來自特定IP地址的SSH訪問:

iptables -A INPUT -s 10.0.10.1 -p tcp --dport 22 -j DROP

該命令的作用恰恰相反。 它允許SSH流量從遠程IP 10.01.10.1到本地IP 192.168.0.1。

iptables -A INPUT -s 10.10.10.1 -d 192.168.0.1 -p tcp --dport 22 -j ACCEPT

假設您需要為IP電話或遊戲流量打開一系列TCP端口。 此命令打開端口30000-50000。

iptables -A INPUT -p tcp --dport 30000:50000 -j ACCEPT

或者您想阻止所有ICMP數據包。 出於各種原因,不建議這樣做,但是以下命令顯示了如何執行此操作。

iptables –A INPUT –p icmp –icmp-type echo-request –j DROP

也許您想轉發港口? 您將端口1234轉發到端口80。用實際的網絡接口替換eth0。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 1234 -j REDIRECT --to-port 80

輸出量

儘管這些示例是特定的,但很容易修改細節以實現各種相關目標。 以上命令足以構建響應型防火牆。 如果本指南對您有所幫助,請與可能也有興趣的其他人分享。

Sidebar