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