新聞中心
firewalld是CentOS7/Red Hat7的一大特性,最大的好處有兩個:

創(chuàng)新互聯(lián)專注于汨羅網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供汨羅營銷型網(wǎng)站建設,汨羅網(wǎng)站制作、汨羅網(wǎng)頁設計、汨羅網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務,打造汨羅網(wǎng)絡公司原創(chuàng)品牌,更為您提供汨羅網(wǎng)站排名全網(wǎng)營銷落地服務。
第一個支持動態(tài)更新,不用重啟服務;
第二個就是加入了防火墻的zone概念
什么是FirewallD
“firewalld”是firewall daemon。它提供了一個動態(tài)管理的防火墻,帶有一個非常強大的過濾系統(tǒng),稱為 Netfilter,由 Linux 內(nèi)核提供。
FirewallD 使用zones和services的概念,而 iptables 使用chain和rules。與 iptables 相比,“FirewallD”提供了一種非常靈活的方式來處理防火墻管理。
每個zones都可以按照指定的標準進行配置,以根據(jù)你的要求接受或拒絕某些服務或端口,并且它可以與一個或多個網(wǎng)絡接口相關聯(lián)。默認區(qū)域為public區(qū)域。 [yijiFirewalld zones[/yiji] 以下命令列出 FirewallD 提供的zones。運行以下命令以列出zones:
[root@server1 ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
-
block: 對于 IPv4,任何傳入連接都會被 icmp-host-prohibited 消息拒絕,對于 IPv6 則是 icmp6-adm-prohibited。
-
**dmz:**應用于你的DMZ區(qū)域的計算機,這些計算機可公開訪問,但對內(nèi)部網(wǎng)絡的訪問受到限制。僅接受選定的傳入連接。
-
**drop:**任何傳入連接都將在沒有任何通知的情況下被丟棄。只允許傳出連接。
-
**external:**用于在系統(tǒng)中充當路由器時啟用 NAT 偽裝的外部網(wǎng)絡。只允許選定的傳入連接。
-
**home:**用于家庭網(wǎng)絡。僅接受選定的傳入連接。
-
**internal:**用于內(nèi)部網(wǎng)絡,網(wǎng)絡上的其他系統(tǒng)通常是可信任的。僅接受選定的傳入連接。
-
**public:**用于公共區(qū)域,僅接受選定的傳入連接。
-
**trusted:**接受所有網(wǎng)絡連接。
-
**work:**用于工作區(qū)域,同一網(wǎng)絡上的其他計算機大多受信任。僅接受選定的傳入連接。
Firewalld services
Firewalld 的service配置是預定義的服務。要列出可用的服務模塊,請運行以下命令:
[root@server1 ~]# firewall-cmd --get-services
如何在 Linux 中配置 firewalld 規(guī)則如何在 Linux 中配置 firewalld 規(guī)則
Firewalld的臨時設置和永久設置
Firewalld 使用兩個獨立的配置,即臨時設置和永久設置:
-
臨時設置: 臨時設置不會在系統(tǒng)重啟時保持不變。這意味著臨時設置不會自動保存到永久設置中。
-
永久設置: 永久設置會存儲在配置文件中,將在每次重新啟動時加載并成為新的臨時設置。
啟用、禁用Firewalld
Firewalld默認安裝在Centos7/8中,下面命令時如何啟用或者停用firewalld:
# 啟用Firewalld
[root@server1 ~]# systemctl start firewalld
# 禁用Firewalld
[root@server1 ~]# systemctl stop firewalld
# 開機啟動
[root@server1 ~]# systemctl enable firewlald
# 禁止開機啟動
[root@server1 ~]# systemctl disable firewalld
查看firewlald的狀態(tài):
[root@server1 ~]# systemctl status firewalld
或者
[root@server1 ~]# firewall-cmd --state
running
如何在 Linux 中配置 firewalld 規(guī)則如何在 Linux 中配置 firewalld 規(guī)則
zone管理
Firewalld 為每個區(qū)域提供不同級別的安全性,公共區(qū)域設置為默認區(qū)域。下面命令查看默認區(qū)域:
[root@server1 ~]# firewall-cmd --get-default-zone
public
下面命令查看默認區(qū)域的配置:
[root@server1 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client ntp ssh
ports: 2222/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
通過使用選項”–zone”和“–change-interface”的組合,可以輕松更改zone中的接口。例如,要將“ens33”接口分配給“home”區(qū)域,請運行以下命令:
[root@server1 ~]# firewall-cmd --zone=home --change-interface=ens33
success
[root@server1 ~]# firewall-cmd --zone=home --list-all
home (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: cockpit dhcpv6-client mdns samba-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
要查看所有活動的zone,請運行以下命令:
[root@server1 ~]# firewall-cmd --get-active-zones
home
interfaces: ens33
public
interfaces: ens160
要更改默認zone,請使用以下命令。例如,要將默認區(qū)域更改為 home,請運行以下命令:
[root@server1 ~]# firewall-cmd --set-default-zone=home
要找出與 ens160 接口關聯(lián)的區(qū)域,請運行以下命令:
[root@server1 ~]# firewall-cmd --get-zone-of-interface=ens160
public
要創(chuàng)建新zone,請使用以下命令。例如,要創(chuàng)建一個名為“test”的新區(qū)域,并永久生效,請運行:
[root@server1 ~]# firewall-cmd --permanent --new-zone=test
success
[root@server1 ~]# firewall-cmd --reload
success
開放和關閉端口
打開特定端口允許用戶從外部訪問系統(tǒng),這代表了安全風險。因此,僅在必要時為某些服務打開所需的端口。
要獲取當前區(qū)域中開放的端口列表,請運行以下命令:
[root@server1 ~]# firewall-cmd --list-ports
2222/tcp
下面實例將特定端口永久添加到列表中:
[root@server1 ~]# firewall-cmd --permanent --add-port=8080/tcp
success
[root@server1 ~]# firewall-cmd --reload
success
同樣,要刪除特定端口,請運行以下命令:
[root@server1 ~]# firewall-cmd --remove-port=8080/tcp
success
可以使用以下命令每次確認端口是否已添加或刪除:
[root@server1 ~]# firewall-cmd --list-ports
如果要為特定區(qū)域開放端口,例如,以下命令將為 home 區(qū)域打開端口 80:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-port=80/tcp
success
[root@server1 ~]# firewall-cmd --reload
success
同樣,要從開放的端口中刪除特定區(qū)域的特定端口,請運行:
[root@server1 ~]# firewall-cmd --zone=home --remove-port=80/tcp
success
添加和移除服務類型
Firewalld 服務配置是預定義的服務,如果啟用了服務,則會自動加載。使用預定義服務使用戶可以更輕松地啟用和禁用對服務的訪問。
預定義的服務配置文件位于/usr/lib/firewalld/services目錄中。
Firewalld的服務,你不需要記住任何端口,并且可以一次性允許所有端口。
例如,執(zhí)行以下命令允許 samba 服務。samba 服務需要啟用以下一組端口:“139/tcp 和 445/tcp”以及“137/udp 和 138/udp”。
添加’samba’服務后,所有端口都會同時激活,因為所有端口信息都在samba服務配置中。下面是Firewalld中預定義的samba的服務配置文件:
[root@server1 ~]# cat /usr/lib/firewalld/services/samba.xml
下面是在home區(qū)域放行samba服務:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service=samba
success
[root@server1 ~]# firewall-cmd --reload
success
要獲取有關 samba 服務的更多信息,請運行以下命令:
[root@server1 ~]# firewall-cmd --info-service=samba
samba
ports: 137/udp 138/udp 139/tcp 445/tcp
protocols:
source-ports:
modules: netbios-ns
destination:
要一次添加多個服務,請執(zhí)行以下命令。例如,要添加 http 和 https 服務,請運行以下命令:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-service={http,https}
success
[root@server1 ~]# firewall-cmd --reload
success
如何在 Linux 中配置 firewalld 規(guī)則如何在 Linux 中配置 firewalld 規(guī)則
設置端口轉(zhuǎn)發(fā)
端口轉(zhuǎn)發(fā)是一種將任何傳入網(wǎng)絡流量從一個端口轉(zhuǎn)發(fā)到另一個內(nèi)部端口或另一臺機器上的外部端口的方法。
注意:端口轉(zhuǎn)發(fā)必須開啟IP偽裝。使用下面顯示的命令為external區(qū)域啟用偽裝。
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-masquerade
要檢查是否為區(qū)域啟用了 IP 偽裝,請運行以下命令:
[root@server1 ~]# firewall-cmd --zone=external --query-masquerade
yes
顯示yes,表示已經(jīng)開啟偽裝。
要將端口重定向到同一系統(tǒng)上的另一個端口,例如:將80端口的所有數(shù)據(jù)包重定向到8080端口:
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
success
如果要將流量轉(zhuǎn)發(fā)到另一臺服務器,例如:將所有 80 端口的數(shù)據(jù)包重定向到 IP 為 10.0.0.75 的服務器上的 8080 端口:
[root@server1 ~]# firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.0.0.75
success
例如,要允許來自特定源地址的流量,僅允許從特定子網(wǎng)連接到服務器,請運行以下命令:
[root@server1 ~]# firewall-cmd --permanent --zone=home --add-source=192.168.1.0/24
success
富規(guī)則設置
富規(guī)則允許使用易于理解的命令創(chuàng)建更復雜的防火墻規(guī)則,但豐富的規(guī)則很難記住,可以查看手冊man firewalld.richlanguage并找到示例。
富規(guī)則的一般規(guī)則結(jié)構如下:
rule
[source]
[destination]
service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
[log]
[audit]
[accept|reject|drop|mark]
要允許來自地址 192.168.0.0/24 的訪問,請運行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'
success
要允許來自地址 192.168.0.0/24 的連接訪問 ssh 服務,請運行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'
success
要拒絕來自192.168.10.0/24的流量訪問ssh服務,請運行以下命令:
[root@server1 ~]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port=22 protocol=tcp reject'
success
要刪除任何富規(guī)則,請使用--remove-rich-rule選項,下面使用--list-rich-rules列出富規(guī)則,然后刪除掉富規(guī)則:
[root@server1 ~]# firewall-cmd --zone=public --list-rich-rules
rule family="ipv4" source address="192.168.0.0/24" accept
rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept
rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" accept'
success
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" log prefix="ssh" level="info" accept'
success
[root@server1 ~]# firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.10.0/24" port port="22" protocol="tcp" reject'
success
Firewalld的Direct規(guī)則
Direct規(guī)則類似于 iptables 命令,對于熟悉 iptables 命令的用戶很有用?;蛘撸梢跃庉?code>/etc/firewalld/direct.xml文件中的規(guī)則并重新加載防火墻以激活這些規(guī)則。Direct規(guī)則主要由服務或應用程序用來添加特定的防火墻規(guī)則。
以下Direct規(guī)則將在服務器上打開端口 8080:
[root@server1 ~]# firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
success
[root@server1 ~]# firewall-cmd --reload
success
要列出當前區(qū)域中的Direct規(guī)則,請運行:
[root@server1 ~]# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
使用下面命令刪除Direct規(guī)則:
[root@server1 ~]# firewall-cmd --direct --get-all-rules
ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
ipv4 filter INPUT 0 -p tcp --dport 8081 -j ACCEPT
[root@server1 ~]# firewall-cmd --permanent --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT
success
[root@server1 ~]# firewall-cmd --reload
success
如何清空一個表的鏈?下面是語法和實例:
firewall-cmd --direct --remove-rules ipv4 [table] [chain]
[root@server1 ~]# firewall-cmd --permanent --direct --remove-rules ipv4 filter INPUT
success
[root@server1 ~]# firewall-cmd --reload
success
[root@server1 ~]# firewall-cmd --direct --get-all-rules
本文名稱:Linux配置firewalld規(guī)則具體方法
文章起源:http://fisionsoft.com.cn/article/djdccji.html


咨詢
建站咨詢
