HOME
HOME
文章目录
  1. 1. 概念
  2. 2. firewalld常用使用方法

firewalld防火墙配置学习记录

最近在工作中需要对服务器进行来源访问的限制,之前一直没学过centos的防火墙配置方法,终于完整的对firewalld防火墙配置进行了一次完整的学习。以前在使用centos服务器的时候,直接一上来就systemctl stop firewalld,直接将防火墙关闭,在真实生产环境中不得不使用firewalld进行端口来源的限制,也就不能直接关闭了。

1. 概念

firewalld和iptables均属于防火墙管理工具,真正进行过滤的是系统内核的netfilter网络过滤器来进行处理。在centos7以前的版本中,采用的是iptables进行防火墙管理,在centos7及以后的版本中,采用的是firewalld进行管理,本文主要关注firewalld的相关知识。

firewalld添加了区域(zone)的概念,区域是firewalld内置的几套策略目标,用户可以根据不同的使用场景,套用对应的策略模板。在centos中默认的区域是public,该区域拒绝所有入站流量,仅允许ssh和dhcpv6-client相关流量。

以下是摘抄的几个区域的相关规则

区域 策略规则
trusted 允许所有的数据包
home 拒绝入站流量,放行ssh、mdns、ipp-client、amba-client、dhcpv6-client的流量
internal 与home相同
work 拒绝入站流量,放行ssh、ipp-client、dhcpv6-client的流量
public 拒绝入站流量,放行ssh、ipp-client的流量
external 拒绝入站流量,放行ssh的流量
dmz 拒绝入站流量,放行ssh流量
block 拒绝入站流量
drop 拒绝入站流量

2. firewalld常用使用方法

配置firewalld防火墙一般使用firewall-cmd 命令进行配置,配置的类型一般为:

  1. 选定区域确定默认的规则
  2. 绑定协议或者端口决定是否允许放行
  3. 端口转发
  4. 富规则的配置

firewall-cmd在配置好后,都需要进行reload操作,操作命令为firewall-cmd --reload

添加规则的时候,如果没有--permanent则为临时规则,reload后失效,添加了该参数后,reload后,配置仍然存在。

1、区域的相关操作

区域与端口、连接、接口是多对一的关系,所以一个端口、连接、接口只能属于一个区域。

firewall-cmd --get-default-zone:获取目前默认的区域名称。

firewall-cmd --set-default-zone=public:设置默认的区域

firewall-cmd --get-zones:显示可用的区域

firewall-cmd --list-all-zones:显示所有区域的配置

firewall-cmd --zone=public --list-all: 显示指定区域

firewall-cmd --get-zone-of-interface=ens19:显示网卡所绑定的区域

firewall-cmd --permanent --zone=external --change-interface=ens19:修改网卡所在的默认区域

2、流量协议操作

firewall-cmd --zone=public --query-service=ssh:查看协议是否放行

firewall-cmd --permanent --zone=public --add-service=https:将协议添加到放行

firewall-cmd --permanent --zone=public --remove-service=https:将协议从放行中删除

3、端口操作

firewall-cmd --zone=public --list-ports:查看当前区域放行的端口

firewall-cmd --zone=public --add-port=8000/tcp:当前区域放行端口

firewall-cmd --zone=public --remove-port=8000/tcp:删除放行端口

4、端口转发

目的是将某个端口的访问流量转发到另一个端口,前提必须将两个端口同时放行

firewall-cmd --zone=public --add-forward-port=port=9000:proto=tcp:toport=8000:toaddr=192.168.100.54:在访问9000端口的时候,防火墙会将访问流量转发到8000上面

firewall-cmd --zone=public --remove-forward-port=port=9000:proto=tcp:toport=8000:toaddr=192.168.100.54:删除规则

5、富规则

相当于更加底层的人工规则,能够更加细致的设置防火墙规则,使用--add-rich-rule--list-rich-rules--remove-rich-rule来进行管理富规则。

firewall-cmd --remove-rich-rule 'rule family="ipv4" source address="192.168.100.89" port port="8000" protocol="tcp" accept':删除这条富规则

firewall-cmd --list-rich-rules:列出所有的富规则

firewall-cmd --zone=public --add-rich-rule="rule family='ipv4' source address='192.168.100.10' port port=22 protocol=tcp reject":禁止192.168.100.10访问本机的22端口

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532':允许来自主机 10.1.0.3 到 80 端口的 IPv4 的 TCP 流量,并将流量转发到 6532 端口上。