新聞中心
正確配置的防火墻是整個(gè)系統(tǒng)安全性中最重要的方面之一。

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對網(wǎng)站制作、做網(wǎng)站、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
FirewallD是一個(gè)完整的防火墻解決方案,用于管理系統(tǒng)的iptables規(guī)則,并提供用于對其進(jìn)行操作的D-Bus接口。 從centos 7開始,F(xiàn)irewallD將替換iptables為默認(rèn)的防火墻管理工具。
必要條件
Firewalld基本概念
FirewallD使用區(qū)域和服務(wù)的概念,而不是iptables鏈和規(guī)則。根據(jù)您要配置的區(qū)域和服務(wù),您可以控制允許或禁止進(jìn)出系統(tǒng)的流量。
可以使用firewall-cmd命令行實(shí)用程序配置和管理FirewallD。
Firewalld區(qū)域
區(qū)域是預(yù)定義的規(guī)則集,用于根據(jù)計(jì)算機(jī)連接到的網(wǎng)絡(luò)上的信任級別指定應(yīng)允許的流量。您可以將網(wǎng)絡(luò)接口和源分配給區(qū)域。
- Bellow是FirewallD提供的區(qū)域,根據(jù)區(qū)域的信任級別從不信任到可信:
- drop:刪除所有傳入連接而不發(fā)出任何通知。僅允許傳出連接。
- block:所有傳入連接都被拒絕,其中包含用于IPv4的icmp-host-prohibited消息和用于IPv6n的icmp6-adm-prohibited。僅允許傳出連接。
- 公眾:用于不受信任的公共場所。您不信任網(wǎng)絡(luò)上的其他計(jì)算機(jī),但您可以允許選定的傳入連接。
- external:用于在系統(tǒng)充當(dāng)網(wǎng)關(guān)或路由器時(shí)啟用NAT偽裝的外部網(wǎng)絡(luò)。僅允許選定的傳入連接。
- internal:用于在系統(tǒng)充當(dāng)網(wǎng)關(guān)或路由器時(shí)在內(nèi)部網(wǎng)絡(luò)上使用。網(wǎng)絡(luò)上的其他系統(tǒng)通常是可信的。僅允許選定的傳入連接。
- dmz:用于位于非軍事區(qū)的計(jì)算機(jī),該計(jì)算機(jī)對網(wǎng)絡(luò)其余部分的訪問權(quán)限有限。僅允許選定的傳入連接。
- 工作:用于工作機(jī)器。網(wǎng)絡(luò)上的其他計(jì)算機(jī)通常是可信的。僅允許選定的傳入連接。
- home:用于家用機(jī)器。網(wǎng)絡(luò)上的其他計(jì)算機(jī)通常是可信的。僅允許選定的傳入連接。
- trusted:接受所有網(wǎng)絡(luò)連接。信任網(wǎng)絡(luò)中的所有計(jì)算機(jī)。
防火墻服務(wù)
Firewalld服務(wù)是在區(qū)域內(nèi)應(yīng)用的預(yù)定義規(guī)則,并定義必要的設(shè)置以允許特定服務(wù)的傳入流量。
Firewalld運(yùn)行時(shí)和永久設(shè)置
Firewalld使用兩個(gè)獨(dú)立的配置集,運(yùn)行時(shí)和永久配置。
運(yùn)行時(shí)配置是實(shí)際運(yùn)行的配置,并且在重新啟動(dòng)時(shí)不會(huì)持久。 當(dāng)Firewalld服務(wù)啟動(dòng)時(shí),它會(huì)加載永久配置,從而成為運(yùn)行時(shí)配置。
默認(rèn)情況下,使用firewall-cmd實(shí)用程序更改Firewalld配置時(shí),更改將應(yīng)用于運(yùn)行時(shí)配置,以使更改成為永久性,您需要使用--permanent標(biāo)志。
安裝并啟用FirewallD
01、安裝FirewallD
默認(rèn)情況下,F(xiàn)irewalld安裝在CentOS 7上,但如果系統(tǒng)上未安裝,則可以通過鍵入以下命令安裝軟件包:
sudo yum install firewalld
02、檢查防火墻狀態(tài)。
默認(rèn)情況下禁用Firewalld服務(wù)。 您可以使用以下命令檢查防火墻狀態(tài)
sudo firewall-cmd --state
如果您剛剛安裝或從未激活過,則該命令將打印不運(yùn)行,否則您將看到正在運(yùn)行。
03、啟用FirewallD
要啟動(dòng)FirewallD服務(wù)并在引導(dǎo)類型上啟用它:
sudo systemctl start firewalld
sudo systemctl enable firewalld
如下圖:
使用Firewalld區(qū)域
首次啟用FirewallD服務(wù)后,公共區(qū)域?qū)⒃O(shè)置為默認(rèn)區(qū)域。 您可以鍵入以下內(nèi)容來查看默認(rèn)區(qū)域:
sudo firewall-cmd --get-default-zone
輸出:
public
要獲取所有可用區(qū)域的列表,請輸入:
sudo firewall-cmd --get-zones
輸出:
block dmz drop external home internal public trusted work
默認(rèn)情況下,為所有網(wǎng)絡(luò)接口分配默認(rèn)區(qū)域。 要檢查網(wǎng)絡(luò)接口使用的區(qū)域類型,請執(zhí)行以下操作:
sudo firewall-cmd --get-active-zones
輸出:
public
interfaces: ens33
上面的輸出告訴我們,接口ens33分配給public區(qū)域。
您可以使用以下方式打印區(qū)域配置設(shè)置:
sudo firewall-cmd --zone=public --list-all
輸出:
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh dhcpv6-client
ports: 3389/tcp 21/tcp 60000-65535/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
以上命令截圖如下:
從上面的輸出中,我們可以看到公共區(qū)域處于活動(dòng)狀態(tài)并設(shè)置為默認(rèn)值,由ens33接口使用。還允許與DHCP客戶端和SSH相關(guān)的連接。
如果要檢查所有可用區(qū)域的配置,請鍵入:
sudo firewall-cmd --list-all-zones
該命令將打印一個(gè)巨大的列表,將所有可用區(qū)域的設(shè)置。
如下圖:
更改接口區(qū)域
您可以使用--zone標(biāo)志結(jié)合--change-interface標(biāo)志輕松更改接口區(qū)域。 以下命令將eth1接口分配給工作區(qū):
sudo firewall-cmd --zone=work --change-interface=eth1
輸入以下內(nèi)容驗(yàn)證更改:
sudo firewall-cmd --get-active-zones
輸出:
work
interfaces: eth1
public
interfaces: eth0
更改默認(rèn)區(qū)域
要更改默認(rèn)區(qū)域,請使用--set-default-zone標(biāo)志,后跟要作為默認(rèn)區(qū)域的名稱。 例如,要將默認(rèn)區(qū)域更改為home,您應(yīng)該運(yùn)行以下命令:
sudo firewall-cmd --set-default-zone=home
驗(yàn)證更改:
sudo firewall-cmd --get-default-zone
輸出
home
開放端口或服務(wù)
使用FirewallD,您可以根據(jù)稱為服務(wù)的預(yù)定義規(guī)則允許特定端口的流量。
要獲取所有默認(rèn)可用服務(wù)類型的列表:
sudo firewall-cmd --get-services
您可以通過在/usr/lib/firewalld/services目錄中打開關(guān)聯(lián)的.xml文件來查找有關(guān)每個(gè)服務(wù)的更多信息。 例如,HTTP服務(wù)定義如下:
/usr/lib/firewalld/services/http.xml
要允許公共區(qū)域中的接口傳入HTTP流量(端口80),僅針對當(dāng)前會(huì)話(運(yùn)行時(shí)配置)類型:
sudo firewall-cmd --zone=public --add-service=http
如果要修改默認(rèn)區(qū)域,可以省略--zone標(biāo)志。
要驗(yàn)證是否已成功添加服務(wù),請使用--list-services標(biāo)志:
sudo firewall-cmd --zone=public --list-services
輸出:
ssh dhcpv6-client http
如果你想在重新啟動(dòng)后保持端口80打開,你需要再次輸入相同的命令,但這次使用--permanent標(biāo)志:
sudo firewall-cmd --permanent --zone=public --add-service=http
使用--list-services和--permanent標(biāo)志來驗(yàn)證您的更改:
sudo firewall-cmd --permanent --zone=public --list-services
輸出:
ssh dhcpv6-client http
刪除服務(wù)的語法與添加服務(wù)時(shí)的語法相同。 只需使用--remove-service而不是--add-service標(biāo)志:
sudo firewall-cmd --zone=public --remove-service=http --permanent
上面的命令將從公共區(qū)域永久配置中刪除http服務(wù)。
如果您正在運(yùn)行沒有適當(dāng)服務(wù)的Plex Media Server等應(yīng)用程序,該怎么辦?
在這種情況下,您有兩種選擇。 您可以打開相應(yīng)的端口或定義新的FirewallD服務(wù)。
例如,Plex服務(wù)器偵聽端口32400并使用TCP,使用--add-port =標(biāo)志打開當(dāng)前會(huì)話的公共區(qū)域中的端口:
sudo firewall-cmd --zone=public --add-port=32400/tcp
協(xié)議可以是tcp或udp。
要驗(yàn)證端口是否已成功添加,請使用--list-ports標(biāo)志:
sudo firewall-cmd --zone=public --list-ports
32400/tcp
要在重新啟動(dòng)后保持端口32400打開,請通過使用--permanent標(biāo)志運(yùn)行相同的命令將規(guī)則添加到永久設(shè)置。
刪除端口的語法與添加端口時(shí)的語法相同。 只需使用--remove-port而不是--add-port標(biāo)志。
sudo firewall-cmd --zone=public --remove-port=32400/tcp
創(chuàng)建新的FirewallD服務(wù)
正如我們已經(jīng)提到的,默認(rèn)服務(wù)存儲(chǔ)在/ usr / lib / firewalld / services目錄中。 創(chuàng)建新服務(wù)的最簡單方法是將現(xiàn)有服務(wù)文件復(fù)制到/ etc / firewalld / services目錄,該目錄是用戶創(chuàng)建的服務(wù)的位置并修改文件設(shè)置。
例如,要為Plex Media Server創(chuàng)建服務(wù)定義,我們可以使用HTTP服務(wù)文件:
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml
打開新創(chuàng)建的plexmediaserver.xml文件,并在
/etc/firewalld/services/plexmediaserver.xml
保存文件并重新加載FirewallD服務(wù):
sudo firewall-cmd --reload
您現(xiàn)在可以在區(qū)域中使用plexmediaserver服務(wù),與任何其他服務(wù)相同。
使用Firewalld轉(zhuǎn)發(fā)端口
要將流量從一個(gè)端口轉(zhuǎn)發(fā)到另一個(gè)端口或地址,請首先使用--add-masquerade開關(guān)為所需區(qū)域啟用偽裝。 例如,要為外部區(qū)域類型啟用偽裝:
sudo firewall-cmd --zone=external --add-masquerade
在同一服務(wù)器上將流量從一個(gè)端口轉(zhuǎn)發(fā)到另一個(gè)端口
在以下示例中,我們將流量從端口80轉(zhuǎn)發(fā)到同一服務(wù)器上的端口8080:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
將流量轉(zhuǎn)發(fā)到其他服務(wù)器
在以下示例中,我們將流量從端口80轉(zhuǎn)發(fā)到IP 192.168.1.2的服務(wù)器上的端口80:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.2
將流量轉(zhuǎn)發(fā)到其他端口上的另一臺(tái)服務(wù)器
在以下示例中,我們將流量從端口80轉(zhuǎn)發(fā)到IP 192.168.1.2的服務(wù)器上的端口8080:
sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.2
如果你想使前鋒永久性只是附加--permanent標(biāo)志。
使用FirewallD創(chuàng)建規(guī)則集
在以下示例中,我們將向您展示如果您運(yùn)行Web服務(wù)器時(shí)如何配置防火墻。 我們假設(shè)您的服務(wù)器只有一個(gè)接口eth0,并且您希望僅在SSH,HTTP和HTTPS端口上允許傳入流量。
01、將默認(rèn)區(qū)域更改為dmz
我們將使用dmz(非軍事化或隔離區(qū))區(qū)域,因?yàn)槟J(rèn)情況下它只允許SSH流量。 要將默認(rèn)區(qū)域更改為dmz并將其分配給eth0接口,請運(yùn)行以下命令:
sudo firewall-cmd --set-default-zone=dmz
sudo firewall-cmd --zone=dmz --add-interface=eth0
02、打開HTTP和HTTPS端口:
要打開HTTP和HTTPS端口,請向dmz區(qū)域添加永久服務(wù)規(guī)則:
sudo firewall-cmd --permanent --zone=dmz --add-service=http
sudo firewall-cmd --permanent --zone=dmz --add-service=https
通過重新加載防火墻立即使更改生效:
03、驗(yàn)證更改
要檢查dmz區(qū)域配置設(shè)置,請鍵入:
sudo firewall-cmd --zone=dmz --list-all
輸出:
dmz (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: ssh http https
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
上面的輸出告訴我們dmz是默認(rèn)區(qū)域,應(yīng)用于eth0接口,ssh(22)http(80)和https(443)端口打開。
總結(jié)
您已經(jīng)學(xué)習(xí)了如何在CentOS系統(tǒng)上配置和管理FirewallD服務(wù)。
確保允許系統(tǒng)正常運(yùn)行所需的所有傳入連接,同時(shí)限制所有不必要的連接。
網(wǎng)站名稱:CentOS7上安裝配置FirewallD防火墻詳解
網(wǎng)頁路徑:http://www.dlmjj.cn/article/djhospe.html


咨詢
建站咨詢
