Linux的防火墻體系主要工作在網(wǎng)絡(luò)層,針對TCP/IP數(shù)據(jù)包實時過濾和限制,屬于典型的包過濾防火墻(或稱為網(wǎng)絡(luò)層防火墻)。Linux系統(tǒng)的防火墻體系基于內(nèi)核共存:firewalld、iptables、ebtables,默認(rèn)使用firewalld來管理netfilter子系統(tǒng)。
站在用戶的角度思考問題,與客戶深入溝通,找到義縣網(wǎng)站設(shè)計與義縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋義縣地區(qū)。
netfilter:指的是Linux內(nèi)核中實現(xiàn)包過濾防火墻的內(nèi)部結(jié)構(gòu),不以程序或文件的形式存在,屬于“內(nèi)核態(tài)”的防火墻功能體系;
- firewalld:指用來管理Linux防護(hù)墻的命令程序,屬于“用戶態(tài)”的防火墻管理體系;
firewalld的作用是為包過濾機(jī)制提供匹配規(guī)則(或稱為策略),通過各種不同的規(guī)則,告訴netfilter對來自指定源,前往指定目的或具有某些協(xié)議特征的數(shù)據(jù)包采取何種處理方式。為了更加方便地組織和管理防火墻,firewalld提供了支持網(wǎng)絡(luò)區(qū)域所定義的網(wǎng)絡(luò)鏈接以及接口安全等級的動態(tài)防火墻管理工具。支持IPv4、IPv6防火墻設(shè)置以及以太網(wǎng)橋,并且擁有兩種配置模式:
運行配置
- 永久配置
還支持服務(wù)或應(yīng)用程序直接添加防火墻規(guī)則接口。
firewalld將所有的網(wǎng)絡(luò)數(shù)據(jù)流量劃分為多個區(qū)域,從而簡化防火墻管理。根據(jù)數(shù)據(jù)包的源IP地址或傳入網(wǎng)絡(luò)接口等條件,將數(shù)據(jù)流量轉(zhuǎn)入相應(yīng)區(qū)域的防火墻規(guī)則。
對于進(jìn)入系統(tǒng)的數(shù)據(jù)包,首先檢查的就是其源地址:
- 若源地址關(guān)聯(lián)到特定的區(qū)域,則執(zhí)行該區(qū)域所制定的規(guī)則;
- 若源地址未關(guān)聯(lián)到特定的區(qū)域,則使用傳入網(wǎng)絡(luò)接口的區(qū)域并執(zhí)行該區(qū)域所制定的規(guī)則;
- 若網(wǎng)絡(luò)接口未關(guān)聯(lián)到特定的區(qū)域,則使用默認(rèn)區(qū)域并執(zhí)行該區(qū)域所制定的規(guī)則;
默認(rèn)區(qū)域不是單獨的區(qū)域,而是指向系統(tǒng)上定義的某個其他區(qū)域。默認(rèn)情況下,默認(rèn)區(qū)域是public,但是也可以更改默認(rèn)區(qū)域。以上匹配規(guī)則,按照先后順序,第一個匹配的規(guī)則勝出。在每個區(qū)域中都可以配置其要打開或者關(guān)閉的一系列服務(wù)或端口,firewalld的每個預(yù)定義的區(qū)域都設(shè)置了默認(rèn)打開的服務(wù)。
- trusted(信任區(qū)域):可接收所有的網(wǎng)絡(luò)連接;
- public:(公共區(qū)域):除非與傳出流量相關(guān),或與ssh或dhcpv6-client預(yù)定義服務(wù)匹配,否則拒絕流量傳入;
- work(工作區(qū)域):除非與傳出流量相關(guān),或與ssh、ipp-client、dhcpv6-client預(yù)定義服務(wù)匹配,否則拒絕流量傳入,用于工作區(qū);
- home(家庭區(qū)域):除非與傳出流量相關(guān),或與ssh、ipp-client、mdns、samba-client、dhcpv6-client預(yù)定義服務(wù)匹配,否則拒絕流量傳入,用于家庭網(wǎng)絡(luò);
- internal(內(nèi)部區(qū)域):除非與傳出流量相關(guān),或與ssh、ipp-client、mdns、samba-client、dhcpv6-client預(yù)定義服務(wù)匹配,否則拒絕流量傳入,用于內(nèi)部網(wǎng)絡(luò);
- external(外部區(qū)域):除非與傳出流量相關(guān),或與ssh預(yù)定義服務(wù)匹配,否則拒絕流量傳入;
- dmz(隔離區(qū)域也稱為非軍事化區(qū)域):除非和傳出的流量相關(guān) ,或與ssh預(yù)定義服務(wù)匹配,否則拒絕流量傳入;
- blocak(限制區(qū)域):除非與傳出流量相關(guān),否則拒絕所有傳入流量;
- drop(丟棄區(qū)域):除非與傳出流量相關(guān),否則丟棄所有傳入流量,并且不產(chǎn)生包含ICMP的錯誤響應(yīng);
在Centos 7系統(tǒng)中,可以使用三種方式配置firewalld防火墻:
firewalld-config圖形化工具;
firewalld-cmd命令行工具;
- /etc/firewalld/中的配置文件;
一般情況下,不建議直接編輯配置文件;
[root@centos01 ~]# systemctl start firewalld
[root@centos01 ~]# systemctl enable firewalld
[root@centos01 ~]# systemctl status firewalld
[root@localhost ~]# firewall-cmd --state
running
[root@centos01 ~]# systemctl stop firewalld
[root@centos01 ~]# systemctl disable firewalld
[root@centos01 ~]# firewall-cmd --get-zones
[root@centos01 ~]# firewall-cmd --get-service
[root@centos01 ~]# firewall-cmd --get-default-zone
[root@localhost /]# firewall-cmd --reload
[root@centos01 ~]# firewall-cmd --get-active-zones
[root@centos01 ~]# firewall-cmd --get-icmptypes
address-unreachable bad-header communication-prohibited destination-unreachable
echo-reply echo-request fragmentation-needed host-precedence-violation host-prohibited
host-redirect host-unknown host-unreachable ip-header-bad neighbour-advertisement
neighbour-solicitation network-prohibited network-redirect network-unknown
network-unreachable no-route packet-too-big parameter-problem port-unreachable
precedence-cutoff protocol-unreachable redirect required-option-missing
router-advertisement router-solicitation source-quench source-route-failed time-exceeded
timestamp-reply timestamp-request tos-host-redirect tos-host-unreachable
tos-network-redirect tos-network-unreachable ttl-zero-during-reassembly
ttl-zero-during-transit unknown-header-type unknown-option
firewall-cmd --get-icmptypes命令執(zhí)行結(jié)果中部分阻塞類型的含義如下:
- destination-unreachable:目的地址不可達(dá);
- echo-reply:應(yīng)答回應(yīng);
- parameter-problem:參數(shù)問題;
- redirect:重新定向;
- router-advertisement:路由器通告;
- router-solicitation:路由器征尋;
- source-quench:源端抑制;
- time-exceeded:超時;
- timestamp-reply:時間戳應(yīng)答回應(yīng);
- timestamp-request:時間戳請求;
- --get-default-zone:顯示網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域;
- --set-default-zone=
:設(shè)置網(wǎng)絡(luò)連接或接口的默認(rèn)區(qū)域; - --get-active-zones:顯示已激活的所有區(qū)域;
- --get-zone-of-interface=
:顯示指定接口綁定的區(qū)域; - --zone=
--add-interface= :為指定接口綁定的區(qū)域; - --zone=
--change-interface= :為指定的區(qū)域更改綁定的網(wǎng)絡(luò)接口; - --zone=
--remove-interface= :為指定的區(qū)域刪除綁定的網(wǎng)絡(luò)接口; - --list-all=zones:顯示所有區(qū)域及其規(guī)則;
- [--zone=
] --list-all:顯示所有指定區(qū)域的所有規(guī)則,省略--zone= 時表示僅對默認(rèn)區(qū)域操作;
區(qū)域管理示例如下:
[root@centos01 ~]# firewall-cmd --get-default-zone
[root@centos01 ~]# firewall-cmd --list-all
[root@centos01 ~]# firewall-cmd --get-zone-of-interface=ens32
internal
[root@centos01 ~]# firewall-cmd --zone=internal --change-interface=ens32
The interface is under control of NetworkManager, setting zone to 'internal'.
success
[root@centos01 ~]# firewall-cmd --zone=internal --list-interface
ens32
[root@centos01 ~]# firewall-cmd --get-active-zones
internal
interfaces: ens32
為了方便管理,firewalld預(yù)先定義了很多服務(wù),存放在/usr/lib/firewalld/services/目錄中,服務(wù)通過單個的XML配置文件來指定。這些配置文件則按以下格式命名:service-name.xml,每個文件對應(yīng)一項具體的網(wǎng)絡(luò)服務(wù),如ssh服務(wù)等。我們需要將service配置文件放置在/etc/firewalld/services/目錄中。service配置具有以下優(yōu)點:
- 通過服務(wù)名字來管理規(guī)則更加人性化;
通過服務(wù)來組織端口分組的模式更加高效,如果一個服務(wù)使用了若干個網(wǎng)絡(luò)端口,則服務(wù)的配置文件就相當(dāng)于提供了到這些端口的規(guī)則管理的批量操作快捷方式;
[--zone=
] --list-services:顯示指定區(qū)域內(nèi)允許訪問的所有服務(wù); [--zone=
] --add-service= :為指定區(qū)域設(shè)置允許訪問的某項服務(wù); [--zone=
] --remove-service= :刪除指定區(qū)域已設(shè)置的允許訪問的某項服務(wù); [--zone=
] --list-ports:顯示指定區(qū)域內(nèi)允許訪問的所有端口號; [--zone=
] --add-port= [- ]/ :為指定區(qū)域設(shè)置允許訪問的某個/某段端口號(包括協(xié)議號); [--zone=
] --remove-port= [- ]/ :刪除指定區(qū)域已設(shè)置的允許訪問的端口號(包括協(xié)議名); [--zone=
] --list-icmp-blocaks:顯示指定區(qū)域內(nèi)拒絕訪問的所有ICMP類型; [--zone=
] --add-icmp-block= :為指定區(qū)域設(shè)置拒絕訪問的某項ICMP類型; - [--zone=
] --remove-icmp-block= :刪除指定區(qū)域已設(shè)置的拒絕訪問的某項ICMP類型,省略--zone= 時表示對默認(rèn)區(qū)域操作;
[root@centos01 ~]# firewall-cmd --list-services
dhcpv6-client ssh
[root@centos01 ~]# firewall-cmd --add-service=http
success
[root@centos01 ~]# firewall-cmd --add-service=https
success
[root@centos01 ~]# firewall-cmd --list-services
dhcpv6-client ssh https http
[root@centos01 ~]# firewall-cmd --zone=internal --add-service=mysql
success
[root@centos01 ~]# firewall-cmd --zone=internal --remove-service=samba-client
success
[root@centos01 ~]# firewall-cmd --zone=internal --list-services
ssh mdns dhcpv6-client mysql
在進(jìn)行服務(wù)配置時,預(yù)定義的網(wǎng)絡(luò)服務(wù)可以使用服務(wù)名配置,服務(wù)所涉及的端口就會自動打開。但是,對于非預(yù)定義的服務(wù)只能手動為指定的區(qū)域添加端口。例如,執(zhí)行以下操作即可實現(xiàn)在internal區(qū)域打開443/TCP端口。示例如下:
[root@centos01 ~]# firewall-cmd --zone=internal --add-port=443/tcp
success
若想實現(xiàn)在internal區(qū)域禁止443/TCP端口訪問,可執(zhí)行以下命令:
[root@centos01 ~]# firewall-cmd --zone=internal --remove-port=443/tcp
success
以上配置都為臨時配置,若想將當(dāng)前配置保存為永久配置,可以使用下面命令:
[root@centos01 ~]# firewall-cmd --runtime-to-permanent
success
直接配置為永久性規(guī)則,須帶--permanent選項,如下:
[root@centos01 ~]# firewall-cmd --add-icmp-block=echo-request --permanent
success
[root@centos01 ~]# firewall-cmd --zone=external --add-icmp-block=echo-request --permanent
success
前面提到firewall-cmd命令工具有兩種配置模式:運行時模式(Runtime mode)表示當(dāng)前內(nèi)存中運行的防火墻配置,在系統(tǒng)或firewalld服務(wù)重啟、停止時配置將失效;永久模式(Permanent mode)表示重啟防火墻或重新加載防火墻時的規(guī)則配置,是永久存儲在配置文件中的。
firewall-cmd命令工具與配置模式相關(guān)的選項有三個:
--reload:重新加載防火墻規(guī)則并保持狀態(tài)信息,即將永久配置應(yīng)用為運行時配置;
--permanent:帶有此選項的命令用于設(shè)置永久性規(guī)則,這些規(guī)則只有在重新啟動或重新加載防火墻規(guī)則時才會生效;若不帶此項,表示用于設(shè)置運行時規(guī)則;
- --runtime-to-permanent:將當(dāng)前運行時的配置寫入規(guī)則配置文件中,使當(dāng)前內(nèi)存中的規(guī)則稱為永久性配置;
—————— 本文至此結(jié)束,感謝閱讀 ——————
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。