[精讚] [會員登入]
21593

[Centos7] 新的防火牆firewalld

Centos7新的防火牆firewalld 和前面的iptables有很大的不同

分享此文連結 //n.sfs.tw/10384

分享連結 [Centos7] 新的防火牆firewalld @新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2024-04-15 13:09:20 最後編修
2016-12-06 15:45:37 By 張○○
 

自動目錄

什麼?我在新裝的Centos7中竟然沒有找到iptables以及ip6tables,我直覺的想:應該是要自己安裝吧。不過事實上,我發現開的通訊埠都連不上,以為是selinux的問題,結果才知道,Centos7的防火牆是我好像聽過事實上是沒聽過的firewalld (呃,取這個名字?會不會太貼切了~~)

系統

CentOS Linux release 7.0.1406 (Core)

firewalld執行指令

啟動
# service firewalld start

停止
# service firewalld stop

重新啟動
# service firewalld restart

重讀設定
# firewall-cmd --reload

查看狀態
# service firewalld status

# firewall-cmd --state

程式設定

目錄 /etc/firewalld
設定檔 /etc/firewalld/firewalld.conf

防火牆基礎操作

畢竟他是一個防火牆,所以他引入了防火牆的zone的觀念,一看到就能瞭,一個zone可以有規則,zone到zone也可以有規則。

預設是一個叫 public的 zone,就是外面進到伺服器的zone,如果伺服器很單純對外服務不當路由器的話,這個zone就夠了。

操作這個防火牆如果有圖形介面直接在選單中點選防火牆就好了,圖形化易學易懂較沒問題,指令的話主要是用firewall-cmd 這個指令。

查看zone
# firewall-cmd --get-default-zone
public

查看運作中的zone和zone裡的介面
# firewall-cmd --get-active-zones
public
  interfaces: ens192

可以看到ens192這個介面是在public 這個zone中。

查看所有的zone
# firewall-cmd --get-zones

新增zone
# firewall-cmd --set-default-zone=home

查看此zone=public所開的服務
# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:


在public zone新增80TCP的服務
# firewall-cmd --zone=public --add-port=80/tcp

移除在public zone上80埠的所有服務 tcp/udp
# firewall-cmd --zone=public --remove-port=80

移除在public zone上5144埠的udp服務 5144/udp
# firewall-cmd --zone=public --remove-port=5144/udp

上面移除新增port(或服務)是整個zone都生效(一個zone可以由很多interfaces組成),我們可以指定來源:

# firewall-cmd --zone=public  --add-source=163.17.40.0/24
# firewall-cmd --zone=public  --remove-source=163.17.40.0/24

複雜的限定

這樣是所有的服務都套用這個來源,如果要限定單一服務的來源,可以使用他的rich rules:

列出所有rich-rules
# firewall-cmd --zone=public --list-rich-rules
<預設是沒有>

新增接受限制40.0可以讀取 28001埠
# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="163.17.40.0/24" port port="28001" protocol="tcp" accept'

查看設定結果
# firewall-cmd  --zone=public --list-all
public (default, active)
  interfaces: ens192
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

        rule family="ipv4" source address="163.17.40.0/24" port port="28001" protocol="tcp" accept

這樣子就開通了40.0/24連往這台機器的規則。

但是這樣子設定只是runtime的環境有用,一設定下去就生效,不需要重啟和重讀;

移除,得要完整的寫才有用,請把 --list-all 顯示出來的 rich rules整行貼上
# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.56.0/24" port port="3306" protocol="tcp" accept'

當 firewalld重啟或重讀時,剛才加的設定就不見了,所以上面的操作要全部加上--permanent,讓它變成永久的設定

防火牆永久的設定

操作要全部加上--permanent,讓它變成永久的設定,runtime和永久的設定的不同,在firewalld重啟或重讀時,firewalld才會把永久的規則寫到runtime來用。

所以,永久的設定一定重啟或重讀才會生效。

查看永久的設定
# firewall-cmd --zone=public --list-all --permanent

查看runtime的設定(少了--permanent)
# firewall-cmd --zone=public --list-all

新增在public zone上53埠的udp服務 53/udp
# firewall-cmd --zone=public --add-port=53/udp --permanent

要觀察永遠設定的rule時,切記加上 --permanent

參考資料

[1] 香港網頁開發日誌 安裝 CentOS 7 後必做的七件事

[2] https://www.certdepot.net/rhel7-get-started-firewalld/


原文 2014-11-14 15:29:20

END

你可能感興趣的文章

[Linux] 安裝rsync (selinux 的設定) 在selinux enforcing 的情況下安裝rsync

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

[Centos7 8] postfix+DKIM 設定 信件總是被退?希望別的mail server相信我寄出的信?那麼你可以設定dkim。

[Rocky9] LetsEncrypt + nginx + docker 使用 certbot container 配合 nginx 來設製HTTPS.

[Centos8] 利用nmcli 設定ipv4 位址 Centos7之後修改網路設定變得比較麻煩一點,此篇介紹使用nmcli指令的方法

使用dnstop 來觀察dns運作的情形 dnstop是非常方便的工具,可以觀察即時的dns查詢。 安裝 yum install dnstop

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

UTF8中文字/全形一覽 快速查詢urf-8的中文字,共計13246中文字(5401常用字+7652罕用字+日文或編號),292全形符號,27半形符號。

[PHP] 檢查檔案是否是圖檔 使用getimagesize函數檢查檔案是否是圖檔

精讚的版面變化 ▓此文僅作為舊文的記錄▓ 這篇文章為了紀念改版完成而撰寫。 原本的部落格是民國97年的作品,那時還是用舊有的技術來寫,很

[大型機台] 熱血高校躲避球 多少少年時光歲月耗在這個遊戲上,二十幾年前的那個時光,唯一想做的事就是把吃飯錢省下來拿去打一場五塊錢的電動,就算是沒錢也