0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Firewalld原理架構(gòu)

lhl545545 ? 來源:浩道linux ? 作者:浩道linux ? 2022-09-19 09:11 ? 次閱讀

防火墻概述

Firewalld是一種提供了支持網(wǎng)絡(luò)/防火墻區(qū)域(zone)定義網(wǎng)絡(luò)鏈接以及接口安全等級(jí)的動(dòng)態(tài)防火墻管理工具,它自身并不具備防火墻的功能,而是和iptables一樣需要通過內(nèi)核的netfilter來實(shí)現(xiàn)。

也就是說firewalld和iptables一樣,他們的作用都是用于維護(hù)規(guī)則,而真正使用規(guī)則干活的是內(nèi)核的netfilter,只不過firewalld和iptables的結(jié)構(gòu)以及使用方法不一樣罷了。

從邏輯上可分為:主機(jī)防火墻和網(wǎng)絡(luò)防火墻

從物理上可分為:硬件防火墻和軟件防火墻

防火墻主要通過Netfilter與TCP Wrappers兩個(gè)機(jī)制來管理的。

Netfilter:數(shù)據(jù)包過濾機(jī)制

TCP Wrappers:程序管理機(jī)制

在RHEL7系列中,默認(rèn)使用firewalld作為防火墻。在RHEL7版本已經(jīng)默認(rèn)沒有iptables服務(wù)了,當(dāng)然iptables 命令還是可以用的。

Firewalld原理架構(gòu)

f9197cdc-37ae-11ed-ba43-dac502259ad0.jpg

1) Firewalld區(qū)域管理

通過將網(wǎng)絡(luò)劃分成不同的區(qū)域,制定出不同區(qū)域之間的訪問控制策略來控制不同程序區(qū)域間傳送的數(shù)據(jù)流。

互聯(lián)網(wǎng)是不可信任的區(qū)域,而內(nèi)部網(wǎng)絡(luò)是高度信任的區(qū)域,網(wǎng)絡(luò)安全模型可以在安裝、初次啟動(dòng)和首次建立網(wǎng)絡(luò)連接時(shí)選擇初始化。

該模型描述了主機(jī)所連接的整個(gè)網(wǎng)絡(luò)環(huán)境的可信級(jí)別,并定義了新連接的處理方式。

2) Firewalld域

網(wǎng)絡(luò)區(qū)名稱 默認(rèn)配置
trusted(信任) 可接受所有的網(wǎng)絡(luò)連接
home(家庭) 用于家庭網(wǎng)絡(luò),僅接受ssh,mdns,gp-client,samba-client,dhcpv6-client連接
internal( 內(nèi)部) 用于內(nèi)部網(wǎng)絡(luò),僅接受ssh,mdns,gp-client,samba-client,dhcpv6-client連接
work(工作) 用于工作區(qū),僅接受sshjpp-client,dhcpv6-client服務(wù)連接
public(工作) 用于工作區(qū),僅接受ssh,ipp-client,dhcpv6-client服務(wù)連接,在公共區(qū)域內(nèi)使用,僅接受ssh或dhcpv6-client服務(wù)連接,是firewalld的默認(rèn)區(qū)域
external( 外部) 出去的ipv4網(wǎng)絡(luò)連接通過此區(qū)域?yàn)閭窝b或轉(zhuǎn)發(fā),僅接受ssh服務(wù)的連接
dmz(非軍事區(qū)) 僅接受ssh服務(wù)的連接
block(限制) 拒絕所有網(wǎng)絡(luò)的連接
drop (丟棄) 任何接收的網(wǎng)絡(luò)數(shù)據(jù)包都被丟棄,沒有任何回復(fù)

firewalld的默認(rèn)區(qū)域是public

3) Firewalld配置文件

firewalld默認(rèn)提供了九個(gè)zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、home.xml、internal.xml、public.xml、trusted.xml、work.xml,都保存在/usr/lib/firewalld/zones/目錄下。

Firewalld 和 Iptables 的異同

1) 相同點(diǎn)

firewalld與iptables都是linux中防火墻的管理程序,但其實(shí)其角色主要為對(duì)于防火墻策略的管理,真正的防火墻執(zhí)行者是位于內(nèi)核中的netfilter。

2) 不同點(diǎn)

iptables 僅能通過命令行進(jìn)行配置;而 firewalld 提供了圖形接口,類似windows防火墻的操作方式;

iptables 每一個(gè)單獨(dú)更改意味著清除所有舊的規(guī)則,并從 /etc/sysconfig/iptables 中讀取所有新的規(guī);則;而 firewalld 在有規(guī)則變動(dòng)后,可以僅僅運(yùn)行規(guī)則中的不同之處,即在 firewalld 運(yùn)行時(shí)間內(nèi),改變?cè)O(shè)置時(shí)可以不丟失現(xiàn)行鏈接;

iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各種 XML 文件中;

