Centos7 防火墙 firewalld 的配置文件/开关/IP/端口

编辑于:2023年03月12日

Centos7 防火墙 firewalld 的配置文件/开关/IP/端口

Centos7起 ,系统防火墙由iptables改为了firewalld。本文聊一聊关于 firewalld 的一些常用操作,如配置文件所在目录、对端口和 IP 的限制、防火墙的开关等。

1.防火墙配置文件

1.1配置文件所在的目录

/usr/lib/firewalld/ #默认的规则
/etc/firewalld/     #自定义规则


1.2指定启用的配置文件

实际上两个路径存有很多份配置文件,由/etc/firewalld/firewalld.conf确定采用那份规则,一般默认使用/etc/firewalld/zones/public.xml,用户添加的自定义规则也写在这里文件里。

在这两个路径下,需要重点关注的文件夹只有两个:serviceszones

1.1 services文件夹

services 存储的是定义好的端口组合

ssh.xml定义了 SSH 的端口为 22,那么在防火墙使用的配置文件中添加<service name="ssh"/>,表示启用了ssh服务,等同于开放了 22 端口。

1.2 zones文件夹

zones 储存的是完整的防火墙规则

public.xml ,防火墙启用这份文件后,不在此文件内的服务和端口都被拒绝连接。想要自定义放开什么端口或IP,就将规则写在此文件内。

2. firewalld 相关命令

①一般在终端通过命令行控制防火墙,但使用了宝塔面板的用户,②可以在软件商店 > 系统工具 > 系统防火墙,进行可视化添加/删除/开关管理。

添加和删除规则,③还可以直接去配置文件操作,保存后要重启一次:firewall-cmd --reload,以上这些是比较常见的3种操作方式。

2.1开关防火墙服务

#启动服务
systemctl start firewalld
#停止服务
systemctl stop firewalld
#开机自启
systemctl enable firewalld
#关闭自启
systemctl disable firewalld
#重启服务
systemctl restart firewalld
#查看状态
systemctl status firewalld 或 firewall-cmd --state

2.2 查看已开放规则

#查看firewalld所有开放的规则
firewall-cmd --list-all
#查看已经开放的服务(端口合集)
firewall-cmd --list-services
#查看已经开放的端口
firewall-cmd --list-port

2.3 增加或删除规则

⭕注意,规则的增删有两点需要额外注意⚠️⚠️:

--permanent #加到命令后面,表示永久有效;
firewall-cmd --reload #执行此命令重启防火墙后,永久规则才能生效

⭕端口

#开放单个端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
#限制单个端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent
#开放一组端口
firewall-cmd --zone=public --add-port=100-500/tcp --permanent
#限制一组端口
firewall-cmd --zone=public --remove-port=100-500/tcp --permanent

⭕IP

#限制IP地址访问端口,reject 表示拒绝,设置为 drop 表示直接丢弃
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
#解除限制(允许)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"

#限制IP段访问端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
#解除限制(允许)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" accept"

#允许某个IP的所有连接
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="<ip>" accept"
#允许某个IP访问ssh服务
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" service name="ssh" accept"
#允许某个IP访问icmp协议
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" protocol value="icmp" accept"

⭕服务

firewall-cmd --get-services #查看所有预设的服务
firewall-cmd --list-services #查看已放行的服务
firewall-cmd --info-service=ssh #查看某个服务包含的端口,如ssh
firewall-cmd --permanent --add-service=<service name> #放行服务
firewall-cmd --permanent --add-service=ssh #如放行 ssh
firewall-cmd --permanent --remove-service=<service name> #移除服务

⭕协议

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

注意事项

防火墙从上往下匹配规则,一旦匹配成功就会暂停向下匹配,因此要注意规则的顺序避免失效。遇到规则不生效时,建议执行firewall-cmd --list-all查看所有开发的服务/IP和端口,以及注意查看它们的顺序。

宝塔用户如安装并启用了系统防火墙插件,端口的放行就要在系统防火墙插件里操作,不要再去面板后台的安全选项里放行,避免出现规则的冲突。

相关推荐

暂无评论