firewall 防火墙
参数
–permanent 永久生效
–add-port= 允许访问的某个端口号(包括协议名)
–remove-port= 移除允许访问的端口号
–zone= 设置区域 (区域可选,也可以不打这个参数
–list-all 显示所有指定区域的所有规则(不是永久生效不显示
–reload 重新加载 (打完所有命令后记得打这个
放行8099端口
[root@wk ~]# firewall-cmd --permanent --add-port=8099/tcp
success
[root@wk ~]# firewall-cmd --reload //重新加载
success
[root@wk ~]# firewall-cmd --list-all //查看
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: cockpit dhcpv6-client ssh
ports: 8099/tcp //这个就是添加的端口
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
富规则
先更新一下帮助手册(man
更新帮助手册
[root@localhost ~]# mandb
man -k 检索帮助
[root@localhost ~]# man -k firewall
[root@localhost ~]# man firewalld.richlanguage
/EX 就可以查看了
最常用的是3
Example 3
Allow new IPv4 connections from address 192.168.0.0/24 for service tftp
and log 1 per minutes using syslog
rule family="ipv4" source address="192.168.0.0/24" service name="tftp
" log prefix=“tftp” level=“info” limit value=“1/m” accept
设置富规则
案例一
放行192.168.109.0/24 通过 http 服务
[root@localhost sky]# firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.109.0/24” service name=“http” accept’
success
[root@localhost sky]# firewall-cmd --reload //重新加载
success
[root@localhost sky]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“192.168.109.0/24” service name=“http” accept
案例二
在server0上部署httpd服务,通过添加富规则,只允许172.25.0.10/32访问,并且记录日志,日志级别为notice,日志前缀为"NEW HTTP ",限制每秒最多3个并发 ,要求持久化生效
[root@localhost ~]# firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“172.25.0.10/32” service name=“http” log prefix=“NEW HTTP” level=“notice” limit value=“3/s” accept’
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens160
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“192.168.109.0/24” service name=“http” accept
rule family=“ipv4” source address=“172.25.0.10/32” service name=“http” log prefix=“NEW HTTP” level=“notice” limit value=“3/s” accept
区域
1.trusted(信任区域):允许所有的传入流量
2.public(公共区域):允许与ssh或dhcpv6-client预定义服务匹配的传入流量,其余均拒接。是新添加网络接口的默认区域
3.external(外部区域):允许与ssh预定义服务匹配的传入流量,其余均拒绝。默认将通过此区域转发的ipv4传出流量将进行地址伪装,可用于为路由器启动伪装功能的外部网络。
4.home(家庭区域):允许与ssh、mdns、samba-client或dhcpv6-client预定义服务匹配的流入流量,其余均拒绝。
5.internal(内部区域):默认值时与home区域相同。
6.work(工作区域):允许与ssh、dhcpv6-client预定义服务匹配的传入流量,其余均拒绝
7.dmz(隔离区域也称为非军事区域):允许与ssh预定义服务匹配的传入流量,其余均拒绝
8.block(限制区域):拒绝所有传入流量
9.drop(丢弃区域):丢弃所有传入流量,并且不产生包含ICMP的错误响应。
案例
1.允许TCP的443端口到internal区域
firewall-cmd --add-port=443/tcp --zone=internal
2.从internal区域将tcp的443号端口移除
firewall-cmd --remove-port=443/tcp --zone=internal