iptables 沒有守護(hù)進(jìn)程,并不能算是真正意義上的服務(wù);而 firewalld 有守護(hù)進(jìn)程;

iptables 通過控制端口來控制服務(wù),而 firewalld 則是通過控制協(xié)議來控制端口;

【firewalld】默認(rèn)是拒絕;而【iptables】默認(rèn)是允許。

service說明:在/usr/lib/firewalld/services/目錄中,還保存了另外一類配置文件,每個(gè)文件對(duì)應(yīng)一項(xiàng)具體的網(wǎng)絡(luò)服務(wù),如 ssh 服務(wù)等。這個(gè)目錄下的服務(wù)配置默認(rèn)是放通的,不受firewalld-cmd 規(guī)則控制,除非把這個(gè)目錄下的服務(wù)配置文件刪掉,就恢復(fù)了默認(rèn)了(默認(rèn)拒絕),當(dāng)然也可以添加一些服務(wù)配置文件。

驗(yàn)證默認(rèn)拒絕規(guī)則

#這里用到nc工具去監(jiān)聽端口
#安裝nc
yuminstall-ync
#監(jiān)聽端口
nc-l8888
#查詢端口
ss-tnlp|grep:8888
f929d9f6-37ae-11ed-ba43-dac502259ad0.jpg

用另外一臺(tái)機(jī)器telnet端口 telnet 192.168.182.149 8888

f93e02e6-37ae-11ed-ba43-dac502259ad0.jpg

Firewalld實(shí)戰(zhàn)操作

只有firewalld服務(wù)啟動(dòng)了,才能使用相關(guān)工具:firewall-config(圖形界面), firewall-cmd,這里主要介紹命令行方式的。

1)Firewalld有規(guī)則兩種狀態(tài)

運(yùn)行時(shí)(runtime):修改規(guī)則馬上生效,但是臨時(shí)生效

持久配置(permanent):修改后需要重載才會(huì)生效

firewall-cmd--permanent[RULE]
firewall-cmd--reload

