User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • 交换机
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   centos7   ›   正文
centos7

linux firewalld防火墙-富规则

2022-10-28 23:33:31
955  0 0

富规则官方文档 https://firewalld.org/documentation/man-pages/firewalld.richlanguage.html
可表达firewalld的基本语法中未涵盖的自定义防火墙规则

语法

    [source]                
    [destination]               
    service|port|protocol|icmp-block|masquerade|forward-port                
    [log]               
    [audit]             
    [accept|reject|drop|mark]               DROP 的动作是丢包,不响应;REJECT 是拒绝请求,同时向发送方回送拒绝信息

              说明:   
        source      
        指定源地址,可以是一个ipv4/ipv6的地址或网段,不支持使用主机名。

        destination     
        指定目的地址,用法和source相同。

        service     
        服务名称是 f irewalld 提供的其中一种服务。要获得被支持的服务的列表,输入以下命令:     
        firewall-cmd --get-services 。命令为以下形式:       
        service name=service_name

        port        
        端口既可以是一个独立端口数字,又或者端口范围,例如,5060-5062。协议可以指定为 tcp 或       
        udp 。命令为以下形式:       
        port port=number_or_range protocol=protocol

        protocol        
        协议值可以是一个协议 ID 数字,或者一个协议名。预知可用协议,请查阅 /etc/protocols。     
        命令为以下形式:        
        protocol value=protocol_name_or_ID

        icmp-block      
        用这个命令阻绝一个或多个ICMP类型。IC MP 类型是 firewalld支持的ICMP类型之一。      
        要获得被支持的ICMP类型列表,输入以下命令: firewall-cmd --get-icmptypes        
        icmp-block在内部使用 reject 动作,因此不允许指定动作。命令为以下形式:        
        icmp-block name=icmptype_name

        masquerade      
        打开规则里的 IP 伪装。用源地址而不是目的地址来把伪装限制在这个区域内。不允许        
        指定动作。

        forward-port        
        从一个带有指定为 tcp 或 udp 协议的本地端口转发数据包到另一个本地端口,或另一台        
        机器,或另一台机器上的另一个端口。port 和 to-port 可以是一个单独的端口数字,或一个        
        端口范围。而目的地址是一个简单的 IP 地址。不允许指定动作,命令使用内部动作     
        accept 。命令为以下形式:        
        forward-port port=number_or_range protocol=protocol /       
        to-port=number_or_range to-addr=address

        log     
        注册含有内核记录的新连接请求到规则中,比如系统记录。你可以定义一个前缀文本,      
        记录等级可以是 emerg、alert、crit、error、warning、notice、info 或者 debug 中的      
        一个。命令形式:        
        log [prefix=prefix text] [level=log level] limit value=rate/duration        
        (等级用正的自然数 [1, ..] 表达,持续时间的单位为 s 、 m 、 h 、 d 。 s 表示秒, m 表示       
        分钟, h表示小时, d 表示天。最大限定值是 1/d ,意为每天最多有一条日志进入。)

        audit       
        审核为发送到 aud i td 服务的审核记录来注册提供了另一种方法。审核类型可以是      
        ACCEPT、REJECT或DROP中的一种,但不能在 audit命令后指定,因为审核类型将会从规       
        则动作中自动收集。审核不包含自身参数,但可以选择性地增加限制。审核的使用是可选     
        择的。选择 accept 所有新的连接请求都会被允许。选择 reject ,连接将被拒绝,连接来源       
        将接到一个拒绝信息。拒绝的类型可以被设定为使用另一种值。选择 drop , 所有数据      
        包会被丢弃,并且不会向来源地发送任何信息。

    选项          说明      
    --add-rich-rule='rule'          向指定区域中添加rule。       
    --remove-rich-rule='rule'           从指定区域删除rule。        
    --query-rich-rule='rule'            查询rule是否添加到指定区域,如果存在则返回0,否则返回1。     
    --list-rich-rules           输出指定区域的所有富规则。

示例

    rule family="ipv4" source address="10.0.0.1/32" forward-port port="5555" protocol="tcp" to-port="22" to-addr="10.0.0.7" --permanent

    # 针对IP开放指定端口                
        firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="211.23.142.80" port protocol="tcp" port="80" accept"               
        firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.186.5.90" port protocol="tcp" port="80" accept"

    # 针对IP              
        firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"             
        firewall-cmd --permanent --removeadd-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"

    # 针对ip段             
        firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"                
        firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"             
        firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"

        firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.186.7.0/24" drop" --timeout=10

    # 当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.7的22端口                    
        firewall-cmd --add-rich-rule='rule family=ipv4 source address=10.0.0.1 forward-port port=5555 protocol=tcp to-port=22 to-addr=172.16.1.7'

    未验证:
        # firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0" accept'   
        允许192.168.122.0/24主机所有连接。

        # firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'   
        每分钟允许2个新连接访问ftp服务。

        # firewall-cmd --add-rich-rule='rule service name=ftp log limit value="1/m" audit accept'   
        同意新的 IP v4 和 IP v6 连接 FT P ,并使用审核每分钟登录一次。

        # firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24"    
        service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept'  
        允许来自192.168.122.0/24地址的新 IPv4连接连接TFTP服务,并且每分钟记录一次。

        # firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'  
        丢弃所有icmp包

        # firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 reject' -- 
        timeout=10  
        当使用source和destination指定地址时,必须有family参数指定ipv4或ipv6。如果指定超时,   
        规则将在指定的秒数内被激活,并在之后被自动移除。

        # firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service 
        name="dns" audit limit value="1/h" reject' --timeout=300    
        拒绝所有来自2001:db8::/64子网的主机访问dns服务,并且每小时只审核记录1次日志。

        # firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source 
        address=192.168.122.0/24 service name=ftp accept'   
        允许192.168.122.0/24网段中的主机访问ftp服务

        # firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" forward-port    
        to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"' 
        转发来自ipv6地址1:2:3:4:6::TCP端口4011,到1:2:3:4:7的TCP端口4012
其他常用的firewall命令常用命令介绍
   firewall-cmd --state                           ##查看防火墙状态,是否是running
   firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
   firewall-cmd --get-zones                       ##列出支持的zone
   firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
   firewall-cmd --query-service ftp               ##查看ftp服务是否支持,返回yes或者no
   firewall-cmd --add-service=ftp                 ##临时开放ftp服务
   firewall-cmd --add-service=ftp --permanent     ##永久开放ftp服务
   firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
   firewall-cmd --add-port=80/tcp --permanent     ##永久添加80端口
   firewall-cmd --remove-port=80/tcp --permanent  ##永久移除80端口
   firewall-cmd --list-ports                      ##查看已经开放的端口
   iptables -L -n                                 ##查看规则,这个命令是和iptables的相同的
   man firewall-cmd                               ##查看帮助 
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
213 文章 2 评论 201702 浏览
测试
测试