要在Omarchy (基于Arch Linux的发行版)中设置防火墙,需基于其Arch底层环境 选择**UFW(简单防火墙)或 Firewalld(动态防火墙)**工具。两者均为iptables/nftables的前端,旨在简化防火墙配置,适合不同场景需求。以下是详细设置指南:
一、选择防火墙工具
Omarchy默认预装ufw防火墙工具。需手动安装。选择依据如下:
- UFW(推荐新手):命令简洁、易上手,适合个人或小型服务器场景。
- Firewalld(推荐企业):支持**区域(Zone)**概念,可根据网络信任级别(如公共、家庭、工作)应用不同规则,适合复杂网络环境。
二、UFW(Uncomplicated Firewall)设置
UFW是Arch Linux中常用的简单防火墙工具,默认拒绝所有入站流量 、允许所有出站流量,需手动开放必要端口。
1. 安装UFW
打开终端,执行以下命令安装:
bash
sudo pacman -S ufw
2. 启动并设置开机自启
安装后,启动UFW服务并设置为开机自动运行:
bash
sudo systemctl start ufw
sudo systemctl enable ufw
3. 配置默认规则(关键!)
默认情况下,UFW的规则集为空,需先设置默认策略(避免锁定自己):
bash
# 默认拒绝所有入站流量(仅允许明确允许的流量)
sudo ufw default deny incoming
# 默认允许所有出站流量(系统正常访问外部网络)
sudo ufw default allow outgoing
4. 允许必要服务/端口
根据需求开放端口(如SSH、HTTP、HTTPS),避免开放不必要的端口(如3389远程桌面、21 FTP等高危端口)。
-
允许SSH(必选,否则无法远程连接) :
bashsudo ufw allow ssh # 等价于允许22/tcp端口 # 若使用非标准SSH端口(如2222),需明确指定: # sudo ufw allow 2222/tcp -
允许HTTP/HTTPS(Web服务) :
bashsudo ufw allow http # 允许80/tcp端口 sudo ufw allow https # 允许443/tcp端口 -
允许特定端口(如8080 Tomcat) :
bashsudo ufw allow 8080/tcp
5. 查看与管理规则
-
查看当前规则 :
bashsudo ufw status # 简要状态 sudo ufw status verbose # 详细状态(含规则顺序、日志级别) -
删除规则 :
先通过status numbered查看规则编号,再删除:bashsudo ufw status numbered # 显示规则编号(如[1] Allow SSH) sudo ufw delete 1 # 删除编号为1的规则
6. 启用日志(可选)
启用日志可记录被阻止的流量,便于排查问题:
bash
sudo ufw logging on # 启用日志(默认级别为low)
# 查看日志:
sudo less /var/log/ufw.log
三、Firewalld设置
Firewalld是动态防火墙管理工具,支持区域(Zone) (如public(公共网络)、home(家庭网络)、work(工作网络)),可根据网络环境自动切换规则。
1. 安装Firewalld
执行以下命令安装:
bash
sudo pacman -S firewalld
2. 启动并设置开机自启
bash
sudo systemctl start firewalld
sudo systemctl enable firewalld
3. 配置区域(Zone)
Firewalld的核心概念是区域 ,每个区域对应不同的信任级别。默认区域为public(不信任网络中的其他设备),需根据需求调整:
-
查看当前区域 :
bashfirewall-cmd --get-default-zone # 输出:public -
设置默认区域 (如
home,适合家庭网络):bashsudo firewall-cmd --set-default-zone=home -
将网络接口绑定到区域 (如
eth0接口绑定到home区域):bashsudo firewall-cmd --zone=home --change-interface=eth0 --permanent
4. 允许服务/端口
-
允许SSH服务 :
bashsudo firewall-cmd --permanent --add-service=ssh # 永久允许SSH -
允许HTTP/HTTPS服务 :
bashsudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https -
允许特定端口(如8080) :
bashsudo firewall-cmd --permanent --add-port=8080/tcp
5. 重新加载配置(使生效)
修改规则后,需重新加载Firewalld配置:
bash
sudo firewall-cmd --reload
6. 查看规则
-
查看当前区域的规则 :
bashfirewall-cmd --list-all # 显示当前区域的所有规则(服务、端口、源IP等) -
查看所有区域的规则 :
bashfirewall-cmd --list-all-zones
四、常见问题排查
-
误封SSH端口导致无法连接 :
若启用防火墙后无法远程连接,需通过控制台 (如VNC、物理终端)登录,开放SSH端口:bashsudo ufw allow ssh # UFW场景 sudo firewall-cmd --permanent --add-service=ssh # Firewalld场景 -
规则未生效 :
- UFW:需确保规则已添加(如
ufw status),若未生效,尝试重启UFW:sudo systemctl restart ufw。 - Firewalld:需重新加载配置(
firewall-cmd --reload),确保规则添加了--permanent参数(永久生效)。
- UFW:需确保规则已添加(如
-
Docker与UFW冲突 :
若使用Docker,需修改UFW配置文件/etc/ufw/after.rules,添加Docker规则,避免Docker容器绕过UFW。
五、注意事项
- 最小权限原则:仅开放必要的端口和服务,避免过度开放(如允许所有IP访问所有端口)。
- 定期审计规则:每月检查规则,删除无效或冗余的规则(如临时项目的端口)。
- 结合其他安全措施 :防火墙是网络安全的第一道防线,需配合系统补丁 、密码策略、**入侵检测(IDS)**等措施,形成多层防御。
还可参考Omarcgt/Arch Linux 系统中使用 UFW 防火墙
总结
Omarchy的防火墙设置需基于Arch Linux 的工具链,选择UFW (新手)或Firewalld (企业),遵循最小权限原则 ,开放必要端口,定期审计规则。若遇到问题,可通过控制台 登录排查,或参考Arch Wiki的Firewall章节(https://wiki.archlinux.org/title/Firewall)获取更详细信息。