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防火墙后,将地址进行伪装(进行了地址转换)
#firewalld防火墙需要开启转发功能firewall-cmd --zone=internal --add-masquerade
7、端口转发forward-port
-
类似于DNAT(目的地址转换),firewalld防火墙将请求到的流量通过端口转发,转发到其他IP的其他端口(目的的IP和端口都进行了变化)
#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