Linux firewalld 防火牆

Linux firewalld 防火牆安全

 簡介服務器

  RHEL 7 系統中集成了多款防火牆管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系統的動態防火牆管理器)服務是默認的防火牆配置管理工具,它擁有基於 CLI(命令行界面)和基於 GUI(圖形用戶界面)的兩種管理方式。網絡

  相較於傳統的防火牆管理配置工具,firewalld 支持動態更新技術並加入了區域(zone)的概念。簡單來講,區域就是 firewalld 預先準備了幾套防火牆策略集合(策略模板),用戶能夠根據生產場景的不一樣而選擇合適的策略集合,從而實現防火牆策略之間的快速切換。ssh

  例如:咱們有一臺筆記本電腦,天天都要在辦公室、咖啡廳和家裏使用。按常理來說,這三者的安全性按照由高到低的順序來排列,應該是家庭、公司辦公室、咖啡廳。當前,咱們但願爲這檯筆記本電腦指定以下防火牆策略規則:在家中容許訪問全部服務;在辦公室內僅容許訪問文件共享服務;在咖啡廳僅容許上網瀏覽。在以往,咱們須要頻繁地手動設置防火牆策略規則,而如今只須要預設好區域集合,而後只需輕點鼠標就能夠自動切換了,從而極大地提高了防火牆策略的應用效率。firewalld 中常見的區域名稱(默認爲 public)以及相應的策略規則。tcp

 

firewalld 中經常使用的區域名稱及策略規則
區域     默認策略規則
trusted   容許全部的數據包
home 拒絕流入的流量,除非與流出的流量相關;而若是流量與 ssh、mdns、ipp-client、amba-client 與 dhcpv6-client 服務相關,則容許流量
internal 等同於 home 區域
work 拒絕流入的流量,除非與流出的流量數相關;而若是流量與 ssh、ipp-client 與 dhcv6-client 服務相關則容許流量
public 拒絕流入的流量,除非與流出的流量相關;而若是流量與 ssh、dhcpv6-client 服務 相關則容許流量
external 拒絕流入的流量,除非與流出的流量相關;而若是流量與 ssh 服務相關,則容許流量
dmz 拒絕流入的流量,除非與流出的流量相關;而若是流量與 ssh 服務相關,則容許流量
block 拒絕流入的流量,除非與流出的流量相關
drop 拒絕流入的流量,除非與流出的流量相關

 


 

終端管理工具 firewall-cmd工具

firewall-cmd 是 firewalld 防火牆配置管理工具的 CLI(命令行界面)版本。它的參數通常都是以「長格式」來提供。spa

firewall-cmd 命令中使用的參數以及做用
參數 做用
--get-default-zone 查詢默認的區域名稱
--set-default-zone=<區域名稱> 設置默認的區域,使其永久生效
--get-zones 顯示可用的區域
--get-services 顯示預先定義的服務
--get-active-zones 顯示當前正在使用的區域與網卡名稱
--add-source= 將源自此 IP 或子網的流量導向指定的區域
--remove-source= 再也不將源自此 IP 或子網的流量導向某個指定區域
--add-interface=<網卡名稱> 將源自該網卡的全部流量都導向某個指定區域
--change-interface=<網卡名稱> 將某個網卡與區域進行關聯
--list-all 顯示當前區域的網卡配置參數、資源、端口以及服務等信息
--list-all-zones 顯示全部區域的網卡配置參數、資源、端口以及服務等信息
--add-service=<服務名> 設置默認區域容許該服務的流量
--add-port=<端口號/協議> 設置默認區域容許該端口的流量
--remove-service=<服務名> 設置默認區域再也不容許該服務的流量
--remove-port=<端口號/協議> 設置默認區域再也不容許該端口的流量
--reload 讓「永久生效」的配置規則當即生效,並覆蓋當前的配置規則
--panic-on 開啓應急情況模式
--panic-off 關閉應急情況模式

 


 

知識點命令行

  與 Linux 系統中其餘的防火牆策略配置工具同樣,使用 firewalld 配置的防火牆策略默認爲運行時(Runtime)模式,又稱爲當前生效模式,並且隨着系統的重啓會失效。若是想讓配置策略一直存在,就須要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正常設置防火牆策略時添加--permanent 參數,這樣配置的防火牆策略就能夠永久生效了。可是,永久生效模式有一個「不近人情」的特色,就是使用它設置的策略只有在系統重啓以後才能自動生效。若是想讓配置的策略當即生效,須要手動執行 firewall-cmd --reload 命令。dns

注意:Runtime 模式與 Permanent 模式。若是不關注這個細節,就算是正確配置了防火牆策略,也可能沒法達到預期的效果。ip

 

使用


