保證Linux系統安全之使用iptables工具管理防火牆

隨着企業中使用Linux系統的增加,保證Linux系統安全成爲運維人員的必備技能之一。

Linux系統本身有很強大的防護措施:防火牆。那麼如何管理防火牆就成爲重中之重。

隨着CentOS 7、CentOS 8的出現,越來越多的人喜歡使用firewalld工具來管理防火牆。因爲它不僅可以通過命令行設置,也可以通過圖形化設置。關於使用firewalld工具管理Linux防火牆,可參考保證Linux系統安全之使用firewalld工具管理防火牆

下面我們主要介紹iptables工具管理防火牆。

本人第一次聽說iptables工具時,什麼四表五鏈的,明天愁的頭都大了。但是經過不斷的上網閱讀資料。發現iptables工具,其實也是很難。也是很容易掌握的。有的初學者朋友可能會有疑問,既然現在就可以使用firewalld工具管理防火牆,那我也沒有必要學習iptables工具了。記住一句話:兩者各有各的好處,誰都不可能替代誰。

iptables概述:

提到iptables,那麼就不得不說一下四表五鏈、執行的動作。

四表分別是:

  • raw:高級功能,如:網址過濾;
  • mangle:數據包修改(QOS),用於實現服務質量;
  • net:地址轉換,用於網關路由器;
  • filter:包過濾,用於防火牆規則;

五鏈分別是:

  • INPUT鏈:處理輸入數據包;
  • OUTPUT鏈:處理輸出數據包;
  • PORWARD鏈:處理轉發數據包;
  • PREROUTING鏈:用於目標地址轉換(DNAT);
  • POSTOUTING鏈:用於源地址轉換(SNAT);

執行的動作分別是:

  • accept:接收數據包;
  • DROP:丟棄數據包;
  • REDIRECT:重定向、映射、透明代理;
  • SNAT:源地址轉換;
  • DNAT:目標地址轉換;
  • MASQUERADE:IP僞裝(NAT),用於ADSL;
  • LOG:日誌記錄;

iptables命令常用的選項有:

  • -t<表>:指定要操縱的表;
  • -A:向規則鏈中添加條目;
  • -D:從規則鏈中刪除條目;
  • -i:向規則鏈中插入條目;
  • -R:替換規則鏈中的條目;
  • -L:顯示規則鏈中已有的條目;
  • -F:清楚規則鏈中已有的條目;
  • -Z:清空規則鏈中的數據包計算器和字節計數器;
  • -N:創建新的用戶自定義規則鏈;
  • -P:定義規則鏈中的默認目標;
  • -h:顯示幫助信息;
  • -p:指定要匹配的數據包協議類型;
  • -s:指定要匹配的數據包源ip地址;
  • -j<目標>:指定要跳轉的目標;
  • -i<網絡接口>:指定數據包進入本機的網絡接口;
  • -o<網絡接口>:指定數據包要離開本機所使用的網絡接口;

iptables命令選項輸入順序:

iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動作

iptables命令示例:

[root@localhost ~]#iptables -F               // 清空所有的防火牆規則
[root@localhost ~]#iptables -F INPUT    //清空指定鏈 INPUT 上面的所有規則
[root@localhost ~]#iptables -X               // 刪除用戶自定義的空鏈
[root@localhost ~]#iptables -Z               //清空計數
[root@localhost ~]#iptables -P INPUT DROP              //配置默認的不讓進
[root@localhost ~]#iptables -P FORWARD DROP        //默認的不允許轉發
[root@localhost ~]#iptables -P OUTPUT ACCEPT        //默認的可以出去
將INPUT規則鏈設置爲只允許指定網段的主機訪問本機的22端口,拒絕來自其他所有主機的流量:
[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -p tcp  --dport 22 -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
[root@localhost ~]# iptables-save                //保存配置
如果我只允許192.168.1.100和192.168.1.110 的PING命令,應該怎麼添加
[root@localhost ~]# iptables -I INPUT -s 192.168.1.110 -p icmp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 192.168.1.100 -p icmp -j ACCEPT
[root@localhost ~]# iptables -A INPUT -p icmp -j DROP
如果我只允許192.168.1.0/24網段的,但拒絕192.168.1.100和192.168.1.110 的PING命令,應該怎麼添加
[root@localhost ~]# iptables -I INPUT -s 192.168.1.0/24 -p icmp -j ACCEPT
[root@localhost ~]# iptables -I INPUT -s 192.168.1.100 -p icmp -j DROP 
[root@localhost ~]# iptables -I INPUT -s 192.168.1.110 -p icmp -j DROP
向INPUT規則鏈中添加拒絕所有人訪問本機12345端口的策略規則
[root@localhost ~]# iptables -I INPUT -p tcp --dport 12345  -j REJECT
[root@localhost ~]# iptables -I INPUT -p UDP --dport 12345  -j REJECT
向INPUT規則鏈中添加拒絕所有主機訪問本機1000~1024端口的策略規則
[root@localhost ~]# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
[root@localhost ~]# iptables -A INPUT -p UDp --dport 1000:1024 -j REJECT

注意:iptables工具檢查策略時按照:從上到下,找到即停,如果沒有找到則執行默認的策略!所以在添加規則時,應注意策略的添加順序!

由於時間原因,並不是介紹的很詳細,有什麼疑問,可以參考iptables工具詳細介紹

———————— 本文至此結束,感謝閱讀 ————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章