其它规则

  • 当基本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

最新文章

  1. Ubuntu杂记——链接ln的使用:创建和删除符号链接
  2. 由面试引发的思考:B/S与C/S究竟是何物
  3. RabbitMQ官方中文入门教程(PHP版) 第二部分:工作队列(Work queues)
  4. CentOS 6 使用 yum 安装MongoDB及服务器端配置
  5. Memcached Java Client API详解
  6. 数据结构-Hash表
  7. URAL1495. One-two, One-two 2(dp)
  8. 【开发必备】吐血推荐珍藏的Chrome插件
  9. JSON初探
  10. 使用C#通过调用minitab的COM库自动化生成报表
  11. 性能比较工具runstats
  12. nodemon 或者 Supervisor 监控 Express4.x的代码改动
  13. gvim生存配置
  14. 从零宽断言说起到用python匹配html标签内容
  15. 在CentOS上为Docker开启SELinux
  16. 关于在centos7 64为引用android so引发的问题修复
  17. Nginx实现URL重写
  18. windows网络编程中文 笔记(一)
  19. SDOI2017 R1做题笔记
  20. 01day

热门文章

  1. Bing必应地图中国API-画线与添加多边形
  2. bzoj1415 [Noi2005]聪聪和可可——概率期望
  3. Line: 220 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:220:-1
  4. 函数bsxfun,两个数组间元素逐个计算的二值操作
  5. bzoj3252攻略(线段树+dfs序)
  6. 服务器出现 nginx 502 Bad Gateway
  7. ACM_四数之和
  8. java大数轻松过
  9. 转 linux shell自定义函数(定义、返回值、变量作用域)介绍
  10. duilib属性