博文目錄:
一、firewalld高級配置
1、firewalld支持的NAT
2、IP地址偽裝
3、端口轉(zhuǎn)發(fā)
二、firewalld-cmd高級配置
1、firewalld中理解直接規(guī)則
2、使用富語言
3、富規(guī)則命令
4、富規(guī)則配置舉例:創(chuàng)新互聯(lián)長期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為呼瑪企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站建設(shè),呼瑪網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
firewalld支持兩種類型的NAT:
IP地址偽裝;
- 端口轉(zhuǎn)發(fā);
地址偽裝:通過地址偽裝,NAT設(shè)備將經(jīng)過設(shè)備的包轉(zhuǎn)發(fā)到指定的接收方,同時(shí)將通過的數(shù)據(jù)包的源地址更改為其自己的接口地址。當(dāng)返回的數(shù)據(jù)包到達(dá)時(shí),會(huì)將目的地址修改為原始主機(jī)的地址并做路由。地址偽裝可以實(shí)現(xiàn)局域網(wǎng)多個(gè)地址共享單一公網(wǎng)地址上網(wǎng)。類似于NAT技術(shù)中的端口多路復(fù)用(PAT)。IP地址偽裝僅支持ipv4,不支持ipv6。
端口轉(zhuǎn)發(fā):也可以稱之為目的地址轉(zhuǎn)換或端口映射。通過端口轉(zhuǎn)發(fā),將指定IP地址及端口的流量轉(zhuǎn)發(fā)到相同計(jì)算機(jī)上的不同端口,或不同計(jì)算機(jī)上的端口。一般公司內(nèi)網(wǎng)的服務(wù)器都采用私網(wǎng)地址,然后通過端口轉(zhuǎn)發(fā)將使用私網(wǎng)地址的服務(wù)器發(fā)布到公網(wǎng)上,以便讓互聯(lián)網(wǎng)用戶訪問。(例如,當(dāng)接收互聯(lián)網(wǎng)用戶的HTTP請求時(shí),網(wǎng)關(guān)服務(wù)器判斷數(shù)據(jù)包的目標(biāo)地址與目標(biāo)端口,一旦匹配指定規(guī)則,則將其目標(biāo)地址修改為內(nèi)網(wǎng)真正的服務(wù)器地址,從而建立有效連接)。
firewalld提供了“direct interface”(直接端口),它允許管理員手動(dòng)編寫的iptables、ip6tables和ebtables規(guī)則插入firewalld管理的區(qū)域中,適用于應(yīng)用程序,而不是用戶。如果對iptables不太熟,不建議使用直接接口,可能會(huì)無意中導(dǎo)致防火墻被***。firewalld保持對所增加項(xiàng)目的追蹤,所以他還能質(zhì)詢firewalld和發(fā)現(xiàn)使用直接端口模式的程序造成的更改。直接端口通過firewalld-cmd命令中的--direct選項(xiàng)實(shí)現(xiàn)。除非將直接規(guī)則顯式插入firewalld管理的區(qū)域,否則將首先解析直接規(guī)則,然后再解析其他firewalld規(guī)則。
執(zhí)行以下命令即可添加一些直接規(guī)則以將某個(gè)IP范圍列入黑名單:
[root@centos01 ~]# firewall-cmd --direct --permanent --add-chain ipv4 raw blacklist
success
[root@centos01 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw PREROUTING 0 -s 192.168.10.0/24 -j blacklist
success
[root@centos01 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted"
success
[root@centos01 ~]# firewall-cmd --direct --permanent --add-rule ipv4 raw blacklist 1 -j DROP
success
firewalld的富語言提供了一種不需要了解iptables語法的通過高級語言配置復(fù)雜的IPv4和IPv6防火墻規(guī)則的機(jī)制,為管理員提供了一種表達(dá)性語言,通過這種語言,可以表達(dá)firewalld的基本語法中未涵蓋的自定義防火墻規(guī)則。(例如,僅允許從單個(gè)IP地址而非通過某個(gè)區(qū)域路由的所以IP地址連接到服務(wù))。
富規(guī)則可用于表達(dá)基本的允許/拒絕規(guī)則,也可以用于配置記錄(面向syslog和auditd),以及端口轉(zhuǎn)發(fā)、偽裝和速率限制。下面簡單看一下表達(dá)富規(guī)則的基本語法:
規(guī)則的每個(gè)單一元素都能夠以option=value的形式來采用附加參數(shù)。
一旦向某個(gè)區(qū)域(一般是指防火墻)中添加了多個(gè)規(guī)則,規(guī)則的排序會(huì)在很大程度上影響防火墻的行為。對于所有的區(qū)域,區(qū)域內(nèi)的規(guī)則的基本排序是相同的。如果區(qū)域中的任何規(guī)則與包均不匹配,通常會(huì)拒絕此包,但是區(qū)域可能具有不同的默認(rèn)值。(例如,可信區(qū)域?qū)⒔邮杖魏尾黄ヅ涞陌4送猓谄ヅ淠硞€(gè)記錄規(guī)則后,將繼續(xù)正常處理包)。
直接規(guī)則是個(gè)例外。大部分直接規(guī)則將首先進(jìn)行解析,然后由firewalld進(jìn)行其他處理,但是直接規(guī)則語法允許管理員在任何區(qū)域中的任何位置插入任何規(guī)則。
為了便于測試和調(diào)試,幾乎所有規(guī)則都可以與超時(shí)一起添加到運(yùn)行時(shí)配置。當(dāng)包含超時(shí)的規(guī)則添加到防火墻時(shí),計(jì)時(shí)器便針對該規(guī)則開始倒計(jì)時(shí),一旦規(guī)則的計(jì)時(shí)器到達(dá)0秒,便從運(yùn)行時(shí)配置中刪除該規(guī)則。
在使用遠(yuǎn)程防火墻時(shí),使用超時(shí)會(huì)是一種極其有用的工具,特別是在測試更復(fù)制的規(guī)則集時(shí)。如果規(guī)則有效,則管理員可以再次添加該規(guī)則;如果規(guī)則沒有按照預(yù)期運(yùn)行,甚至可能將管理員鎖定而使其無法進(jìn)入系統(tǒng),那么規(guī)則將被自動(dòng)刪除,以允許管理員可以繼續(xù)工作。通過在啟用規(guī)則的firewalld-cmd命令的結(jié)尾追加選項(xiàng)--timeout<TIMEINSECONDS>可向運(yùn)行時(shí)規(guī)則中添加超時(shí)。
firewalld-cmd有四個(gè)選項(xiàng)可以用于處理富規(guī)則,所有這些選項(xiàng)都可以同常規(guī)的--permanent或--zone=<ZONE>選項(xiàng)組合使用,如下所示:
--add-rich-rule='RULE' #向指定區(qū)域添加RULE,如果沒有指定區(qū)域,則為默認(rèn)區(qū)域;
--remove-rich-rule='RULE' #從指定區(qū)域中刪除RULE,如果沒有指定區(qū)域,則為默認(rèn)區(qū)域;
--query-rich-rule='RULE' #查詢RULE是否已添加到指定區(qū)域,如果未指定區(qū)域,則為默認(rèn)區(qū)域。規(guī)則存在,則返回0,否則返回1;
- --list-rich-rules #輸出指定區(qū)域的所有富規(guī)則,如果未指定區(qū)域,則為默認(rèn)區(qū)域;
任何已配置的富規(guī)則都會(huì)顯示在firewall-cmd --list-all 和 firewall-cmd --list-all-zone的輸出結(jié)果中。具有語法解釋如下所示:
source:限制源IP地址,源地址可以是一個(gè)IPv4、IPv6地址或者一個(gè)網(wǎng)絡(luò)地址段;
destination:限制目標(biāo)地址,目標(biāo)地址使用跟源地址相同的語法;
- element:要素,該項(xiàng)只能是以下幾種要素類型之一:service、port、protocol、icmp-block、masquerade和forward-port;
①service:服務(wù)名稱是firewalld提供的其中一種服務(wù)。要獲得支持的服務(wù)列表,輸入以下命令:firewalld-cmd--get-services。如果一個(gè)服務(wù)提供了一個(gè)目標(biāo)地址,它和規(guī)則中的目標(biāo)地址沖突,則會(huì)導(dǎo)致一個(gè)錯(cuò)誤。命令格式為:service name=service_name;
②port:端口可以是一個(gè)獨(dú)立端口數(shù)字,或者是端口范圍,如5060~5062.協(xié)議為TCP或UDP。命令格式為:port port=number_or_range protocol=protocol;
③protocol:協(xié)議,可以是一個(gè)協(xié)議ID號,或者一個(gè)協(xié)議名。查詢可用協(xié)議,請查看/etc/protocols。命令格式為:protocol value=protocol_name_or_ID;
④icmp-block:阻斷一盒或多個(gè)ICMP類型。要獲得支持的ICMP類型列表,輸入firewalld-cmd--get-icmptypes命令即可查看。命令格式為:icmp-blick name=icmptype_name;
⑤masquerade:規(guī)則里的IP偽裝。用源地址而部署目的地址來把偽裝限制在一個(gè)范圍內(nèi);
⑥forward-port:將指定的TCP或UDP協(xié)議的數(shù)據(jù)包轉(zhuǎn)發(fā)到本機(jī)的其他端口,或另一臺(tái)機(jī)器,或另一臺(tái)機(jī)器上的其他端口。port和to-port可以是一個(gè)單獨(dú)的端口數(shù)字,或一個(gè)端口范圍。而目的地址是一個(gè)簡單的IP地址。命令格式為:forward-port port=number_or_range protocol=protocol to-port=number_or_range to-addr=address;
log:注冊有內(nèi)核日志的連接請求到規(guī)則中,如系統(tǒng)日志。可以定義一個(gè)前綴文本把日志信息作為前綴加入。日志等級可以是emerg、alert、crit、error、warning、notice、info或者debug中的一個(gè)。可以選擇日志的用法,按以下方式限制日志:log [prefix text] [level=log level] limint value=rate/duration。持續(xù)時(shí)間的單位為s、m、h、d。s表示秒,m表示分鐘,h表示小時(shí),d表示天。最大限定值是1/d(每天最多有一條日志進(jìn)入);
audit:審核,審核類型可以是accept、reject或drop中的一種,但不能再audit命令后指定,因?yàn)閷徍祟愋蛯?huì)從規(guī)則動(dòng)作中自動(dòng)收集。審核不包含自身參數(shù),但可以選擇性地增加限制。審核的使用是可選擇的;
- accept|reject|drop:可以是accept、reject或drop中的一個(gè)行為。命令格式為:accept | reject連接將被拒絕,發(fā)起端將接到一個(gè)拒絕信息。指定drop時(shí),所有數(shù)據(jù)包會(huì)被丟棄,并且不會(huì)向發(fā)起端發(fā)送任何信息;
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule protocolvalue=ah accept'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule service name=ftp log limit value=1/m audit accept'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name= "tftp" log prefix="tftp" level="info" limit value="1/m" accept'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule family="ipv6" source address="1:2:3:4:6::" service name="radius" log prefix="dns" level="info" limit value="3/m" reject'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule family="ipv6" service name="radius" accept'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule family="ipv4" source address="192.168.2.2" accept'
success
[root@centos01 ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule protocol value="esp" drop'
success
[root@centos01 ~]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept'
success
[root@centos01 ~]# firewall-cmd --zone=work --add-rich-rule='rule service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'
success
[root@centos01 ~]# firewall-cmd --add-rich-rule= 'rule family=ipv4 source address=192.168.2.0/24 service name=dns audit limit value="1/h" reject' --timeout=300
success下一篇博客再配置firewalld防火墻的地址偽裝和端口轉(zhuǎn)發(fā)案例。
—————— 本文至此結(jié)束,感謝閱讀 ——————
網(wǎng)頁題目:Centos7的firewalld防火墻地址偽裝和端口轉(zhuǎn)發(fā)原理
網(wǎng)頁路徑:http://www.chinadenli.net/article14/gshhde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)