简介

CentOS Linux release 7 之后新增Firewalld防火墙,firewalld属于用户态,iptables属于内核态,

默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables。

防火墙的配置文件在 /usr/lib/firewalld/zones/ 目录下,也可直接修改配置文件添加防火墙配置

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,而真正使用规则干活的是内核的netfilter。

常用命令

systemctl status firewalld          # 查看防火墙状态
systemctl start firewalld # 开启防火墙
systemctl enable firewalld # 启用防火墙
systemctl disable firewalld # 禁用防火墙
systemctl stop firewalld # 关闭防火墙
systemctl restart firewalld.service # 重启防火墙

firewall-cmd --list-all # 查看全部防火墙规则
firewall-cmd --query-port=xxx/tcp # 查看指定端口开启情况
firewall-cmd --reload # 刷新配置生效

防火墙区域

针对特定位置&场景具有的各种信任级别的预构建规则集

firewall-cmd --get-default-zone      # 防火墙默认区域
firewall-cmd --get-active-zones # 查看网络接口使用的区域
firewall-cmd --set-default-zone=internal # 修改默认区域

开放 、 不开放端口

--zone 作用域

--permanent 永久生效

--add-port / --remove-port 添加 / 删除端口

firewall-cmd --zone=public --remove-port=3306/tcp --permanent     # 3306不对外开放
firewall-cmd --zone=public --add-port=80/tcp --permanent # 80对外开放

指定IP允许访问端口

firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.100" port protocol="tcp" port="3306" accept"       # 允许192.168.200.100访问3306端口

firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.200.100" port protocol="tcp" port="3306" accept" # 删除某条规则