Omarchy设置防火墙

要在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(必选,否则无法远程连接)

    bash 复制代码
    sudo ufw allow ssh  # 等价于允许22/tcp端口
    # 若使用非标准SSH端口(如2222),需明确指定:
    # sudo ufw allow 2222/tcp
  • 允许HTTP/HTTPS(Web服务)

    bash 复制代码
    sudo ufw allow http   # 允许80/tcp端口
    sudo ufw allow https  # 允许443/tcp端口
  • 允许特定端口(如8080 Tomcat)

    bash 复制代码
    sudo ufw allow 8080/tcp
5. 查看与管理规则
  • 查看当前规则

    bash 复制代码
    sudo ufw status  # 简要状态
    sudo ufw status verbose  # 详细状态(含规则顺序、日志级别)
  • 删除规则
    先通过status numbered查看规则编号,再删除:

    bash 复制代码
    sudo 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(不信任网络中的其他设备),需根据需求调整:

  • 查看当前区域

    bash 复制代码
    firewall-cmd --get-default-zone  # 输出:public
  • 设置默认区域 (如home,适合家庭网络):

    bash 复制代码
    sudo firewall-cmd --set-default-zone=home
  • 将网络接口绑定到区域 (如eth0接口绑定到home区域):

    bash 复制代码
    sudo firewall-cmd --zone=home --change-interface=eth0 --permanent
4. 允许服务/端口
  • 允许SSH服务

    bash 复制代码
    sudo firewall-cmd --permanent --add-service=ssh  # 永久允许SSH
  • 允许HTTP/HTTPS服务

    bash 复制代码
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
  • 允许特定端口(如8080)

    bash 复制代码
    sudo firewall-cmd --permanent --add-port=8080/tcp
5. 重新加载配置(使生效)

修改规则后,需重新加载Firewalld配置:

bash 复制代码
sudo firewall-cmd --reload
6. 查看规则
  • 查看当前区域的规则

    bash 复制代码
    firewall-cmd --list-all  # 显示当前区域的所有规则(服务、端口、源IP等)
  • 查看所有区域的规则

    bash 复制代码
    firewall-cmd --list-all-zones

四、常见问题排查

  1. 误封SSH端口导致无法连接
    若启用防火墙后无法远程连接,需通过控制台 (如VNC、物理终端)登录,开放SSH端口:

    bash 复制代码
    sudo ufw allow ssh  # UFW场景
    sudo firewall-cmd --permanent --add-service=ssh  # Firewalld场景
  2. 规则未生效

    • UFW:需确保规则已添加(如ufw status),若未生效,尝试重启UFW:sudo systemctl restart ufw
    • Firewalld:需重新加载配置(firewall-cmd --reload),确保规则添加了--permanent参数(永久生效)。
  3. 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)获取更详细信息。

相关推荐
晚秋大魔王2 小时前
泰拉瑞亚手机版服务器部署
运维·服务器·泰拉瑞亚
敲代码的哈吉蜂2 小时前
高可用集群Keepalived
运维·服务器·网络·数据库
S-码农2 小时前
Linux ——条件变量
linux·开发语言
爱写代码的liding2 小时前
linux安装软件过程中报找不到某些动态链接.so文件
linux
青衫码上行2 小时前
【项目部署】Spring Boot项目部署的四种方式
java·linux·服务器·spring boot·后端·docker·腾讯云
盟接之桥3 小时前
盟接之桥说制造:从客供的外在共生到内在的身心合一
运维·服务器·网络·人工智能·制造
火车叼位3 小时前
让 SSL 证书管理更简单:k ssl 命令实战手册
运维
礼拜天没时间.3 小时前
JumpServer堡垒机部署与实战:从0到1搭建统一运维入口
linux·运维·架构·堡垒机·jumpserver·sre
林姜泽樾3 小时前
linux入门第四章,cd指令和相对、绝对路径
linux·运维·服务器