CentOS8

簡介

在CentOS 8採用firewalld管理netfilter子系統,默認情況,firewall的後端是nftables,而非iptables,底層調用的是nft命令,而非iptables命令。

不同的防火牆軟件相互間存在衝突,使用某個時應禁用其它的防火牆軟件。

CentOS8 - 防火牆簡介

配置文件

firewalld的配置文件一般有兩個存儲位置:/etc/firewalld/ 和 /usr/lib/firewalld/。

手動配置的規則會存放到/etc/firewalld/這個目錄中,如果這個目錄中沒有找到對應的配置文件,就會去/usr/lib/firewalld/這個默認路徑下查找。因此需要手動恢復默認規則就要刪除/etc/firewalld/下面對應的文件即可。

配置目錄下的子目錄

zones目錄中存放zone配置文件,services目錄中存放service配置文件,icmptypes目錄中存放icmp類型相關的配置文件。

firewalld主配置文件/etc/firewalld/firewalld.conf

DefaultZone,默認使用的zone,默認值為public;

MinimalMark,標記的最小值,默認為100;

CleanupOnExit,退出後是否清除防火牆規則,默認為yes;

Lockdown,是否限制別的程序通過D-BUS接口直接操作firewalld,默認為no,當Lockdown設置為yes時,/etc/firewalld/lockdown-whitelist.xml規定哪些程序可以對firewalld進行操作;

IPv6_rpfilter,判斷接收的包是否是偽造的,默認為yes。

CentOS8 - 防火牆簡介

firewalld提供了9個zone

drop

默認:丟棄所有進入的數據包,不做任何響應。僅允許傳出連接

block

默認:拒絕所有進入的數據包,返回icmp-host-prohibited報文(ipv4)或icmp6-adm-prohibited報文(ipv6)。僅允許傳出連接

public

默認:firewalld默認的zone。用於不受信任的公共場所,不信任網絡中其它計算機,可以允許選定的傳入連接

external

默認:用在路由器等啟用偽裝(NAT)的外部網絡,僅允許選定的傳入連接

internal

默認:用在(NAT)內部網絡,網絡中的其它系統通常是可信的,僅允許選定的傳入連接

dmz

默認:允許非軍事區(DMZ,內外網絡之間增加的一層網絡,起到緩衝作用)中的計算機有限的被外界網絡訪問,僅允許選定的傳入連接

work

默認:用在工作網絡,網絡中的其它計算機通常是可信的,僅允許選定的傳入連接

home

默認:用在家庭網絡,網絡中的其它計算機通常是可信的,僅允許選定的傳入連接

trusted

默認:接受所有網絡連接,信任網絡中的所有計算機

zone的配置文件路徑是在/etc/firewalld/zones/目錄中

CentOS8 - 防火牆簡介

service(服務)

iptables使用端口號來匹配規則,但是如果某一個服務的端口號改變了,就要同時更改iptables規則,很不方便,同時也不方便閱讀理解。

一個service中可以配置特定的端口(將端口和service的名字關聯)。

zone中加入service規則就等效於直接加入了port規則,但是使用service更容易管理和理解。

service配置文件的命名為<service>.xml/<service>

zone文件中的過濾規則

zone文件中的過濾規則優先級:source(最高)-> interface(次之)-> firewalld.conf中配置的默認zone(最低)。

source:根據數據包源地址過濾,相同的source只能在一個zone中配置

interface:根據接收數據包的網卡過濾

service:根據服務名過濾(實際是查找服務關聯的端口,根據端口過濾),一個service可以配置到多個zone中

port:根據端口過濾

icmp-block:icmp報文過濾,可按照icmp類型設置

masquerade:ip地址偽裝,即將接收到的請求的源地址設置為轉發請求網卡的地址(路由器的工作原理)

forward-port:端口轉發

rule:自定義規則,與iptables配置接近。rule結合--timeout可以實現一些有用的功能,比如可以寫個自動化腳本,發現異常連接時添加一條rule將相應地址drop掉,並使用--timeout設置時間段,過了之後再自動開放

數據包的處理流程

firewalld提供了9個zone,過濾規則優先級決定進來的數據包會由哪個zone來處理,處理進來數據包的流程如下:

1、如果進來的數據包的源地址被drop或block這兩個zone的source規則匹配,那麼這個數據包不會再去匹配interface規則。如果數據包的源地址沒有被drop和block兩個zone的source規則匹配,而是被其它zone的source規則匹配,那麼數據包將會被該zone處理。

2、如果數據包通的接口被drop或block這兩個zone的interface規則匹配,則不會交給默認zone處理。如果數據包通的接口沒有被drop和block 兩個zone的interface規則匹配,而是被其它zone的interface規則匹配,那麼數據包將會被該zone處理。

3、如果數據包沒有被source規則和interface規則匹配,將會被默認zone處理(由/etc/firewalld/firewalld.conf中的配置項DefaultZone設置)。

CentOS8 - 防火牆簡介


分享到:


相關文章: