保證Linux系統安全之firewalld防火牆配置地址僞裝和端口轉發詳解

通過保證Linux系統安全之firewalld防火牆入門詳解認識Linux系統firewalld防火牆,並可以編寫一些相對簡單一些的防火牆規則。Linux防火牆可以充當路由器(網關)。路由器上的NAT技術,同樣可以通過Linux防火牆來實現。地址僞裝和端口轉發說白了就是路由器中的NAT技術。

一、地址僞裝和端口轉發簡介

firewalld防火牆支持兩種類型的NAT:

(1)地址僞裝

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

(2)端口轉發

端口轉發:基於目標地址進行轉換,也稱爲目的地址轉換或端口映射。通過端口轉發,將指定IP地址及端口的流量轉發到相同計算機上的不同端口。或不同計算機上的端口,企業內部的服務器一般使用私網地址,可以通過端口轉發將使用私網地址的服務器發佈到公網上,供互聯網用戶進行訪問。類似於NAT技術中的靜態NAT。

二、firewall-cmd高級配置

(1)firewalld中的直接規則

直接規則特性:

  • 允許管理員手動編寫的iptables、ip6tables和ebtables 規則插入到Firewalld管理的區域中;
  • 通過firewall-cmd命令中的--direct選項實現;
  • 除顯示插入方式之外,優先匹配直接規則;
[root@localhost ~]# firewall-cmd --direct --add-chain ipv4 raw blacklist
success
[root@localhost ~]# firewall-cmd --direct --add-rule ipv4 raw PREROUTING 0 -s 192.168.0.0/24 -j blacklist
success
[root@localhost ~]# firewall-cmd --direct --add-rule ipv4 raw blacklist 0 -m limit --limit 1/min -j LOG --log-prefix "blacklisted"
success
[root@localhost ~]# firewall-cmd --direct --add-rule ipv4 raw blacklist 1 -j DROP
success

這些僅是把192.168.0.0網段的地址添加到黑名單(使用直接規則)!太麻煩!

(2)使用富語言

富語言特性:

  • 表達性配置語言,無需瞭解iptables語法;
  • 用於表達基本的允許/拒絕規則、配置記錄(面向syslog和auditd)、端口轉發、僞裝和速率限制;

富語言語法格式

rule [family="<rule family>"]
    [ source address="<address>" [invert="True"] ]
    [ destination address="<address>" [invert="True"] ]
    [ <element> ]
    [ log [prefix="<prefix text>"] [level="<log level>"] [limit value="rate/duration"] ]
    [ audit ]
    [ accept|reject|drop ]

規則的每個單一元素都能夠以option=value的形式來採用附加參數。

富語言規則各常用選項:
保證Linux系統安全之firewalld防火牆配置地址僞裝和端口轉發詳解

任何已配置的富規則都會顯示在firewall-cmd --list-all和firewall-cmd --list-all-zones的輸出結果中。

富語言規則各語法解釋:
保證Linux系統安全之firewalld防火牆配置地址僞裝和端口轉發詳解

富語言規則配置示例:

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

在實際環境中如何配置請參考保證Linux系統安全之配置firewalld防火牆的地址僞裝及端口轉發實例,可跟做!!!

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