3.6 KiB
Executable File
3.6 KiB
Executable File
CentOS7 防火墙设置
firewalld 防火墙配置
简介
firewalld 是 CentOS7/RHEL7 默认的防火墙,提供基于区域的防火墙管理。
基础命令
服务管理
# 启动
sudo systemctl start firewalld
# 停止
sudo systemctl stop firewalld
# 重启
sudo systemctl restart firewalld
# 状态
sudo systemctl status firewalld
# 开机自启
sudo systemctl enable firewalld
# 禁用开机自启
sudo systemctl disable firewalld
查看状态
firewall-cmd --state # 查看运行状态
firewall-cmd --reload # 重载规则
firewall-cmd --list-ports # 查看已开放端口
firewall-cmd --list-services # 查看已开放服务
firewall-cmd --get-services # 查看所有可用服务
区域管理
# 查看所有区域
firewall-cmd --list-all-zones
# 查看活动区域
firewall-cmd --get-active-zones
# 设置默认区域
firewall-cmd --set-default-zone=public
# 查看默认区域
firewall-cmd --get-default-zone
区域说明
| 区域 | 说明 |
|---|---|
| drop | 丢弃所有连接 |
| block | 拒绝外部连接 |
| public | 公开,仅允许指定连接 |
| external | 外部网络(启用伪装) |
| dmz | 隔离区 |
| work | 工作网络 |
| home | 家庭网络 |
| internal | 内部网络 |
| trusted | 信任所有连接 |
端口管理
开放端口
# 临时开放(立即生效,重启失效)
firewall-cmd --add-port=80/tcp
# 永久开放(需要 reload)
firewall-cmd --add-port=80/tcp --permanent
# 开放端口范围
firewall-cmd --add-port=65001-65010/tcp --permanent
关闭端口
# 临时关闭
firewall-cmd --remove-port=80/tcp
# 永久关闭
firewall-cmd --remove-port=80/tcp --permanent
指定区域开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
服务管理
# 开放 HTTP 服务
firewall-cmd --add-service=http --permanent
# 关闭 HTTP 服务
firewall-cmd --remove-service=http --permanent
# 查看区域开放的服务
firewall-cmd --zone=public --list-services
接口管理
# 查看接口所属区域
firewall-cmd --get-zone-of-interface=eth0
# 将接口加入区域
firewall-cmd --zone=public --add-interface=eth0
# 从区域移除接口
firewall-cmd --zone=public --remove-interface=eth0
# 修改接口所属区域
firewall-cmd --zone=home --change-interface=eth0
示例
开放 Web 服务
# 开放 80 和 443 端口
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
# 或者直接开放服务
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
# 重载生效
firewall-cmd --reload
开放 SSH
firewall-cmd --add-port=22/tcp --permanent
firewall-cmd --reload
从 firewalld 切换到 iptables
# 安装 iptables
yum install iptables-services
# 停止 firewalld
systemctl stop firewalld
systemctl mask firewalld
# 启动 iptables
systemctl start iptables
systemctl start ip6tables
# 开机自启
systemctl enable iptables
systemctl enable ip6tables
配置文件:
/etc/sysconfig/iptables
常用命令汇总
# 查看状态
firewall-cmd --state
# 查看已开放
firewall-cmd --list-ports
firewall-cmd --list-services
# 开放端口/服务
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-service=http --permanent
# 重新加载
firewall-cmd --reload