1. 程式人生 > >firewalld的9個zone,firewalld關於zone的操作,firewalld關於service的操作

firewalld的9個zone,firewalld關於zone的操作,firewalld關於service的操作

firewalld的9個zone

  • centOS7 開始,新的防火牆管理工具就是firewalld
  • 所以除了 iptables 也要熟悉 firewalld 的操作
  • 之前為了開啟iptables把firewalld服務關閉了
  • 現在需要關閉iptables服務,把firewalld服務開啟
  • 如圖,這是把iptables服務設定為關閉狀態,然後把正在執行的服務關閉
  • 如圖,這是把firewalld服務設定為開啟狀態,然後把firewalld服務開啟

  • 開啟firewalld後,使用命令 iptables -nvL 檢視資訊
  • 可以看到多了很多規則和其它資訊
  • 這就是firewalld自帶的資訊,之前iptables是沒有資訊的,需要自己新增
  • firewalld 自帶9個zone,每個zone是規則的集合
  • 如圖,firewall-cmd --get-zones 可以檢視所有的 zone 名稱
  • 可以看到,總共有九個單詞,每個單詞就是一個zone的名稱
  • 如圖,這條命令可以檢視預設的zone,預設的zone是public

firewalld關於zone的操作

  • 如圖,firewall-cmd --set-default-zone=work
  • 可以設定預設的zone
  • 這裡把預設zone設定為work,之前是public
  • 使用 firewall-cmd --get-default-zone 檢視預設zone
  • 可以看到,預設zone 已經變成 work了
  • 如圖,firewall-cmd --get-zone-of-interface=ens33
  • 可以檢視網絡卡 ens33 使用的 zone
  • 如圖,lo 網絡卡使用的 zone 是 no zone
  • 說明這塊網絡卡沒有使用任何zone
  • 假設新增了一塊網絡卡ens37,檢視該網絡卡使用的zone是 no zone
  • 首先應該複製ens33的配置檔案改名為ens37
  • 然後把內部ip等資訊配置好,然後重啟網路服務
  • 如圖,重啟firewalld服務,再看下ens37使用的zone資訊,是否還是no zone
  • 如果還是 no zone 狀態,可以考慮手動指定一個zone給網絡卡
  • 如圖,手動設定網絡卡使用的 zone,這裡設定ens37的zone為dmz
  • 然後檢視一下ens37的zone,可以看到,已經修改為 dmz
  • 如圖,這是修改網絡卡zone的命令,這是把ens37的zone修改為 block
  • 除了增加和修改zone之外,還可以刪除zone
  • 如圖,檢視預設zone 是 work
  • 然後 firewall-cmd --zone=block --remove-interface=ens37
  • 這是把 ens37 從block zone 裡面刪除了
  • 這樣ens37就不再使用block zone了,然後檢視ens37的zone
  • 可以看到是work,刪除ens37的zone以後,會自動使用預設的work zone
  • 如圖,firewall-cmd --get-active-zones 可以檢視所有網絡卡所在的zone
  • 可以看到,work zone 下面有 ens33,ens37兩塊網絡卡
  • public zone 下面有 lo 一塊網絡卡

firewalld關於service的操作

  • service 是 zone 下面的 子單元
  • 如圖,firewall-cmd --get-service 可以檢視系統所有的 service
  • 命令的 service 可以使用 service 或者 services
  • 如圖,firewall-cmd --list-services/service 可以檢視預設zone有什麼services
  • 如圖,firewall-cmd --zone=public --list-service
  • 可以指定檢視 public zone 裡面的 services
  • 如圖,檢視block和trusted,下面為空,說明沒有service在這兩個zone裡面執行
  • 如圖,firewall-cmd --zone=public --add-service=http
  • 這條命令可以在 public zone 新增 http service
  • 下面使用 --list-service 檢視,可以看到多了 http
  • 如圖,把 ftp service 也新增進入 public zone
  • list-service 檢視可以看到添加了 ftp
  • 但是這些改變都是發生在記憶體中的,如果想儲存到配置檔案裡面
  • 需要使用 --permanent 選項
  • firewall-cmd --zone=public --add-service=ftp --permanent
  • 可以把新增的 ftp service 資訊儲存到配置檔案
  • public zone 的配置檔案就是 /etc/firewalld/zones/public.xml
  • 可以看到,ftp的資訊已經寫入 public.xml 檔案裡面
  • 上圖是zone配置檔案模板的目錄
  • /etc/firewalld/zones/ 目錄下面除了新儲存的 public.xml 配置檔案外
  • 修改前的 public.xml 會加上 old 字尾作為一個備份
  • 每次修改儲存後,上一個版本的public.xml就會加上old作為備份
  • /etc/firewalld/services/ 目錄還沒有建立檔案,目前是空的
  • 不管是 /etc/firewalld/services/ 還是 /etc/firewalld/zones/ 目錄
  • 建立新檔案都會使用模板檔案來建立
  • ls /usr/lib/firewalld/zones/ 可以看到目錄下面有9個zone的模板檔案
  • /etc/firewalld/zones/目錄建立檔案就會從這9個模板檔案裡面選擇
  • ls /usr/lib/firewalld/services/ 可以看到下面有很多 xml字尾的模板檔案
  • /etc/firewalld/services/ 目錄建立檔案也會從這些模板裡面選擇

  • 現在做一個案例
  • 案例要求把 ftp服務的埠修改為 1121 ,並把ftp服務放到work zone 下放行
  • 首先,從模板目錄把 /usr/lib/firewalld/services/ftp.xml 檔案模板複製到
  • /etc/firewalld/services/ 目錄,這是firewalld服務執行時載入配置檔案的目錄
  • 然後 vi /etc/firewalld/services/ftp.xml 檔案
  • 如圖,找到這一行把 port的值修改為 1121,port="1121",然後儲存退出
  • 如圖,把 work zone 的模板檔案 work.xml 複製到 zones 目錄裡面
  • 然後 vim work.xml 編輯該模板檔案
  • 如圖,新增這一行 <service name="ftp" /> 然後儲存退出
  • 編輯完配置檔案,需要重新載入一下配置檔案
  • 如圖, firewall-cmd --reload 就可以重新載入配置檔案
  • 然後再 --list-service 檢視 work zone 的 services
  • 可以看到,多了 ftp 服務
  • 所以,如果想放行某個service,在zone配置檔案裡面加入這個service就