首頁 > 軟體

Linux管理員應該了解的20條IPTables防火牆規則用法

2020-06-16 17:45:43

管理網路流量是系統管理員必需處理的最棘手工作之一,我們必需規定連線系統的使用者滿足防火牆的傳入和傳出要求,以最大限度保證系統免受攻擊。

很多使用者把 Linux 中的 IPTables 當成一個防火牆,從嚴格意見上來說 IPTables 只是能夠幫助管理員定義各種規則並與 Linux Kernel 進行溝通的一個命令列工具。它只是幫助管理員設定網路流量的傳入、傳出規則列表,具體的實現其實是在 Linux 核心當中。

IPTables 包括一組內建和由使用者定義規則的「鏈」,管理員可以在「鏈」上附加各種封包處理規則。

  • FILTER 預設過濾表,內建的鏈有:
    • INPUT:處理流入原生的封包
    • FORWARD:處理通過系統路由的封包
    • OUTPUT:處理本地流出的封包
  • NAT 實現網路地址轉換的表,內建的鏈有:
    • PREROUTING:處理即將接收的封包
    • OUTPUT:處理本地產生的封包
    • POSTROUTING:處理即將傳出的封包
  • MANGLE 此表用於改變封包,共 5 條鏈:
    • PREROUTING:處理傳入連線
    • OUTPUT:處理本地生成的封包
    • INPUT:處理報文
    • POSTROUTING:處理即將傳出封包
    • FORWARD:處理通過本機轉發的封包

接下來我們將由簡入難介紹 25 條 Linux 管理員最常會用到的 IPTables 規則。

1、啟動、停止和重新啟動IPTables

雖然 IPTables 並不是一項服務,但在 Linux 中還是可以像服務一樣對其狀態進行管理。

基於SystemD的系統
systemctl start iptables
systemctl stop iptables
systemctl restart iptables

基於SysVinit的系統
/etc/init.d/iptables start
/etc/init.d/iptables stop
/etc/init.d/iptables restart

2、檢視IPtables防火牆策略

你可以使用如下命令來檢視 IPtables 防火牆策略:
iptables -L -n -v

以上命令應該返回資料下圖的輸出:

以上命令是檢視預設的 FILTER 表,如果你只希望檢視特定的表,可以在 -t 引數後跟上要單獨檢視的表名。例如只檢視 NAT 表中的規則,可以使用如下命令:
iptables -t nat -L -v –n

更多iptables相關教學見以下內容

CentOS 7.0關閉預設防火牆啟用iptables防火牆  http://www.linuxidc.com/Linux/2015-05/117473.htm

iptables使用範例詳解 http://www.linuxidc.com/Linux/2014-03/99159.htm

Linux防火牆iptables詳細教學 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables的備份、恢復及防火牆指令碼的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm

Linux下iptables防火牆設定 http://www.linuxidc.com/Linux/2015-10/123843.htm

3、遮蔽某個IP地址

如果你發布有某個 IP 向伺服器匯入攻擊或非正常流量,可以使用如下規則遮蔽其 IP 地址:
iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP

注意需要將上述的 XXX 改成要遮蔽的實際 IP 地址,其中的 -A 參數列示在 INPUT 鏈的最後追加本條規則。(IPTables 中的規則是從上到下匹配的,一旦匹配成功就不再繼續往下匹配)

如果你只想遮蔽 TCP 流量,可以使用 -p 引數的指定協定,例如:
iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP

4、解封某個IP地址

要解封對 IP 地址的遮蔽,可以使用如下命令進行刪除:
iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP

其中 -D 參數列示從鏈中刪除一條或多條規則。

5、使用IPtables關閉特定埠

很多時候,我們需要阻止某個特定埠的網路連線,可以使用 IPtables 關閉特定埠。

阻止特定的傳出連線:
iptables -A OUTPUT -p tcp --dport xxx -j DROP

阻止特定的傳入連線:
iptables -A INPUT -p tcp --dport xxx -j ACCEPT

6、使用Multiport控制多埠

使用 multiport 我們可以一次性在單條規則中寫入多個埠,例如:
iptables -A INPUT  -p tcp -m multiport --dports 22,80,443 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT

7、在規則中使用 IP 地址範圍

在 IPtables 中 IP 地址範圍是可以直接使用 CIDR 進行表示的,例如:
iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT

8、設定埠轉發

有時我們需要將 Linux 伺服器的某個服務流量轉發到另一埠,此時可以使用如下命令:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525

上述命令會將所有到達 eth0 網絡卡 25 埠的流量重定向轉發到 2525 埠。

9、遮蔽HTTP服務Flood攻擊

有時會有使用者在某個服務,例如 HTTP 80 上發起大量連線請求,此時我們可以啟用如下規則:
iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/minute --limit-burst 200 -j ACCEPT

上述命令會將連線限制到每分鐘 100 個,上限設定為 200。

10、禁止PING

對 Linux 禁 PING 可以使用如下規則遮蔽 ICMP 傳入連線:
iptables -A INPUT -p icmp -i eth0 -j DROP

11、允許存取回環網絡卡

環回存取(127.0.0.1)是比較重要的,建議大家都開放:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

12、遮蔽指定MAC地址

使用如下規則可以遮蔽指定的 MAC 地址:
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:00 -j DROP

13、限制並行連線數

如果你不希望來自特定埠的過多並行連線,可以使用如下規則:
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

以上規則限制每用戶端不超過 3 個連線。

更多詳情見請繼續閱讀下一頁的精彩內容http://www.linuxidc.com/Linux/2016-03/128920p2.htm


IT145.com E-mail:sddin#qq.com