next up previous contents
Next: Masquerading and Port Forwarding Up: Netfilter Previous: firewall direct rules   Contents


firewall rich rules

  1. Rich rules 可以使用基本的 allow/deny rules,也可以設定為 syslog and auditd, port forwards, masquerading, 及 rate limiting。多條規則同時在同一個 zone,規則的順序對防火牆影響很大,其規則的順序如下:
    1. port forwarding and masquerading 規則
    2. logging 規則,匹配此規則封包會繼續被處理。
    3. allow 規則
    4. deny 規則
  2. 以上規則順序,先匹配先執行,如果一封包沒有匹配 zone 內的任何規則,基本上是被限制,但還是要看其他的 zone 是否接受。
  3. 基本語法:
    rule
      [source]
      [destination]
      service|port|protocol|icmp-block|masquerade|forward-port
      [log]
      [audit]
      [accept|reject|drop]
    
  4. 詳細語法說明:
    [root@kvm5 ~]# man 5 firewalld.richlanguage
    
  5. 要從主機 deyu.wang 測試 kvm5.deyu.wang 防火牆環境,先在 deyu.wang 主機上以 root 身份新增 virbr0 網卡 IP 192.168.111.1/24。
    [root@dywssd ~]# ifconfig virbr0:1 192.168.111.1/24 up
    
  6. 查看主機 deyu.wang 有 192.168.122.1 及 192.168.111.1 兩個 IP。
    [root@dywssd ~]# ifconfig | grep virbr0 -A1
    virbr0    Link encap:Ethernet  HWaddr 52:54:00:27:14:EF  
              inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
    --
    virbr0:1  Link encap:Ethernet  HWaddr 52:54:00:27:14:EF  
              inet addr:192.168.111.1  Bcast:192.168.111.255  Mask:255.255.255.0
    
  7. kvm5.deyu.wang 未限制 ssh 連線時,主機 deyu.wang 以 192.168.122.1 及 192.168.111.1 兩個 IP 都能順利連線。
    [root@dywssd ~]# ssh -b 192.168.111.1 kvm5.deyu.wang
    root@kvm5.deyu.wang's password: 
    Last login: Mon Dec 14 14:20:38 2015 from 192.168.122.1
    [root@kvm5 ~]# exit
    logout
    Connection to kvm5.deyu.wang closed.
    [root@dywssd ~]# ssh -b 192.168.122.1 kvm5.deyu.wang
    root@kvm5.deyu.wang's password: 
    Last login: Mon Dec 14 14:21:26 2015 from 192.168.111.1
    [root@kvm5 ~]# exit
    logout
    Connection to kvm5.deyu.wang closed.
    
  8. 測試後馬上取消 virbr0:1 網卡設定,以免影響後續測試。
    [root@dywssd ~]# ifconfig virbr0:1 192.168.111.1/24 down
    

  9. public zone 開放 ssh 服務,所以若要求 192.168.122.0/24 可以使用 SSH 連線,而 192.168.111.0/24 不能使用 SSH 連線,則只需要設定限制的 rich rules。在預設的 public zone 限制 192.168.111.0/24 不可以使用 SSH 連線,其中 reject 必須小寫。
    [root@kvm5 ~]# firewall-cmd --permanent --zone=public --add-rich-rule \
    "rule family="ipv4" source address="192.168.111.0/24" port port="22" protocol="tcp" reject"
    success
    [root@kvm5 ~]# firewall-cmd --reload 
    success
    
  10. 查看防火牆狀態,新增了拒絕 192.168.111.0/24 使用 ssh 22 port 的規則。
    [root@kvm5 ~]# firewall-cmd --list-all 
    public (default, active)
      interfaces: eth0
      sources: 
      services: dhcpv6-client ssh
      ports: 
      masquerade: no
      forward-ports: 
      icmp-blocks: 
      rich rules: 
    	rule family="ipv4" source address="192.168.111.0/24" port port="22" protocol="tcp" reject
    
  11. kvm5.deyu.wang 限制 192.168.111.0/24 ssh 連線,主機 deyu.wang ssh 綁定 192.168.122.1 可以成功連線 kvm5.deyu.wang,但若綁定 192.168.111.1 則無法順利連線。
    [root@dywssd ~]# ssh -b 192.168.122.1 kvm5.deyu.wang
    root@kvm5.deyu.wang's password: 
    Last login: Mon Dec 14 14:07:16 2015 from 192.168.122.1
    [root@kvm5 ~]# exit
    logout
    Connection to kvm5.deyu.wang closed.
    [root@dywssd ~]# ssh -b 192.168.111.1 kvm5.deyu.wang
    ssh: connect to host kvm5.deyu.wang port 22: Connection refused
    
  12. 如果設定沒錯,但 ssh 綁定 192.168.111.1 還是可以連線,要檢查 client 的 iptables 是否做 POSTROUTING?
    -A POSTROUTING -i virbr0 -j MASQUERADE
    



2017-11-30