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

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


咨詢
建站咨詢
