CentOS7 firewall 防火墙
介绍
防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别:
| 1 | 丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。 | 
CentOS7查看防火墙状态,启动,关闭防火墙
systemctl
- 启动:systemctl start firewalld
- 停止:systemctl stop firewalld
- 重启:systemctl restart firewalld
- 查看状态:systemctl status firewalld
- 开机启动:systemctl enable firewalld
- 开机禁用:systemctl disable firewalld
- 查看服务是否开机启动:systemctl is-enabled firewalld
- 查看已启动的服务列表:systemctl list-unit-files | grep enabled
- 查看启动失败的服务列表:systemctl --failed
firewall-cmd
- 查看版本:firewall-cmd --version
- 显示所有配置:firewall-cmd --list-all-zones
- 查看帮助:firewall-cmd --help
- 显示状态:firewall-cmd --state
- 查看防火墙规则:firewall-cmd --zone=public --list-all
- 查看所有打开的端口:firewall-cmd --zone=public --list-ports
- 从public添加 interface:firewall-cmd --zone=public --add-interface=eno16777736
- 从public移除 interface:firewall-cmd --zone=public --remove-interface=eno16777736
- 改变网卡接口的所属域(ps:一个接口只能属于一个域):firewall-cmd --zone=public --change-interface=eth1
- 查看区域信息:firewall-cmd --get-active-zones
- 查看默认的zone:firewall-cmd --get-default-zone
- 设置默认的zone:firewall-cmd --set-default-zone=trusted
- 查看指定接口所属区域:firewall-cmd --get-zone-of-interface=eth0
- 拒绝所有包:firewall-cmd --panic-on
- 取消拒绝状态:firewall-cmd --panic-off
- 查看是否拒绝:firewall-cmd --query-panic
- 将发往80端口的请求转发到8080:firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
- 开放某个端口:firewall-cmd --zone=public --add-port=80/tcp --permanen
- 查看某个端口是否开放:firewall-cmd --zone=public --query-port=80/tcp
- 删除某个端口:firewall-cmd --zone=public --remove-port=80/tcp --permanent
- 开放端口区间:firewall-cmd --permanent --zone=public --add-port=8080-9999/tcp
- 针对某个IP开放端口规则:firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="6379" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"
- 删除某个规则:firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"
- 针对一个IP段访问:firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
- 禁止某个IP访问某个端口:firewall-cmd --zone=public --add-rich-rule "rule family="ipv4" source address=192.168.1.4 port port=22 protocol=tcp reject"
- 获取全部的服务:firewall-cmd --get-services
- 查看某域的服务:firewall-cmd --zone=public --list-services
- 域中添加服务:firewall-cmd --zone=public --add-service=http
- 删除服务:firewall-cmd --zone=public --permanent --remove-service=http
- 重新载入使配置立即生效:firewall-cmd --reload
参数说明:
- –zone:指定域
- –permanent :永久生效
- –add-rich-rule:添加一条规则
- source address:来源IP
- –query-port:查询某个端口
编写 firewall 服务文件
firewall 的服务配置XML文件位置都存放在 /usr/lib/firewalld/service 和 /etc/firewalld/service 下面
一份简易的配置示例:
| 1 | <?xml version="1.0" encoding="utf-8"?> | 
一份教复杂的配置示例:
| 1 | <?xml version="1.0" encoding="utf-8"?> |