Linux之iptables(六、rich規則)


其它規則

  • 當基本firewalld語法規則不能滿足要求時,可以使用以下更復雜的規則
  • rich-rules 富規則,功能強,表達性語言
  • Direct configuration rules 直接規則,靈活性差
  • 幫助:man 5 firewalld.direct

管理rich規則

  • rich規則比基本的firewalld語法實現更強的功能,不僅實現允許/拒絕,還可以實現日志syslog和auditd,也可以實現端口轉發,偽裝和限制速率
  • rich語法:

    rule

[source]
[destination]
service|port|protocol|icmp-block|masquerade|forward-port
[log]
[audit]
[accept|reject|drop]
man 5 firewalld.richlanguage

  • man 5 firewalld.richlanguage

規則

  • 規則實施順序:
  • 該區域的端口轉發,偽裝規則
  • 該區域的日志規則
  • 該區域的允許規則
  • 該區域的拒絕規則
  • 每個匹配的規則生效,所有規則都不匹配,該區域默認規則生效

rich規則選項

rich規則示例

  • 拒絕從192.168.0.11的所有流量,當address 選項使用source 或 destination時,必須用family= ipv4 |ipv6

  firewall-cmd --permanent --zone=classroom --add-rich-rule='rule
  family=ipv4 source address=192.168.0.11/32 reject‘

  • 限制每分鍾只有兩個連接到ftp服務

  firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’

  • 拋棄esp( IPsec 體系中的一種主要協議)協議的所有數據包

  firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'

  • 接受所有192.168.1.0/24子網端口5900-5905范圍的TCP流量

  firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4
  source address=192.168.1.0/24 port port=5900-5905 protocol=tcp accept'

rich日志規則

  • log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]
  • <LOGLEVEL> 可以是emerg,alert, crit, error, warning, notice, info, debug.
  • <DURATION> s:秒, m:分鍾, h:小時, d:天
  • audit [limit value="<RATE/DURATION>"]

rich日志規則實例

  • 接受ssh新連接,記錄日志到syslog的notice級別,每分鍾最多三條信息

firewall-cmd --permanent --zone=work --add-rich-rule='rule service
name="ssh" log prefix="ssh " level="notice" limit value="3/m" accept

  • 從2001:db8::/64子網的DNS連接在5分鍾內被拒絕,並記錄到日志到audit,每小時最大記錄一條信息

  firewall-cmd --add-rich-rule='rule family=ipv6 source
  address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300

 規則示例

  • firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.X.10/32 service name="http" log level=notice prefix="NEW HTTP " limit value="3/s" accept'
  • firewall-cmd --reload
  • tail -f /var/log/messages
  • curl http://serverX.example.com

偽裝和端口轉發

  • NAT網絡地址轉換,firewalld支持偽裝和端口轉發兩種NAT方式
  • 偽裝NAT
  • firewall-cmd --permanent --zone=<ZONE>
  • firewall-cmd --query-masquerade 檢查是否允許偽裝
  • firewall-cmd --add-masquerade 允許防火牆偽裝IP
  • firewall-cmd --remove-masquerade 禁止防火牆偽裝IP
  • 示例:
  • firewall-cmd --add-rich-rule='rule family=ipv4 address=192.168.0.0/24 masquerade'

端口轉發

  • 端口轉發:將發往本機的特定端口的流量轉發到本機或不同機器的另一個端口。通常要配合地址偽裝才能實現
  • firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=<IPADDR>] 說明:toport= 和toaddr= 至少要指定一個
  • 示例:
  • 轉發傳入的連接9527/TCP,到防火牆的80/TCP到public zone 的192.168.0.254
  • firewall-cmd --add-masquerade 啟用偽裝
  • firewall-cmd --zone=public --add-forward-
  • port=port=9527:proto=tcp:toport=80:toaddr=192.168.0.254

rich規則

  • rich規則語法:
  • forward-port port=<PORTNUM> protocol=tcp|udp [to-port=<PORTNUM>] [to-addr=<ADDRESS>]
  • 示例:
  • 轉發從192.168.0.0/24來的,發往80/TCP的流量到防火牆的端口8080/TCP

firewall-cmd --zone=work --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080'

rich規則示例

  • firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.X.10/32 forward-port port=443 protocol=tcp to-port=22'
  • firewall-cmd --reload
  • ssh -p 443 serverX.example.com

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM