目 录CONTENT

文章目录

firewalld

简中仙
2023-05-25 / 0 评论 / 0 点赞 / 51 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2023-10-08,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、firewalld

firewalld有规则两种状态

  • 运行时(runtime):修改规则马上生效,但是临时生效
  • 持久配置(permanent): 修改后需要重载才会生效
  • firewall-cmd --permanent RULE
  • firewall-cmd --reload

1、firewalld的预定义区域说明

区域说明
trusted(信任区域)可接收所有的网络连接
public(公共区域)允许指定的进入链接
work(工作区域)允许受信任的计算机被限制的进入链接
home(家庭区域)同work,如果流量和ssh,dhcpv6-client等服务相关,则允许
internal(内部区域)同work,范围针对所有互联网用户
external(外部区域)同public,处理伪装的进入链接,一般用于路由转发
dmz(隔离区域也称为军事区域)允许受限制的进入链接
block(限制区域)拒绝所有外部发起的链接,允许内部发起的链接
drop(丢弃区域)丢弃所有进入的包,而不给出任何回应

2、firewall的状态

# firewall-cmd --state                	# 查看防火墙的状态
# firewall-cmd --reload                	# 重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置
# firewall-cmd --complete-reload        # 重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)
# firewall-cmd --panic-on               # 紧急模式,强制关闭所有网络连接,--panic-off是关闭紧急模式
# firewall-cmd --panic-off  			# 取消应急模式,但需要重启firewalld后才可以远程ssh
# firewall-cmd --query-panic  			# 查看是否为应急模式

3、firewall命令

1、基本命令

查看firewalld服务当前所使用的区域

# firewall-cmd --get-default-zone 
public

显示默认区域的所有规则

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client https ssh
  ports: 8080-8081/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

查询ens33网卡在firewalld服务中的区域

# firewall-cmd --get-zone-of-interface=ens33 
public

将网络接口ens33对应区域更改为internal区域

# firewall-cmd --zone=public --change-interface=ens33
success
# firewall-cmd --zone=internal --list-interfaces

# firewall-cmd --get-zone-of-interface=ens33
public

显示所有激活区域

# firewall-cmd --get-active-zones
public
  interfaces: ens33

2、服务管理

显示默认区域内允许访问的所有服务

# firewall-cmd --list-services
dhcpv6-client ssh

设置默认区域允许访问服务

# firewall-cmd --add-service=<service name>
success
# firewall-cmd --remove-service=<service name> #移除服务

查询public区域是否允许请求SSH和HTTPS协议的流量

# firewall-cmd --zone=public --query-service=ssh
yes
# firewall-cmd --zone=public --query-service=https
no

把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效

# firewall-cmd --zone=public --add-service=https
success
# firewall-cmd --zone=public --add-service=https --permanent 
success
# firewall-cmd --list-all --zone=public 
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client http https ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

禁止ping

# firewall-cmd --add-icmp-block=echo-request --zone=dmz --permanent
success

3、端口管理

在internal区域打开443/TCP 端口

# firewall-cmd --zone=internal --add-port=443/tcp
success

把在firewalld服务中访问8080和8081端口的流量策略设置为允许,但仅限当前生效

# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
# firewall-cmd --zone=public --list-ports 
8080-8081/tcp

把原本访问本机888端口的流量转发到22端口,要且求长期有效且立即生效

# firewall-cmd --zone=public --add-forward-port=port=888:proto=tcp:toport=22 --permanent 
success

4、协议管理

# firewall-cmd --add-protocol=<protocol> # 允许协议 (例:icmp,即允许ping)
# firewall-cmd --remove-protocol=<protocol> # 取消协议
# firewall-cmd --list-protocols # 查看允许的协议

5、IP管理

允许指定ip的所有流量

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" accept"

例:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept" # 表示允许来自192.168.2.1的所有流量

允许指定ip的指定协议

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol value="<protocol>" accept"

例:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept" # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping

允许指定ip访问指定服务

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" accept"

例:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept" # 允许192.168.2.208主机访问ssh服务

允许指定ip访问指定端口

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" accept"

例:

firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept" # 允许192.168.2.1主机访问22端口

将指定ip改为网段

命令都支持 source address 设置为网段,即这个网段的ip都是适配这个规则:

例如:

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"

表示允许192.168.2.0/24网段的主机访问22端口 。

禁止指定ip/网段

accept 设置为 reject表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时)

例如:

firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject"

表示禁止192.168.2.0/24网段的主机访问22端口 。

4、富规则

rule [family="<rule family>"]
[ source address="<address>" [invert="True"] ]
[ destination address="<address>" [invert="True"] ]
[ <element> ]
[ log [prefix="<prefix text>"]  [level="<log level>"]  [limit value="rate/
duration"] ]
[ audit ]
[ accept|reject|drop ]
参数解释
source限制源IP地址,源地址可以是—个IPv4,IPv6地址或者一个网络地址段
destination限制目标地址,目标地址使用跟源地址相同的语法
log注册有内核曰志的连接请求到规则中。如系统曰志
audit审核,审核类型可以是accept, reject或drop中的一种
accept reject drop指定accept时所有新的连接请求都将被允许。指定reject时连接将被拒绝,发起端将接到—个拒绝信息。指定drop时所有数据包会被丢弃并且不会向发起端发送任何信息
element要素
service服务名称。命令格式为service name = service_name
port端口。命令格式为port port = number _or _range protocoI = protocoI
protocol协议。命令格式为 protocol value = protocol_name_or _ID
icmp-block阻断—个或多个 ICMP类型。命令格式为icmp-block name = icmptype_name
masquerade规则里的IP伪装。
forward-port将指定的TCP或UDP协议的数据包转发到本机的其他端口。
0

评论区