查詢操做


  • # 查看當前所使用的區域
  • firewall-cmd --get-default-zone

  • # 查看指定網卡在firewalld服務中的區域
  • firewall-cmd --get-zone-of-interface=網卡名

  • # 查詢指定服務在指定區域下當前是否容許請求服務協議的流量
  • firewall-cmd --zone=區域 --query-service=服務名

  • # 查看指定服務在指定區域下當前的端口全部狀態
  • firewall-cmd --zone=區域 --list-ports

  • # 查看指定區域下當前全部狀態
  • firewall-cmd --zone=區域 --list-all

配置策略


  • # 修改指定網卡內使用的永久模式區域、系統重啓後生效
  • firewall-cmd --permanent --zone=區域 --change-interface=網卡名稱

  • # 修改當前區域修改爲指定區域
  • firewall-cmd --set-default-zone=區域

  • # 修改指定服務在指定區域下當前容許協議流量訪問、當即生效、重啓後失效
  • firewall-cmd --zone=區域 --add-service=服務名

  • # 修改指定服務在指定區域下永久容許協議流量訪問、重啓後生效
  • firewall-cmd --permanent --zone=區域 --add-service=服務名

  •  # 修改指定服務再指定區域下當前拒絕協議流量訪問、當即生效、重啓後失效
  • firewall-cmd --zone=區域 --remove-service=服務名

  • # 修改指定服務再指定區域下永久拒絕協議流量訪問、重啓生效
  • firewall-cmd --permanent --zone=區域 --remove-service=服務名

  • # 容許指定端口再指定區域下當前容許訪問、當即生效
  • firewall-cmd --zone=區域 --add-port=端口號/tcp

  • # 容許指定端口再指定區域下永久容許訪問、重啓生效
  • firewall-cmd --permanent --zone=區域 --add-port=端口號/tcp

  • # 把訪問指定源端口再指定區域下臨時轉發到指定目標端口、當即生效
  • firewall-cmd --zone=區域 --add-forward-port=port=源端口:proto=tcp:toport=目標端口:toaddr=目標IP地址

  • # 把訪問指定源端口再指定區域下永久轉發到指定目標端口、重啓生效
  • firewall-cmd --permanent --zone=區域 --add-forward-port=port=源端口:proto=tcp:toport=目標端口:toaddr=目標IP地址

  •  # 把指定源端口再指定區域下臨時轉發到目標網段端口、當即生效
  • firewall-cmd --zone=區域 --add-rich-rule 'rule family="ipv4" source address="網段/掩碼位" forward-port port="源端口" protocol="tcp" to-port="目標端口"'

  • # 把指定源端口再指定區域下永久轉發到目標網段端口、重啓生效
  • firewall-cmd --permanent --zone=區域 --add-rich-rule 'rule family="ipv4" source address="網段/掩碼位" forward-port port="源端口" protocol="tcp" to-port="目標端口"'

  • # 指定區域下臨時禁用指定IP地址的訪問、accept 爲容許
  • firewall-cmd --zone=區域 --add-rich-rule='rule family=ipv4 source address="IP地址" reject'

  • # 指定區域下永久禁用指定IP地址的訪問、重啓生效、accept 爲容許
  • firewall-cmd --permanent --zone=區域 --add-rich-rule='rule family="ipv4" source address="IP地址" reject'

  • # 指定區域下指定服務臨時拒絕一個網段訪問、適用於單個IP、accept 爲容許
  • firewall-cmd --zone=區域 --add-rich-rule="rule family="ipv4" source address="網段/掩碼位" service name="服務名" reject"

  • # 指定區域下指定服務永久拒絕一個網段訪問、重啓生效、適用於單個IP、accept 爲容許
  • firewall-cmd --permanent --zone=區域 --add-rich-rule="rule family="ipv4" source address="網段/掩碼位" service name="服務名" reject"

  • # 指定區域下指定端口臨時拒絕一個網段訪問、適用於單個IP、accept 爲容許
  • firewall-cmd --zone=區域 --add-rich-rule="rule family="ipv4" source address="網段/掩碼位" port protocol="tcp" port="端口號" reject"

  • # 指定區域下指定端口永久拒絕一個網段訪問、重啓生效、適用於單個IP、accept 爲容許
  • firewall-cmd --permanent --zone=區域 --add-rich-rule="rule family="ipv4" source address="網段/掩碼位" port protocol="tcp" port="端口號" reject"

其餘操做


  •  # 啓動/關閉 firewalld 防火牆服務的應急情況模式,阻斷一切網絡鏈接(當遠程控制服務器時請慎用)
  • firewall-cmd --panic-on
  • firewall-cmd --panic-off

  • # 保存設置、可當即生效permanent配置
  • firewall-cmd --reload

  • # 刪除操做、將參數籤的 add 改成 remove
  • firewall-cmd .. --zone=區域 --remove-..  

 

其餘知識


REJECT 與 DROP

一、REJECT動做會返回一個拒絕(終止)數據包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明確的拒絕對方的鏈接動做。

二、DROP動做只是簡單的直接丟棄數據,並不反饋任何迴應。須要Client等待超時,Client容易發現本身被防火牆所阻擋。

相關文章
相關標籤/搜索