震惊!!Linux firewalld防火墙居然可以这样使用??!!

67 阅读3分钟

Linux Firewalld防火墙

一、标准规则

1、区域

  • 查看firewall自带区域

    firewall-cmd --get-zones
    
  • 查看区域的规则

    firewall-cmd --zone=trusted --list-all
    
  • 查看当前活动的区域,区域只要有网卡那就是活动区域

    firewall-cmd --get-active-zone
    
  • 查看当前的默认区域,一块网卡接入后默认属于的区域

    firewall-cmd --get-default-zone
    
  • 修改网卡所在区域,将ens36网卡放入internal区域

    firewall-cmd --zone=internal --change-interface=ens36
    
  • 查看默认区域规则

    firewall-cmd --list-all
    

2、服务

  • 查看firewall预定义的服务

    firewall-cmd --get-services
    
  • 在区域中添加对应的服务(没有指定区域,操作的是默认区域)

    firewall-cmd --add-service=http
    

3、ICMP的拒绝类型

  • 查看firewall预定义的icmp类型

    firewall-cmd --get-icmptypes
    
  • 添加icmp-block类型(默认是允许icmp流量)

    firewall-cmd --add-icmp-block=echo-request
    

4、端口

  • 在某个区域去定义某个端口

    firewall-cmd --add-port=80/tcp#等同于firewall-cmd --add-service=http
    
  • 如果服务器使用的是服务(协议)非默认端口,则只能去添加对应的端口

5、ICMP协议支持

  • 默认情况下firewall是允许icmp协议

    #拒绝icmp协议firewall-cmd --add-icmp-block-inversion
    

6、地址伪装masquerade

  • 类似于SNAT(源地址转换),源主机发送报文,通过firewalld防火墙后,将地址进行伪装(进行了地址转换)

    image-20240826121910670

    #firewalld防火墙需要开启转发功能firewall-cmd --zone=internal --add-masquerade
    

7、端口转发forward-port

  • 类似于DNAT(目的地址转换),firewalld防火墙将请求到的流量通过端口转发,转发到其他IP的其他端口(目的的IP和端口都进行了变化)

    image-20240826141349036

    #firewalld防火墙需要开启转发功能firewall-cmd --zone=internal --add-forward-port=port=445:proto=tcp:toport=445:toaddr=192.168.88.11
    

二、富规则

  • 标准规则是无法针对源IP进行控制

1、案例

  • 拒绝88.11向本机发送icmp报文

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.11 protocol value=icmp reject'
    
  • 拒绝88.11向本机发送某种类型的icmp报文

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.11 icmp-block name=echo-request'
    
  • 仅允许192.168.88.0/24进行地址伪装

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.0/24 masquerade'
    
  • 使用富语言创建端口转发规则

    #限制访问某个目的地址时才触发端口转发firewall-cmd --zone=external --add-rich-rule='rule family=ipv4 destination address=192.168.211.200 forward-port port=445 protocol=tcp to-port=445 to-addr=192.168.88.11'
    
  • 仅允许某台主机可以访问本机的http服务

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.1 service name=http accept'
    
  • 仅允许某台主机可以访问本机的80/tcp端口

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.1 port port=80 protocol=tcp accept'
    

2、创建永久或临时性规则

  • 永久性规则服务重启后规则照样存在,如果创建的是永久性规则,不会立即生效,需要去加载

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.1 port port=80 protocol=tcp accept' --permanentfirewall-cmd --reload
    
  • 临时性规则

    firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.88.1 port port=80 protocol=tcp accept' --timeout=10