心得:

在CentOS 7 下,Firewall 多了一個新工具(意味著需要新指令)

雖然可以停用,改用熟悉的 iptables 作為管理

但新的 Firewall 工具會出現自然有他的道理

目前感想,優點有Zone的概念、套用新規則不用中斷連線、指令比較簡明

詳細介紹兩者的文章:

https://www.unixmen.com/iptables-vs-firewalld/

啟動 firewalld:

# systemctl start firewalld

停止:

# systemctl stop firewalld

開機預設啟動:

# systemctl enable firewalld

開機預設關閉:

# systemctl disable firewalld

查詢所有ZONE:

# firewall-cmd --get-zone

查詢預設的ZONE:

# firewall-cmd --get-default-zone

查詢運作中的zone與interface:

# firewall-cmd --get-active-zone

查看現有rule:

# firewall-cmd --list-all

永久生效參數:
假如沒有加入–permanent這個參數,重啟之後就會失效

# fiewall-cmd --permanent command...

加入port:

# firewall-cmd --permanent --zone=(zone name) --add-port=(num)/(protocol)

移除port:

# firewall-cmd --permanent --zone=(zone name) --remove-port=(num)/(protocol)

舉例:
增加TCP的80port:

# firewall-cmd --permanent --zone=public --add-port=80/tcp

移除TCP的80port:

# firewall-cmd --permanent --zone=public --report-port=80/tcp

查詢所有服務:

# firewall-cmd --get-services

查詢服務與port的關係:

在/usr/lib/firewalld/services/或/etc/firewalld/services/目錄下

每個xml就是一個設定檔,可以複製一個,作為自己專屬服務名稱使用

加入服務:

# firewall-cmd --permanent --zone=(zone name) --add-service=(service name)

移除服務:

# firewall-cmd --permanent --zone=(zone name) --remove-service=(service name)

舉例:
於zone=public,增加 samba service

# firewall-cmd --permanent --zone=public --add-service=samba

於zone=public,移除 samba service

# firewall-cmd --permanent --zone=public --remove-service=samba

rich-rules 限制可存取的IP範圍:

# firewall-cmd --zone=(zone name) --add-rich-rule='rule family="(使用IPvX)" source address="(允許IP)" port port="(port num)" protocol="(protocol)" accept'

舉例:
1.將zone的public,其中ssh(22/tcp) 只給 192.168.13.0 網段連線

# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.13.0/24" port port="22" protocol="tcp" accept'

更正說明:
經由網友Clazen Chang說明
原文如下:


您好,我算是Linux的菜鳥,感謝您的文章給予啟發,
關於文章的最後一段,經過小弟研究後,
發現可以不用移除Port和Service,
rich rule 裡頭有個叫做invert(反向)的參數,
ssh服務一樣保留,接著可以這樣做,達到一樣的效果:
#firewall-cmd –zone=home –add-rich-rule=\
“rule family=ipv4 source address=192.168.13.0/24 invert=true \
port port=22 protocol=tcp reject"

意思是"除了192.168.13.0之外,其他都拒絕"
給您參考。


這樣的作法,就不需要再移除之前的add-port or add-service
感謝提供

對「CentOS 7 Firewall 設定」的一則回應

  1. 感謝您的提供,我將文章做了些修正並且使用您的說明

    假如有需要更改或是變動,您再來信或留言聯絡,感謝

  2. 沒錯,小弟也是那個意思,
    firewall不需要remove-port,也不用remove-service,
    firewall一樣放行22port,
    加入上面那個rich rule之後,不允許的IP一樣會被檔掉,
    ——————————————————–
    [root@localhost sf_share02]# firewall-cmd –list-all
    public (default, active)
    interfaces: enp0s3
    sources:
    services: dhcpv6-client ssh —–>開放SSH
    ports: 99/tcp 22/tcp —–>開放22port
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:
    rule family="ipv4″ source NOT address="192.168.0.106″ port port="22″ protocol="tcp" reject
    ——————————————————
    ———–>除了192.168.0.106之外,其他要連入本機22port的都會被擋掉

  3. 謝謝您的建議

    我這邊可能表達得不好

    最後的port跟service是指firewall-cmd的add-service與add-port

    非指服務本身必須移除,造成誤會請見諒

    您提供的方法,這邊會再嘗試看看,謝謝

  4. 您好,我算是Linux的菜鳥,感謝您的文章給予啟發,
    關於文章的最後一段,經過小弟研究後,
    發現可以不用移除Port和Service,
    rich rule 裡頭有個叫做invert(反向)的參數,
    ssh服務一樣保留,接著可以這樣做,達到一樣的效果:
    #firewall-cmd –zone=home –add-rich-rule=\
    “rule family=ipv4 source address=192.168.13.0/24 invert=true \
    port port=22 protocol=tcp reject"

    意思是"除了192.168.13.0之外,其他都拒絕"
    給您參考。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s