防火墻概述
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)
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
用另外一臺(tái)機(jī)器telnet端口 telnet 192.168.182.149 8888
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
##打開2888端口,使用默認(rèn)zone,他會(huì)用UDP協(xié)議,立馬生效,只是臨時(shí)的,重啟服務(wù)/重啟機(jī)器將失效
firewall-cmd--add-port=2888/udp
#查看
firewall-cmd--list-ports
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
3、【刪】除規(guī)則
1、語法格式(端口):
firewall-cmd--zone=作用域--remove-port=端口數(shù)字/通訊協(xié)議
示例:
firewall-cmd--zone=public--remove-port=2181/tcp
2、語法格式(源IP):
firewall-cmd--zone=作用域--remove-source=端口數(shù)字/通訊協(xié)議
示例:
firewall-cmd--zone=public--remove-source=192.168.182.0/24
4、【改】正規(guī)則
1、修改當(dāng)前的默認(rèn)區(qū)為work
firewall-cmd--set-default-zone=work
#查看
firewall-cmd--get-default-zone=work
直接規(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)投訴
原文標(biāo)題:【建議收藏】一文爆肝Linux防火墻-Firewalld
文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
在上一節(jié)中,阿銘把firewalld服務(wù)給禁掉了,而是打開了iptables服務(wù),現(xiàn)在再反過來關(guān)閉iptables服務(wù),打開firewalld服務(wù)。操作如下所示:
發(fā)表于 12-27 09:06
?1246次閱讀
本文浩道跟大家分享Linux系統(tǒng)firewalld防火墻硬核干貨,通過對(duì)其介紹、相關(guān)概念回顧,數(shù)據(jù)包處理流程、其安裝過程、其常用命令用法、其添加規(guī)則相關(guān)用法去開展,讓大家在****Linux系統(tǒng)中的安全防范再添一塊技能磚!
發(fā)表于 10-16 16:47
?831次閱讀
軟件架構(gòu)軟件架構(gòu)軟件架構(gòu)
發(fā)表于 03-29 21:54
紅帽RHEL7系統(tǒng)已經(jīng)用firewalld服務(wù)替代了iptables服務(wù),新的防火墻管理命令firewall-cmd與圖形化工具firewall-config。執(zhí)行firewall-config命令
發(fā)表于 10-30 12:27
從單片機(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)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 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)是怎樣構(gòu)成的?STM32系統(tǒng)架構(gòu)地基本原理是什么?
發(fā)表于 10-20 06:10
什么是RISC架構(gòu)?RISC架構(gòu)的優(yōu)點(diǎn)與缺點(diǎn)
發(fā)表于 02-27 11:22
當(dāng)設(shè)置后,網(wǎng)站就掛了,經(jīng)過多次折騰,判斷就是這條紅色命令的問題,后來又是在網(wǎng)上一通查,最終問題的 firewalld 的問題,對(duì) firewalld 不熟悉,只好安裝 CentOS 6 中通用的 iptables 查詢,來設(shè)置防火墻。
發(fā)表于 05-14 14:38
?9855次閱讀
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次閱讀
以上的定義從高層抽象視角對(duì)什么是架構(gòu)給予了自己的回答,相比之下,Neil Ford 在《軟件架構(gòu)基礎(chǔ)》一書中對(duì)架構(gòu)給出了更具象的闡述,其從架構(gòu)組成元素入手,從更偏向?qū)嵺`的角度對(duì)
發(fā)表于 11-10 10:19
?4426次閱讀
防火墻就是根據(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次閱讀
Firewalld是CentOS系統(tǒng)自帶的一種動(dòng)態(tài)防火墻管理工具。是一個(gè)前端工具,用于管理Linux系統(tǒng)上的netfilter防火墻規(guī)則。Firewalld提供了一種簡(jiǎn)化和易于使用的方法來配置和管理防火墻。
發(fā)表于 10-09 09:33
?1350次閱讀
CentOS/RHEL) 首先,確保服務(wù)器上已經(jīng)安裝了firewalld服務(wù),可以使用以下命令檢查: systemctl status firewalld 如果返回"active (running)",說明
發(fā)表于 11-17 10:29
?1.1w次閱讀
評(píng)論