麒麟firewalld防火墙
一、安装 firewalld
1. 检查是否已安装
|
1 |
rpm -qa | grep firewalld |
如果有输出 firewalld-… 说明已安装。
2. 安装 firewalld(若未安装)
|
1 |
yum install firewalld firewall-config |
说明:
-
firewalld 是核心服务;
-
firewall-config 是图形化配置工具(桌面系统可用,可选)。
3. 启动并设置开机自启
|
1 2 |
systemctl start firewalld systemctl enable firewalld |
查看是否开机自启:
|
1 2 |
#enabled:开机自动启动 disabled:开机不启动 systemctl is-enabled firewalld |
查看状态:
|
1 |
systemctl status firewalld |
输出示例:
|
1 2 3 |
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled) Active: active (running) |
-
✅ Active: active (running) → 防火墙已开启
-
❌ Active: inactive (dead) → 防火墙已关闭
若只想简洁输出:
|
1 |
systemctl is-active firewalld |
输出 active 表示开启;inactive 表示关闭。
二、firewalld 基础配置
1. 查看当前防火墙状态
|
1 |
firewall-cmd --state |
输出 running 表示正在运行。
2. 查看所有区域(zone)
|
1 |
firewall-cmd --get-zones |
查看当前激活区域:
|
1 |
firewall-cmd --get-active-zones |
查看默认区域:
|
1 |
firewall-cmd --get-default-zone |
3. 设置默认区域(通常用 public)
|
1 |
firewall-cmd --set-default-zone=public |
4. 查看当前区域详细信息
|
1 |
firewall-cmd --list-all |
输出示例:
|
1 2 3 4 5 |
public (active) interfaces: eth0 services: ssh dhcpv6-client ports: 22/tcp 80/tcp 443/tcp rich rules: |
三、常用防火墙规则配置
firewalld 有两类配置:
-
运行时配置(runtime):立即生效,但重启防火墙后失效。
-
永久配置(permanent):修改配置文件,需重新加载后生效。
通常建议:
添加规则时加上 –permanent,然后执行 firewall-cmd –reload 让规则立即生效。
1. 开放端口
|
1 2 3 4 5 6 |
# 格式:firewall-cmd --permanent --add-port=端口号/协议 # --permanent 永久配置 # --runtime 临时生效 firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=53/udp |
然后重新加载:
|
1 |
firewall-cmd --reload |
查看是否添加成功/查看已开放端口:
|
1 |
firewall-cmd --list-ports |
2. 删除端口规则
|
1 2 |
firewall-cmd --permanent --remove-port=8080/tcp firewall-cmd --reload |
3. 开放或关闭服务(基于 /usr/lib/firewalld/services/)
|
1 2 3 4 5 6 7 8 9 10 11 |
# 开放 firewall-cmd --permanent --add-service=http firewall-cmd --permanent --add-service=https firewall-cmd --reload # 关闭 firewall-cmd --permanent --remove-service=http firewall-cmd --reload # 查看已开放的服务 firewall-cmd --list-services |
4. 指定 IP 访问控制
允许单个 IP 访问端口:
|
1 2 3 |
# 仅允许 192.168.1.100 访问 3306/tcp firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.100' port port=3306 protocol=tcp accept" firewall-cmd --reload |
拒绝某个 IP 的所有访问
|
1 2 |
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.200' drop" firewall-cmd --reload |
允许一个网段访问
|
1 2 |
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' source address='192.168.1.0/24' accept" firewall-cmd --reload |
5. 启用 NAT 转发(如内网转发)
|
1 2 |
firewall-cmd --permanent --add-masquerade firewall-cmd --reload |
6. 保存当前临时规则为永久规则
|
1 |
firewall-cmd --runtime-to-permanent |
7. 重新加载配置
|
1 |
firewall-cmd --reload |
四、进阶命令
| 操作 | 命令 |
| 查看版本 | firewall-cmd –version |
| 查看所有支持的服务 | firewall-cmd –get-services |
| 查看接口对应区域 | firewall-cmd –get-active-zones |
| 将网卡加入区域 | firewall-cmd –zone=public –add-interface=eth0 |
| 移除网卡 | firewall-cmd –zone=public –remove-interface=eth0 |
| 查看 rich rules | firewall-cmd –list-rich-rules |
| 查看所有规则(详细) | firewall-cmd –list-all-zones |
五、停止与卸载 firewalld
1. 停止服务
|
1 |
systemctl stop firewalld |
2. 禁止开机自启
|
1 |
systemctl disable firewalld |
3. 确认已关闭
|
1 2 |
# inactive 即关闭 systemctl is-active firewalld |
4. 卸载
|
1 |
yum remove -y firewalld |
(可选)删除配置文件:
|
1 |
rm -rf /etc/firewalld |