常用命令
开启端口命令
firewall-cmd --zone=public --add-port=443/tcp --permanent
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口 / 通讯协议
–permanent #永久生效,没有此参数重启后失效
关闭端口命令
firewall-cmd --zone=public--remove-port=80/tcp --permanent
重启防火墙命令
使更改立即生效
firewall-cmd --reload
或者 service firewalld restart
systemctl防火墙命令
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
查看端口列表
firewall-cmd --permanent --list-port
检查 rirewall 防火墙端口是否开放
firewall-cmd --query-port=80/tcp
firewalld、firewalld-cmd、systemctl、iptables 区别
- CentOS7 采用新的 firewalld,CentOS6 及以前版本采用 iptables,不过 firewalld 底层仍然调用的是 iptables
- systemctl 是 CentOS7 的服务管理工具中主要的工具
- firewalld-cmd 是 firewalld 的命令行工具
zone 区域
firewalld 防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源 IP 地址或传入的网络接口等条件将流量传入相应区域,每个区域都定义了自己打开或者关闭的端口和服务列表。
- 区域(zone)是针对特定位置或场景(例如家庭、公共、受信任等)可能具有的各种信任级别的规则集。
- 不同的区域(zone)可允许不同的网络服务和入站流量的类型,而拒绝其他任何流量。
firewalld 的 9 个区域
- public(公共) —— [默认] 公网访问,不受任何限制。
- work(工作) —— 用于工作区。基本信任的网络,仅仅接收经过选择的连接。
- home(家庭) —— 用于家庭网络。基本信任的网络,仅仅接收经过选择的连接。
- trusted(信任) —— 接收的外部网络连接是可信任、可接受的。
- block(限制) —— 任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。
- dmz(隔离区) —— 英文 “demilitarized zone” 的缩写,此区域内可公开访问,它是非安全系统与安全系统之间的缓冲区。
- drop(丢弃) —— 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
- external(外部) —— 允许指定的外部网络进入连接,特别是为路由器启用了伪装功能的外部网。
- internal(内部) —— 内部访问。只限于本地访问,其他不能访问。
区域管理命令
firewall-cmd --get-default-zone // 显示当前系统中的默认区域
firewall-cmd --list-all // 显示默认区域的所有规则
firewall-cmd --list-all-zones // 查看所有区域的所有规则
firewall-cmd --get-active-zones // 显示当前正在使用的区域及其对应的网卡接口
firewall-cmd --set-default-zone=home // 设置默认区域