簡介
在CentOS 8採用firewalld管理netfilter子系統,默認情況,firewall的後端是nftables,而非iptables,底層調用的是nft命令,而非iptables命令。
不同的防火牆軟件相互間存在衝突,使用某個時應禁用其它的防火牆軟件。
配置文件
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。
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/目錄中
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設置)。
閱讀更多 linux運維菜 的文章