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"?> |