next up previous contents
Next: firewall rich rules Up: Netfilter Previous: block zone   Contents


firewall direct rules

  1. 除了正規的 zones 及 services 語法外,firewalld 還提供 direct rules 及 rich rules 兩種選項,Direct rules 允許管理者直接加入 iptables 過濾語法。
    usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>
    
  2. 先查看目前及永久的 direct rules 都是空的。
    [root@kvm5 ~]# firewall-cmd --permanent --direct --get-all-rules
    [root@kvm5 ~]# firewall-cmd --direct --get-all-rules
    
  3. 加入永久的 direct rules,REJECT 192.168.122.0/24 IP 使用 SSH 22 port。
    [root@kvm5 ~]# firewall-cmd --permanent --direct --add-rule \
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    success
    
  4. 目前的 direct rules 還是空的,永久的 direct rules 有一條 REJECT 規則。
    [root@kvm5 ~]# firewall-cmd --permanent --direct --get-all-rules
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    [root@kvm5 ~]# firewall-cmd --direct --get-all-rules
    
  5. 在 kvm7 連線 kvm5.deyu.wang 還是可以連線,注意顯示的上次連線是從 deyu.wang 而不是 kvm7.deyu.wang,原因為 kvm7.deyu.wang 是經由 deyu.wang 連線到 kvm5.deyu.wang。
    [root@kvm7 ~]# ssh kvm5.deyu.wang
    root@kvm5.deyu.wang's password: 
    Last login: Sun Aug 30 21:38:01 2015 from deyu.wang
    [root@kvm5 ~]# exit
    logout
    Connection to kvm5.deyu.wang closed.
    
  6. --permanent 參數永久有效是指開機生效,但目前狀態並不會改變,所以如果要測試是否生效,必須取消 --permanent 參數再執行一次,才能改變目前的狀態,這與服務的啟動概念一樣。 REJECT 必須大寫。
    [root@kvm5 ~]# firewall-cmd --direct --add-rule ipv4 \
    filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    success
    
  7. 目前的 direct rules 與永久的 direct rules 都有一條 REJECT 規則。
    [root@kvm5 ~]# firewall-cmd --permanent --direct --get-all-rules
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    [root@kvm5 ~]# firewall-cmd --direct --get-all-rules
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    
  8. 在 kvm7 已無法連線 kvm5.deyu.wang。
    [root@kvm7 ~]# ssh kvm5.deyu.wang
    ssh: connect to host kvm5.deyu.wang port 22: Connection refused
    
  9. 移除目前的及永久的 direct rules。
    [root@kvm5 ~]# firewall-cmd --direct --remove-rule \
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    success
    [root@kvm5 ~]# firewall-cmd --direct --permanent --remove-rule \
    ipv4 filter INPUT 0 -s 192.168.122.0/24 -p tcp --dport 22 -j REJECT
    success
    
  10. 列出目前的及永久的 direct rules 都是空的。
    [root@kvm5 ~]# firewall-cmd --permanent --direct --get-all-rules
    [root@kvm5 ~]# firewall-cmd --direct --get-all-rules
    
  11. 詳細的使用說明
    [root@kvm5 ~]# man 5 firewalld.direct
    



De-Yu Wang 2018-09-07