一旦使用了--permanent會(huì)將配置寫入到/etc/firewalld/{services,zones}/*.xml對(duì)應(yīng)的文件中,配置完成后一定要reload,否則只能待防火墻重啟后這些配置才能生效。

2)Firewalld配置文件

/etc/firewalld/{services,zones}/*.xml優(yōu)先級(jí)最高,permanent模式生效的策略會(huì)放到這里
/lib/firewalld/{services,zones}/*.xml優(yōu)先級(jí)要低些,是一些默認(rèn)配置,可以當(dāng)做模板使用

以下options是可以組合使用的,具體見man firewall-cmd或者firewall-cmd --help,里面有詳細(xì)的說明,此處只列出一些常用的option。

firewall-cmd

--permanent--配置寫入到配置文件,否則臨時(shí)馬上生效

--reload--重載配置文件,永久生效

--zone=--指定區(qū)域

--get-default-zones--獲取默認(rèn)區(qū)域

--set-default-zone=--設(shè)置默認(rèn)區(qū)域

--get-zones--獲取所有可用的區(qū)域

--get-active-zones--獲取當(dāng)前激活(活躍)的區(qū)域

--add-source=--添加地址,可以是主機(jī)或網(wǎng)段,遵循當(dāng)前區(qū)域的target

--remove-source--移除地址,可以是主機(jī)或網(wǎng)段,遵循當(dāng)前區(qū)域的target

--add-service=--添加服務(wù),遵循當(dāng)前區(qū)域的target

--remove-service=--移除服務(wù),遵循當(dāng)前區(qū)域的target

--list-services--顯示指定區(qū)域內(nèi)允許訪問的所有服務(wù)

--add-port=--添加端口,遵循當(dāng)前區(qū)域的target

--remove-port=--移除端口,遵循當(dāng)前區(qū)域的target

--list-ports顯示指定區(qū)域內(nèi)允許訪問的所有端口號(hào)

--add-interface=--zone=--添加網(wǎng)卡到指定區(qū)域

--change-interface=--new-zone-name--改變網(wǎng)卡到指定區(qū)域

--list-all--列出激活使用的區(qū)域的配置

--list-all-zones--列出所有區(qū)域的配置

--get-zone-of-interface=--獲取指定接口所在的區(qū)域

--list-icmp-blocks--顯示指定區(qū)域內(nèi)拒絕訪問的所有ICMP類型

--add-icmp-block=--為指定區(qū)域設(shè)置拒絕訪問的某項(xiàng)ICMP類型

--remove-icmp-block=--移除指定區(qū)域內(nèi)拒絕訪問某項(xiàng)的ICMP類型

#常用的ICMP類型有:
#echo-request:類型0,icmp請(qǐng)求報(bào)文
#echo-reply:類型8,icmp響應(yīng)回復(fù)報(bào)文

--list-protocols--列出在指定區(qū)域中允許通過的協(xié)議

--add-protocol=--在指定區(qū)域中添加允許通過的協(xié)議

--remove-protocol=--移除在指定區(qū)域中的某項(xiàng)協(xié)議

--get-target--獲取區(qū)域中的默認(rèn)target

--set-target=--設(shè)置區(qū)域的target

3)增刪改查操作

1、【查】看一個(gè)區(qū)域的配置信息

(py3)[root@jumpserver-168-182-149nginx]#firewall-cmd--list-all
public(active)#活動(dòng)的區(qū)域
target:default#默認(rèn)啟動(dòng)的區(qū)域
icmp-block-inversion:no#ICMP協(xié)議類型黑白名單開關(guān)(yes/no)
interfaces:ens33#關(guān)聯(lián)的網(wǎng)卡接口
sources:192.168.182.147#來源,可以是IP地址,也可以是mac地址
services:dhcpv6-clientssh#列出允許通過這個(gè)防火墻的服務(wù)
ports:2181/tcp8888/tcp80/tcp#列出允許通過這個(gè)防火墻的目標(biāo)端口。(即需要對(duì)外開放的端口)
protocols:#協(xié)議值可以是一個(gè)協(xié)議ID數(shù)字,或者一個(gè)協(xié)議名
masquerade:no#表示這個(gè)區(qū)域是否允許 IP 偽裝。如果允許,它將允許 IP 轉(zhuǎn)發(fā),它可以讓你的計(jì)算機(jī)作為一個(gè)路由器
forward-ports:#列出轉(zhuǎn)發(fā)的端口
source-ports:#允許的來源端口
icmp-blocks:#可添加ICMP類型,當(dāng)icmp-block-inversion為no時(shí),這些ICMP類型被拒絕;當(dāng)icmp-block-inversion為yes時(shí),這些ICMP類型被允許
richrules:#富規(guī)則,即更細(xì)致、更詳細(xì)的防火墻規(guī)則策略,它的優(yōu)先級(jí)在所有的防火墻策略中也是最高的
rulefamily="ipv4"sourceaddress="192.168.250.0/24"accept

常用的查看命令

#查詢默認(rèn)區(qū)域配置信息
firewall-cmd--list-all
#查看區(qū)域配置信息
firewall-cmd--list-all--zone=work
#查詢所有端口
firewall-cmd--list-ports
#查詢指定端口
firewall-cmd--zone=public--query-port=22/tcp
#查詢放通IP段
firewall-cmd--list-sources
#查看默認(rèn)區(qū)域
firewall-cmd--get-default-zone
#查看所有可以使用的區(qū)域
firewall-cmd--get-zones
#查看活躍的區(qū)域
firewall-cmd--get-active-zones
#查看網(wǎng)卡綁定在了哪個(gè)區(qū)域
firewall-cmd--get-zone-of-interface=[IFACE]
#查看所有服務(wù)
firewall-cmd--get-services

2、【增】加規(guī)則

1、語法格式(端口):

firewall-cmd--zone=作用域--add-port=端口數(shù)字/通訊協(xié)議--永久生效

示例:

firewall-cmd--zone=public--add-port=2181/tcp--permanent##打開2181端口,開放當(dāng)前端口,他會(huì)用TCP協(xié)議,需要重新加載/重啟才永久生效
firewall-cmd--reload

f94e921e-37ae-11ed-ba43-dac502259ad0.jpg

##打開2888端口,使用默認(rèn)zone,他會(huì)用UDP協(xié)議,立馬生效,只是臨時(shí)的,重啟服務(wù)/重啟機(jī)器將失效
firewall-cmd--add-port=2888/udp
#查看
firewall-cmd--list-ports

f962114a-37ae-11ed-ba43-dac502259ad0.jpg

2、語法格式(源IP):

firewall-cmd--zone=作用域--add-source=端口數(shù)字/通訊協(xié)議--永久生效

示例:

#放通ip地址
firewall-cmd--add-source=192.168.182.0/24--zone=public
#查看
firewall-cmd--list-sources

#放通某個(gè)ip/ip段的某個(gè)端口
firewall-cmd--zone=public--add-source=192.168.182.147--permanent
firewall-cmd--zone=public--add-port=8888/tcp--permanent
firewall-cmd--reload

f9772314-37ae-11ed-ba43-dac502259ad0.jpg

3、【刪】除規(guī)則

1、語法格式(端口):

firewall-cmd--zone=作用域--remove-port=端口數(shù)字/通訊協(xié)議

示例:

firewall-cmd--zone=public--remove-port=2181/tcp

f98ec7bc-37ae-11ed-ba43-dac502259ad0.jpg

2、語法格式(源IP):

firewall-cmd--zone=作用域--remove-source=端口數(shù)字/通訊協(xié)議

示例:

firewall-cmd--zone=public--remove-source=192.168.182.0/24

f9a464f0-37ae-11ed-ba43-dac502259ad0.jpg

4、【改】正規(guī)則

1、修改當(dāng)前的默認(rèn)區(qū)為work

firewall-cmd--set-default-zone=work
#查看
firewall-cmd--get-default-zone=work

f9b00e18-37ae-11ed-ba43-dac502259ad0.jpg

直接規(guī)則

DirectOptions

--direct--指定將要使用直接規(guī)則

--get-all-chains--獲取所有的鏈

--get-chains{ipv4|ipv6|eb}--獲取表中的鏈

--add-chain{ipv4|ipv6|eb}
--添加鏈到表中(自定義的) --remove-chain{ipv4|ipv6|eb}
--移除表中的某條鏈 --query-chain{ipv4|ipv6|eb}
--返回鏈?zhǔn)欠褚驯惶砑拥奖? --get-all-rules--獲取所有的策略規(guī)則 --get-rules{ipv4|ipv6|eb}
--獲取指定表中指定鏈中的規(guī)則 --add-rule{ipv4|ipv6|eb}
...--在指定表中的指定鏈添加規(guī)則 --remove-rule{ipv4|ipv6|eb}
...--優(yōu)先從指定表中的指定鏈刪除規(guī)則條目 --remove-rules{ipv4|ipv6|eb}
--從表中刪除規(guī)則條目 --query-rule{ipv4|ipv6|eb}
...--返回是否優(yōu)先的規(guī)則已被添加到鏈表中 --passthrough{ipv4|ipv6|eb}...--直接傳遞iptables的命令 --get-all-passthroughs--獲取所有直接傳遞的規(guī)則 --get-passthroughs{ipv4|ipv6|eb}...--獲取跟蹤直通規(guī)則 --add-passthrough{ipv4|ipv6|eb}...--添加一個(gè)直接規(guī)則 --remove-passthrough{ipv4|ipv6|eb}...--移除一個(gè)直接規(guī)則 --query-passthrough{ipv4|ipv6|eb}...--查詢直接規(guī)則是否添加

除非將直接規(guī)則顯式插入到由 fircwa1ld管理的區(qū)域,否則將首先解析直接規(guī)則,然后才會(huì)解析任何fircwalld規(guī)則,即直接規(guī)則優(yōu)先于firewalld規(guī)則。直接規(guī)則主要用于使服務(wù)和應(yīng)用程序能夠增加規(guī)則。傳遞的參數(shù)與iptables,ip6tables以及ebtables一致。

1)增加規(guī)則

添加直接【鏈/規(guī)則】格式:

firewall-cmd--direct--add-chain{ipv4|ipv6|eb}
[自定義鏈表名] firewall-cmd--direct--add-rule{ipv4|ipv6|eb}

priority值越小,優(yōu)先級(jí)越高

示例:

#所有來自192.168.182.0/24網(wǎng)絡(luò)IP,單個(gè)IP每分鐘最高連接并發(fā)是1,超過并發(fā)的連接都丟棄#添加鏈
firewall-cmd--direct--permanent--add-chainipv4rawblacklist01firewall-cmd--reload#查看鏈表firewall-cmd--direct--get-all-chains#沒reload就得加上--permanent,如果沒加--permanent就不用了firewall-cmd--direct--permanent--get-all-chains#添加規(guī)則,使用自動(dòng)定義鏈PREROUTING,使用自定義處理動(dòng)作到新鏈blacklist01,0代表優(yōu)先級(jí),越小優(yōu)先級(jí)越高
firewall-cmd--direct--permanent--add-ruleipv4rawPREROUTING0-s192.168.182.149-jblacklist01firewall-cmd--direct--permanent--add-ruleipv4rawblacklist010-jDROP=》等同于下面一句#使用系統(tǒng)鏈PEROUTING,使用系統(tǒng)DROP處理動(dòng)作firewall-cmd--direct--permanent--add-ruleipv4rawPREROUTING0-s192.168.182.149-jDROPfirewall-cmd--reload#單個(gè)IP每分鐘最高連接并發(fā)是1,然后記入日志到文件/var/log/messages,使用自定義鏈,系統(tǒng)處理動(dòng)作LOGfirewall-cmd--direct--permanent--add-ruleipv4rawblacklist010-mlimit--limit1/min-jLOG--log-prefix"blacklisted"firewall-cmd--reload#查看規(guī)則,跟查看鏈一樣,如果加了--permanent,沒reload就得加上--permanet才能查看到firewall-cmd--direct--permanent--get-all-rules

這里-j就是iptables里面的處理動(dòng)作(ACCEPT,DROP,REJECT,SNAT,MASQUERADE,DNAT,REDIRECT,LOG);當(dāng)然也可以接自定義的動(dòng)作,例如上例所示。

2)刪除規(guī)則

添加刪除【鏈/規(guī)則】格式:

firewall-cmd--direct--remove-chain{ipv4|ipv6|eb}
[自定義鏈表名] firewall-cmd--direct--remove-rule{ipv4|ipv6|eb}

示例:

firewall-cmd--direct--permanent--remove-chainipv4rawblacklist01

firewall-cmd--direct--permanent--add-ruleipv4rawPREROUTING0-s192.168.182.149-jblacklist01
firewall-cmd--direct--permanent--add-ruleipv4rawblacklist010-jDROP
firewall-cmd--reload

firewall-cmd--direct--permanent--remove-ruleipv4rawPREROUTING0-s192.168.182.149-jDROP
firewall-cmd--reload

Firewalld防火墻富規(guī)則

富規(guī)則一般為了精確控制,用得比較多,所以這里將重點(diǎn)講解

1)富規(guī)則常用的options

firewall-cmd

--list-rich-rules--列出富規(guī)則

--add-rich-rule=--使用富規(guī)則語言添加富規(guī)則

--remove-rich-rule=--移除富規(guī)則

--query-rich-rule=--查詢某條富規(guī)則是否存在

--list-rich-rules--列出指定區(qū)域中的所有富規(guī)則

--list-all和--list-all-zones--也能列出存在的富規(guī)則

2)富規(guī)則language語法

規(guī)則的幾乎每個(gè)單一元素都能夠以option=value形式來采用附加參數(shù),參考firewalld.richlanguage

rule

[source]

[destination]

service|port|protocol|icmp-block|masquerade|forward-port

[log]

[audit]

[accept|reject|drop]

格式:

rule[family="ipv4|ipv6"]

sourceaddress="address[/mask]"[invert="True"]

destinationaddress="address[/mask]"invert="True"

servicename="servicename"

portport="portvalue"protocol="tcp|udp"

protocolvalue="protocolvalue"

forward-portport="portvalue"protocol="tcp|udp"to-port="portvalue

"to-addr="address"

log[prefix="prefixtext"][level="loglevel"][limitvalue="rate/duration"]

accept|reject[type="rejecttype"]|drop

3)一些常用配置規(guī)則

1、規(guī)則排序

一旦向某個(gè)區(qū)域(一般是指防火墻)中添加了多個(gè)規(guī)則, 規(guī)則的排序便會(huì)在很大程度上影響防火墻的行為。對(duì)于所有區(qū)域, 區(qū)域內(nèi)規(guī)則的基本排序是相同的。

為該區(qū)域設(shè)置的任何端口轉(zhuǎn)發(fā)和偽裝規(guī)則。

為該區(qū)域設(shè)置的任何記錄規(guī)則。

為該區(qū)域設(shè)置的任何允許規(guī)則。

為該區(qū)域設(shè)置的任何拒絕規(guī)則。

2、測(cè)試和調(diào)試

為了便于測(cè)試和調(diào)試幾乎所有規(guī)則都可以與超時(shí)一起添加到運(yùn)行時(shí)配置。

當(dāng)包含超時(shí)的規(guī)則到防火墻時(shí),計(jì)時(shí)器便針對(duì)該規(guī)則開始倒計(jì)時(shí)。

一旦規(guī)則的計(jì)時(shí)器達(dá)到零秒,便從運(yùn)行時(shí)配置中刪除該規(guī)則。

通過在啟用規(guī)則的firewall-cmd的結(jié)尾添加--timeout=即可向運(yùn)行時(shí)規(guī)則中添加超時(shí)。

3、使用富規(guī)則進(jìn)行日志記錄

調(diào)試或監(jiān)控防火墻時(shí),記錄已接受或已拒絕的連接很有用。

firewalld可以通過兩種方法來實(shí)現(xiàn)此目的記錄到syslog, 或者將消息發(fā)送到由auditd管理的內(nèi)核audit子系統(tǒng)。

使用富規(guī)則記錄到syslog的基本語法為:

log[prefix=""[level=][limitvalue=""]

其中:

可以是emerg 、 alert 、 crit 、 error 、 warning 、 notice 、 info或debug之一。

"可以是s(表示秒)、m(表示分鐘)、h(表示小時(shí))或d(表示天)之一。

例如:limit value=3/m會(huì)將日志消息限制為每分鐘最多三條。

limit value = 3/m 這里是有BUG 的,常常時(shí)間控制會(huì)不精準(zhǔn)。

4、批量加端口

#用這樣的形式
portport=4000-5234

firewall-cmd--permanent--zone=vnc--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.182.0/24portport=7900-7905protocol=tcpaccept'

用于記錄到審計(jì)子系統(tǒng)的基本語法為:

audit[limitvalue=""]

速率限制的配置方式與syslog記錄相同。

使用富規(guī)則進(jìn)行記錄的某些示例:

# 1.接受從work區(qū)域到SSH的新連接,以notice級(jí)別且每分鐘最多三條消息的方式將新連接記錄到syslog。

firewall-cmd--permanent--zone=work--add-rich-rule='ruleservicename="ssh"logprefix="ssh"level="notice"limitva1ue="3/m"accept

#2.在接下來五分鐘內(nèi),將拒絕從默認(rèn)區(qū)域中子網(wǎng)2001:/64到DNS的新IPv6連接,

#并且拒絕的連接將記錄到audit系統(tǒng),且每小時(shí)最多一條消息。

firewall-crud--add-rich-rule='rulefamily=ipv6sourceaddress="2001:/64"servicename="dns"auditlimitva1ue="1/h"reject'--timeout=300

5、示例

firewall-cmd--permanent--zone=public--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.11/32reject'

firewall-cmd--permanent--zone=public--add-rich-rule='ruleservicename=ftplimitvalue=1/maccept'

firewall-cmd--permanent--zone=public--add-rich-rule='ruleprotocolvalue=espdrop'

firewall-cmd--permanent--add-rich-rule='rulefamily=ipv4sourceaddress=172.17.10.0/24servicename=sshreject'

firewall-cmd--permanent--zone=public--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.0/24portport=7900-7905protocol=tcpaccept'

針對(duì)ssh鏈接記錄至日志中,每分鐘3次

firewall-cmd--permanent--zone=work--add-rich-rule='ruleservicename=sshlogprefix="ssh"level=noticelimitvalue="3/m"accept'

用于調(diào)試,規(guī)則在300秒后失效,防止規(guī)則設(shè)定錯(cuò)誤導(dǎo)致網(wǎng)絡(luò)連接斷開

firewall-cmd--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.11/32servicename=sshreject'--timeout=300

添加富規(guī)則,只允許172.25.0.10/32訪問,并且記錄日志,日志級(jí)別為notice,日志前綴為"NEW HTTP ",限制每秒最多3個(gè)并發(fā) ,要求持久化生效

firewall-cmd--permanent--add-rich-rule='rulefamily=ipv4sourceaddress=172.25.0.10/32servicename=httploglevel=noticeprefix="NEWHTTP"limitvalue="3/s"accept'
firewall-cmd--reload

firewalld的NAT和端口轉(zhuǎn)發(fā)

1)網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)

firewalld支持兩種類型的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)偽裝和端口轉(zhuǎn)發(fā)??梢栽诨炯?jí)別使用常規(guī)

frewall-cmd規(guī)則來同時(shí)配置這兩者,更高級(jí)的轉(zhuǎn)發(fā)配置可以使用富規(guī)則來完成。

這兩種形式的NAT會(huì)在發(fā)送包之前修改包的某些方面如源或目標(biāo)。

2)偽裝(偽裝只能和ipv4一起用,ipv6不行)

偽裝是一種形式的網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)

3)配置偽裝

要使用常規(guī)的firewall-cmd命令為區(qū)域配置偽裝,使用下列語法:

firewall-cmd--permanent--zone=--add-masquerade

這將偽裝滿足以下條件的任何包從該區(qū)域的源(接口及子網(wǎng))中定義的客戶端發(fā)送到防火墻且未尋址到防火墻自身的包,即該區(qū)域源的數(shù)據(jù)包的目標(biāo)IP不是防火墻自身的IP,都將映射成防火墻的IP。

要在更大程度上控制要進(jìn)行偽裝的客戶端,還可以使用富規(guī)則。

firewall-cmd--permanent--zone=--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.0.0/24masquerade'

4)端口轉(zhuǎn)發(fā)

另一種形式的NAT是端口轉(zhuǎn)發(fā)。

通過端口轉(zhuǎn)發(fā)指向單個(gè)端口的流量將轉(zhuǎn)發(fā)到相同計(jì)算機(jī)上的不同端口或者轉(zhuǎn)發(fā)到不同計(jì)算機(jī)上的端口。

此機(jī)制通常用于將某個(gè)服務(wù)器隱藏在另一個(gè)計(jì)算機(jī)后面,或者用于在備用端口上提供對(duì)服務(wù)的訪問權(quán)限。

常見配置是將端口從防火墻計(jì)算機(jī)轉(zhuǎn)發(fā)到已在防火墻后面?zhèn)窝b的計(jì)算機(jī),即這種通過目標(biāo)端口轉(zhuǎn)發(fā)的方式需要開啟偽裝(masquerade)

使用常規(guī)fircwall-cmd命令配置端口轉(zhuǎn)發(fā),可以使用firewalld提供的端口轉(zhuǎn)發(fā)語法:

firewall-cmd--permanent--zone=--add-forward-port=port=:proto=[:toport=][:toaddr=]

toport=和toaddr 兩部分均可選,但需要至少指定這兩者之一 。

#例如,對(duì)于來自public區(qū)域的客戶端,以下命令會(huì)將防火墻上通過端口22/TCP傳入的連接轉(zhuǎn)發(fā)到IP地址為192.168.182.147的計(jì)算機(jī)上的端口22/TCP;待驗(yàn)證

firewall-cmd--permanent--zone=public--add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.182.147

要在更大程度上控制端口轉(zhuǎn)發(fā)規(guī)則,可以將以下語法與富規(guī)則配合使用來實(shí)現(xiàn)端口轉(zhuǎn)發(fā),這也是我們推薦使用的方式

forward-portport=protocol=tcp|udp[to-port=][to-addr=
]

以下示例使用富規(guī)則將來自work區(qū)域中192.168.182.0/24且傳入到端口80/TCP的流星轉(zhuǎn)發(fā)到防火墻計(jì)算機(jī)自身上面的和端口8080/TCP:

firewall-cmd--permanent--zone=work--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.182.0/24forward-portport=80protocol=tcpto-port=8080'

其實(shí)這里是指?jìng)鹘y(tǒng)的目標(biāo)地址映射,實(shí)現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)資源

firewall-cmd--zone=external--add-masquerade
firewall-cmd--permanent--zone=public--add-forward-port=port=513:proto=tcp:toport=132:toaddr=192.168.182.149
firewall-cmd--permanent--zone=public--add-rich-rule='rulefamily=ipv4sourceaddress=192.168.182.0/24forward-portport=80protocol=tcpto-port=8080'

firewalld自定義區(qū)域和服務(wù)

1) 自定義的區(qū)域

參照/lib/firewalld/zones/public.xml文件,在/lib/firewalld/zones/下面新建你需要的區(qū)域名以.xml結(jié)尾,內(nèi)容格式參照public.xml,trusted.xml等文件即可。

#Internal.xml





Internal

Foruseoninternalnetworks.Youmostlytrusttheothercomputersonthenetworks

tonotharmyourcomputer.Onlyselectedincomingconnectionsareaccepted.










2)自定義服務(wù)

自定義服務(wù)可以讓防火墻配置更為簡(jiǎn)便,能夠直接使用服務(wù)名來進(jìn)行策略配置

參照/usr/lib/firewalld/services/ssh.xml,在/usr/lib/firewalld/services/下面新建你需要的服務(wù)名以.xml結(jié)尾,內(nèi)容格式參照ssh.xml,samba.xml文件中的內(nèi)容即可。

#samba.xml





Samba

ThisoptionallowsyoutoaccessandparticipateinWindowsfileandprintersharin

gnetworks.Youneedthesambapackageinstalledforthisoptiontobeuseful.












Firewalld應(yīng)急命令(一鍵斷網(wǎng))

#關(guān)閉應(yīng)急模式
firewall-cmd--panic-off
#開啟應(yīng)急模式阻斷所有網(wǎng)絡(luò)連接
firewall-cmd--panic-on
#查看應(yīng)急模式的狀態(tài)
firewall-cmd--query-panic
審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8633

    瀏覽量

    151367
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3343

    瀏覽量

    66283
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    263

    瀏覽量

    24409

原文標(biāo)題:【建議收藏】一文爆肝Linux防火墻-Firewalld

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux下的防火墻功能常用知識(shí)點(diǎn)介紹

    在上一節(jié)中,阿銘把firewalld服務(wù)給禁掉了,而是打開了iptables服務(wù),現(xiàn)在再反過來關(guān)閉iptables服務(wù),打開firewalld服務(wù)。操作如下所示:
    的頭像 發(fā)表于 12-27 09:06 ?1246次閱讀

    Linux系統(tǒng)firewalld防火墻實(shí)戰(zhàn)指南

    本文浩道跟大家分享Linux系統(tǒng)firewalld防火墻硬核干貨,通過對(duì)其介紹、相關(guān)概念回顧,數(shù)據(jù)包處理流程、其安裝過程、其常用命令用法、其添加規(guī)則相關(guān)用法去開展,讓大家在****Linux系統(tǒng)中的安全防范再添一塊技能磚!
    發(fā)表于 10-16 16:47 ?831次閱讀
    Linux系統(tǒng)<b class='flag-5'>firewalld</b>防火墻實(shí)戰(zhàn)指南

    軟件架構(gòu)

    軟件架構(gòu)軟件架構(gòu)軟件架構(gòu)
    發(fā)表于 03-29 21:54

    Linux防火墻的配置方法(firewalld服務(wù))

    紅帽RHEL7系統(tǒng)已經(jīng)用firewalld服務(wù)替代了iptables服務(wù),新的防火墻管理命令firewall-cmd與圖形化工具firewall-config。執(zhí)行firewall-config命令
    發(fā)表于 10-30 12:27

    ARM架構(gòu)是什么

    從單片機(jī)轉(zhuǎn)到ARM,主要需要學(xué)習(xí)ARM的架構(gòu),ARM相比單片機(jī)多了一些外設(shè)和總線。在僅僅是裸奔的情況下,如果熟悉了ARM架構(gòu),那么我認(rèn)為使用任何ARM架構(gòu)的芯片和用單片機(jī)將沒有區(qū)別。ARM架構(gòu)
    發(fā)表于 07-01 09:23

    ARMARM的架構(gòu)與ARM架構(gòu)的區(qū)別

    目錄文章目錄目錄ARMARM 的架構(gòu)x86 架構(gòu)與 ARM 架構(gòu)的區(qū)別ARM 的技術(shù)實(shí)現(xiàn)ARMARM 架構(gòu)過去稱作進(jìn)階精簡(jiǎn)指令集機(jī)器(Advanced RISC Machine,更早稱
    發(fā)表于 07-16 06:43

    arm架構(gòu)和cortex架構(gòu)

    arm架構(gòu)和cortex架構(gòu),ARM Cortex內(nèi)核系列提供非常廣泛的具有可擴(kuò)展性的性能選項(xiàng),設(shè)計(jì)人員有機(jī)會(huì)在多種選項(xiàng)中選擇最適合自身應(yīng)用的內(nèi)核,而非千篇一律的采用同一方案。Cortex系列組合
    發(fā)表于 07-27 07:02

    淺析ARM架構(gòu)與STM32系統(tǒng)架構(gòu)

    ARM架構(gòu)是怎樣構(gòu)成的?STM32系統(tǒng)架構(gòu)地基本原理是什么?
    發(fā)表于 10-20 06:10

    什么是RISC架構(gòu)?RISC架構(gòu)的優(yōu)點(diǎn)與缺點(diǎn)

    什么是RISC架構(gòu)?RISC架構(gòu)的優(yōu)點(diǎn)與缺點(diǎn)
    發(fā)表于 02-27 11:22

    Cent OS 7 上的防火墻設(shè)置教程來了

    當(dāng)設(shè)置后,網(wǎng)站就掛了,經(jīng)過多次折騰,判斷就是這條紅色命令的問題,后來又是在網(wǎng)上一通查,最終問題的 firewalld 的問題,對(duì) firewalld 不熟悉,只好安裝 CentOS 6 中通用的 iptables 查詢,來設(shè)置防火墻。
    的頭像 發(fā)表于 05-14 14:38 ?9855次閱讀
    Cent OS 7 上的防火墻設(shè)置教程來了

    什么是架構(gòu)架構(gòu)本質(zhì)

    Linux有架構(gòu),MySQL有架構(gòu),JVM也有架構(gòu),使用Java開發(fā)、MySQL存儲(chǔ)、跑在Linux上的業(yè)務(wù)系統(tǒng)也有架構(gòu),應(yīng)該關(guān)注哪一個(gè)?想要清楚以上問題需要梳理幾個(gè)有關(guān)系又相似的概念
    的頭像 發(fā)表于 09-22 14:18 ?1043次閱讀

    什么是系統(tǒng)架構(gòu) 為什么要做架構(gòu)設(shè)計(jì)

    以上的定義從高層抽象視角對(duì)什么是架構(gòu)給予了自己的回答,相比之下,Neil Ford 在《軟件架構(gòu)基礎(chǔ)》一書中對(duì)架構(gòu)給出了更具象的闡述,其從架構(gòu)組成元素入手,從更偏向?qū)嵺`的角度對(duì)
    的頭像 發(fā)表于 11-10 10:19 ?4426次閱讀

    Linux防火墻配置(iptables和firewalld)

    防火墻就是根據(jù)系統(tǒng)管理員設(shè)定的規(guī)則來控制數(shù)據(jù)包的進(jìn)出,主要是保護(hù)內(nèi)網(wǎng)的安全,目前 Linux 系統(tǒng)的防火墻類型主要有兩種:分別是 [iptables] 和 firewalld
    的頭像 發(fā)表于 03-31 10:09 ?1062次閱讀

    請(qǐng)問Centos7如何配置firewalld防火墻規(guī)則?

    Firewalld是CentOS系統(tǒng)自帶的一種動(dòng)態(tài)防火墻管理工具。是一個(gè)前端工具,用于管理Linux系統(tǒng)上的netfilter防火墻規(guī)則。Firewalld提供了一種簡(jiǎn)化和易于使用的方法來配置和管理防火墻。
    的頭像 發(fā)表于 10-09 09:33 ?1350次閱讀
    請(qǐng)問Centos7如何配置<b class='flag-5'>firewalld</b>防火墻規(guī)則?

    linux服務(wù)器開啟端口命令

    CentOS/RHEL) 首先,確保服務(wù)器上已經(jīng)安裝了firewalld服務(wù),可以使用以下命令檢查: systemctl status firewalld 如果返回"active (running)",說明
    的頭像 發(fā)表于 11-17 10:29 ?1.1w次閱讀