centos 7的firewalld防火牆配置IP僞裝和端口轉發(內附配置案例)

IP地址僞裝和端口轉發都屬於NAT(網絡地址轉換)。

地址僞裝和端口轉發的區別如下:

IP地址僞裝:
通過地址僞裝,NAT設備將經過設備的包轉發到指定的接收方,同時將通過的數據包
源地址更改爲其NAT設備自己的接口地址。當返回的數據包到達時,會將目的地址修改
爲原始主機的地址並做路由。地址僞裝可以實現局域網多個地址共享單一公網地址上網。
類似於NAT技術中的端口多路複用(PAT)。IP地址僞裝僅支持ipv4,不支持ipv6。


端口轉發:
也可以稱之爲目的地址轉換或端口映射。通過端口轉發,將指定IP地址及端口的流量轉發到相同計算機上的不同端口,或不同計算機上的端口。一般公司內網的服務器都採用私網地址,然後通過端口轉發將使用私網地址的服務器發佈到公網上。

在firewalld中,有一個富語言的概念,firewalld的富語言提供了一種不需要了解iptables語法的通過高級語言配置複雜的防火牆規則的機制,通過這種語言,可以表達firewalld的基本語法中不能實現的自定義防火牆規則。

富規則可用於表達基本的允許/拒絕規則,也可以用於配置記錄(面向syslog和auditd),以及端口轉發、僞裝和速率限制。

在firewalld防火牆配置中有一個超時的工具,當包含超時的規則添加到防火牆時,計時器便針對該規則開始倒計時,一旦倒計時達到0秒,便從運行時配置中刪除該規則。

在測試更復雜的規則集時,如果規則有效,那麼我們可以再次添加該規則,如果規則沒有實現我們預期的效果,甚至可能將我們管理員鎖定而使其無法進入系統,那麼規則將被自動刪除,以便我們運維人員繼續進行測試工作。

在使用firewall-cmd進行配置規則時,在命令的結尾追加選項--timeout=<timeval> 即可,--help中關於該選項的參考如下(單位可以是秒、分、時):

 Enable an option for timeval time, where timeval is
                       a number followed by one of letters 's' or 'm' or 'h'
                       Usable for options marked with [T]

firewall-cmd有四個選項可以用於處理富規則,所有這些選項都可以和常規的--permanent或--zone=<ZONE>選項組合使用,具體如下:
centos 7的firewalld防火牆配置IP僞裝和端口轉發(內附配置案例)

在任何已配置的富規則都會顯示在firewall-cmd --list-all 和 firewall-cmd --list-all-zone的輸出結果中。具有語法解釋如下所示:

centos 7的firewalld防火牆配置IP僞裝和端口轉發(內附配置案例)

富規則配置舉例:

① 爲認證報頭協議AH使用新的ipv4和ipv6連接
[root@localhost /]# firewall-cmd --add-rich-rule='rule protocol value=ah accept'
②允許新的ipv4和ipv6連接ftp,並使用審覈每分鐘記錄一次
[root@localhost /]# firewall-cmd --add-rich-rule='rule service name=ftp log limit value=1/m audit accept'
③允許來自192.168.1.0/24地址的TFTP協議的ipv4連接,並且使用系統日誌每分鐘記錄一次
[root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="tftp" log prefix="tftp" level="info" limit value="1/m" accept'
④爲RADIUS協議拒絕所有來自1:2:3:4:6::的新ipv6連接,日誌前綴爲“dns”,級別爲“info”,並每分鐘最多記錄3次。接受來自其他發起端新的ipv6連接:
[root@localhost /]# 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'
[root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv6" service name="radius" accept'
⑤將源192.168.2.2地址加入白名單,以允許來自這個源地址的所有連接:
[root@localhost /]# firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.2.2" accept'
⑥拒絕來自public區域中IP地址192.168.0.11的所有流量:
[root@localhost /]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.0.11/32 reject'
⑦丟棄來自默認區域中任何位置的所有傳入的ipsec esp協議包:
[root@localhost /]# firewall-cmd --add-rich-rule='rule protocol value="esp" drop'
⑧在192.168.1.0/24子網的DMZ區域中,接收端口7900~7905的所有TCP包:
[root@localhost /]# firewall-cmd --zone=dmz --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=7900-1905 protocol=tcp accept'
⑨接收從work區域到SSH的新連接,以notice級別且每分鐘最多三條消息的方式將新連接記錄到syslog:
[root@localhost /]# firewall-cmd --zone=work --add-rich-rule='rule service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'
⑩在接下來的5min內(通過--timeout=300配置項實現),拒絕從默認區域中的子網192.168.2.0/24到DNS的新連接,並且拒絕的連接將記錄到audit系統,且每小時最多一條消息。

[root@localhost /]# 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

這篇文章寫的有點多了,爲了避免雜亂,所以就將配置firewall防火牆的地址僞裝和端口轉發的配置實例寫到另一篇博文裏吧!博文鏈接: https://blog.51cto.com/14154700/2410203

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章