CentOS 7 firewalld使用簡介

醬油能發表於2018-03-07

學習apache安裝的時候需要開啟80埠,由於centos 7 版本以後預設使用 firewalld後,網上關於iptables的設定方法已經不管用了,想著反正iptable也不會用,索性直接搬官方文件,學習 firewalld了,好像比iptables要簡單點了。

1. firewalld簡介

firewalld是centos7的一大特性,最大的好處有兩個:支援動態更新,不用重啟服務;第二個就是加入了防火牆的zone概念

firewalld有圖形介面和工具介面,由於我在伺服器上使用,圖形介面請參照官方文件,本文以字元介面做介紹。

1.1. firewall-cmd工具

firewalld的字元介面管理工具是 firewall-cmd

firewalld預設配置檔案有兩個:/usr/lib/firewalld/ (系統配置,儘量不要修改)和 /etc/firewalld/ (使用者配置地址)

1.2. zone的概念

硬體防火牆預設一般有三個區,firewalld引入這一概念系統預設存在以下區域(根據文件自己理解,如果有誤請指正):

  • drop:預設丟棄所有包
  • block:拒絕所有外部連線,允許內部發起的連線
  • public:指定外部連線可以進入
  • external:這個不太明白,功能上和上面相同,允許指定的外部連線
  • dmz:和硬體防火牆一樣,受限制的公共連線可以進入
  • work:工作區,概念和workgoup一樣,也是指定的外部連線允許
  • home:類似家庭組
  • internal:信任所有連線

對防火牆不算太熟悉,還沒想明白public、external、dmz、work、home從功能上都需要自定義允許連線,具體使用上的區別還需高人指點

2. 安裝firewalld

一般情況下,CentOS7已經安裝好了firewalld的。

# root執行
$ yum install firewalld firewall-config

3. 執行、停止、禁用firewalld

  • 啟動:systemctl start firewalld
  • 檢視狀態:systemctl status firewalld 或者 firewall-cmd --state
  • 停止:systemctl disable firewalld
  • 禁用:systemctl stop firewalld

4. 配置firewalld

  • 檢視版本:firewall-cmd --version
  • 檢視幫助:firewall-cmd --help
  • 檢視設定:
    • 顯示狀態:firewall-cmd --state
    • 檢視區域資訊: firewall-cmd --get-active-zones
    • 檢視指定介面所屬區域:firewall-cmd --get-zone-of-interface=eth0
  • 拒絕所有包:firewall-cmd --panic-on
  • 取消拒絕狀態:firewall-cmd --panic-off
  • 檢視是否拒絕:firewall-cmd --query-panic
  • 更新防火牆規則:

    firewall-cmd --reloadfirewall-cmd --complete-reload

    兩者的區別就是第一個無需斷開連線,就是firewalld特性之一動態新增規則,第二個需要斷開連線,類似重啟服務

  • 將介面新增到區域,預設介面都在public

    firewall-cmd --zone=public --add-interface=eth0

    永久生效再加上 --permanent 然後reload防火牆

  • 設定預設介面區域

    firewall-cmd --set-default-zone=public

    立即生效無需重啟

  • 開啟埠(貌似這個才最常用)

    • 檢視所有開啟的埠:

      firewall-cmd --zone=dmz --list-ports

    • 加入一個埠到區域:

      firewall-cmd --zone=dmz --add-port=8080/tcp

      若要永久生效方法同上

  • 開啟一個服務

    類似於將埠視覺化,服務需要在配置檔案中新增,/etc/firewalld 目錄下有services資料夾,這個不詳細說了,詳情參考文件

    firewall-cmd --zone=work --add-service=smtp

  • 移除服務

    firewall-cmd --zone=work --remove-service=smtp

還有埠轉發功能、自定義複雜規則功能、lockdown,由於還沒用到,以後再學習。

參考資料

  1. CentOS 7 firewalld使用簡介
  2. 官方文件地址
  3. http://www.firewalld.org/
一、介紹
CentOS 7 預設沒有使用iptables,所以通過編輯iptables的配置檔案來開啟80埠是不可以的,

防火牆守護 firewalld 服務引入了一個信任級別的概念來管理與之相關聯的連線與介面。它支援 ipv4 與 ipv6,並支援網橋,採用 firewall-cmd (command) 或 firewall-config (gui) 來動態的管理 kernel netfilter 的臨時或永久的介面規則,並實時生效而無需重啟服務。

CentOS 7 採用了 firewalld 防火牆

1.如何查詢是否開啟6379埠:
[root@localhost ~]# firewall-cmd --query-port=6379/tcp
no
注:no 表示埠沒有開啟。

2.開啟6379埠:
[root@localhost ~]# firewall-cmd --add-port=6379/tcp
success
注:success 表示開啟了6379埠。

相關文章