Manjaro 是一个基于 Arch Linux 的流行发行版,以其易用性和滚动更新模型而闻名。然而,像任何操作系统一样,Manjaro 的安全性取决于用户的配置和实践。默认情况下,Manjaro 可能不会启用所有安全功能,因此主动设置防火墙和管理用户权限是保护系统免受未经授权访问和潜在攻击的关键步骤。本文将详细探讨这些技巧,包括如何启用和配置防火墙(使用 UFW 或 Firewalld),以及如何通过用户权限管理避免 root 用户的直接使用风险。我们将提供逐步指导、命令示例和解释,以帮助您构建一个更安全的 Manjaro 环境。
理解 Manjaro 的安全基础
Manjaro 作为 Linux 发行版,天生具有一定的安全优势,例如文件权限系统和开源透明性。但安全不是自动的——它需要用户主动配置。核心风险包括网络攻击(如端口扫描或 DDoS)和权限提升(如意外以 root 身份运行命令导致系统损坏)。我们将重点讨论两个方面:防火墙(网络层防护)和用户权限管理(访问控制层防护)。
在开始之前,确保您的 Manjaro 系统是最新的。运行以下命令更新系统:
sudo pacman -Syu
这会同步包数据库并升级所有已安装的软件包,包括安全补丁。
防火墙开启与配置
防火墙是系统安全的第一道防线,它监控和控制进出网络流量。在 Manjaro 中,最常用的防火墙工具是 UFW(Uncomplicated Firewall)或 Firewalld。UFW 更简单,适合桌面用户;Firewalld 更动态,适合服务器。我们将详细说明 UFW 的安装和配置,因为它在 Manjaro 社区中更受欢迎。如果您偏好 Firewalld,我们也会简要提及。
为什么需要防火墙?
防止未经授权访问
:默认情况下,许多端口(如 SSH 的 22 端口)可能开放,允许远程登录尝试。
限制服务暴露
:例如,如果您运行 Web 服务器,防火墙可以只允许 HTTP (80) 和 HTTPS (443) 流量。
Manjaro 默认状态
:Manjaro 不预装防火墙,因此您需要手动启用它。忽略此步骤可能导致系统暴露在互联网威胁中。
安装和启用 UFW
UFW 是 iptables 的简化前端,易于配置。首先,安装它:
sudo pacman -S ufw
安装后,启用 UFW 并设置开机自启:
sudo systemctl enable ufw
sudo systemctl start ufw
检查状态以确认它正在运行:
sudo ufw status
默认情况下,UFW 会拒绝所有传入连接,但允许所有传出连接。这是一个好的起点。
配置 UFW 规则
规则定义了哪些流量允许通过。UFW 使用简单命令添加规则。规则按顺序应用,因此优先级很重要。
示例 1:允许特定端口
假设您需要 SSH 访问(端口 22),但只从特定 IP(如您的家庭 IP 192.168.1.100)允许:
sudo ufw allow from 192.168.1.100 to any port 22
如果您想允许所有 SSH 访问(不推荐生产环境):
sudo ufw allow 22/tcp
示例 2:允许 Web 服务
如果您运行 Apache 或 Nginx,允许 HTTP 和 HTTPS:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
示例 3:拒绝特定 IP 或端口
拒绝来自恶意 IP 的访问:
sudo ufw deny from 203.0.113.5
拒绝 Telnet(端口 23,不安全):
sudo ufw deny 23/tcp
示例 4:高级规则 – 应用配置文件
UFW 支持预定义的应用配置文件。首先,查看可用配置:
sudo ufw app list
例如,允许 ‘Apache Full’(包括 HTTP 和 HTTPS):
sudo ufw allow ‘Apache Full’
如果您自定义应用配置,编辑
/etc/ufw/applications.d/
下的文件,例如创建一个名为
myapp
的配置:
# /etc/ufw/applications.d/myapp
[MyApp]
title=My Custom App
description=Custom service on ports 8080 and 8443
ports=8080,8443/tcp
然后允许它:
sudo ufw allow ‘MyApp’
启用 UFW 并验证
配置规则后,启用 UFW(它会提示确认,因为可能中断现有连接):
sudo ufw enable
再次检查状态:
sudo ufw status verbose
输出示例:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
— —— —-
22/tcp ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
如果需要删除规则,先编号查看:
sudo ufw status numbered
然后删除(例如,删除规则 1):
sudo ufw delete 1
使用 Firewalld 作为替代
如果您更喜欢 Firewalld(例如,用于动态接口),安装并启用:
sudo pacman -S firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
配置示例:添加服务(如 SSH)到默认区域:
sudo firewall-cmd –permanent –add-service=ssh
sudo firewall-cmd –reload
检查状态:
sudo firewall-cmd –state
sudo firewall-cmd –list-all
Firewalld 使用区域(如
public
、
internal
),适合复杂网络,但 UFW 对于 Manjaro 桌面用户更直观。
防火墙最佳实践
定期审计规则
:每月运行
sudo ufw status
检查开放端口。
日志记录
:启用日志以监控事件:
sudo ufw logging on
,日志位于
/var/log/ufw.log
。
测试防火墙
:从另一台机器使用
nmap
扫描您的 IP(例如
nmap -p 1-1000 your-ip
)验证端口状态。
潜在问题
:如果防火墙阻塞了您的连接,检查规则顺序或使用
sudo ufw reset
重置(备份规则先)。
通过这些步骤,您的 Manjaro 系统将抵御大多数网络入侵尝试。
用户权限管理避免 Root 风险
Linux 的权限模型基于用户和组,root 用户拥有无限权力。直接使用 root(例如,通过
su
或登录 root)风险极高:一个错误命令(如
rm -rf /
)可能擦除整个系统。Manjaro 鼓励使用普通用户 + sudo 的模式,这提供审计日志和最小权限原则。
为什么避免直接使用 Root?
风险示例
:以 root 身份运行恶意脚本或误操作,可能导致数据丢失或系统崩溃。
安全原则
:最小权限(Principle of Least Privilege)确保用户只获得必要访问。
Manjaro 默认
:安装时创建普通用户,但许多用户仍习惯
sudo su
。我们将强化 sudo 和 sudoers 配置。
创建和使用普通用户
如果您只有一个 root 帐户,首先创建一个普通用户(假设用户名为
myuser
):
sudo useradd -m -G wheel myuser
sudo passwd myuser
-m
:创建主目录
/home/myuser
。
-G wheel
:添加到
wheel
组,该组通常允许 sudo 访问。
切换到新用户:
sudo su – myuser
现在,所有日常操作(如浏览、编辑文件)都以
myuser
身份进行。
配置 Sudo 权限
Sudo 允许临时提升权限,而不暴露 root。Manjaro 默认安装 sudo,但需配置 sudoers 文件。
使用
visudo
编辑(它锁定文件并检查语法):
sudo visudo
默认内容可能类似:
# %wheel ALL=(ALL) ALL
取消注释
%wheel
行,允许 wheel 组所有成员使用 sudo。保存退出(Ctrl+O, Enter, Ctrl+X in nano)。
示例 1:允许特定命令无密码
如果您想让
myuser
重启网络而不输入密码,添加:
myuser ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart NetworkManager
示例 2:限制用户访问
只允许
myuser
管理包,但不删除系统文件:
myuser ALL=(ALL) /usr/bin/pacman -S, /usr/bin/pacman -R
示例 3:组-based 权限
创建一个新组
developers
,只允许他们访问开发工具:
sudo groupadd developers
sudo usermod -aG developers myuser
在 sudoers 中添加:
%developers ALL=(ALL) /usr/bin/git, /usr/bin/make
避免 Root 风险的技巧
1. 禁用 Root 登录
对于 SSH(如果启用),编辑
/etc/ssh/sshd_config
:
PermitRootLogin no
然后重启 SSH:
sudo systemctl restart sshd
对于图形登录,使用 Manjaro 设置 > 用户 > 禁用 root 登录。
2. 使用 Polkit 和 PolicyKit
Manjaro 使用 Polkit 管理图形权限。例如,安装软件时,系统会提示输入密码,而不是直接 root。确保 Polkit 服务运行:
sudo systemctl status polkit
如果未运行,启用:
sudo systemctl enable polkit
sudo systemctl start polkit
3. 监控和审计
查看 sudo 日志
:所有 sudo 命令记录在
/var/log/auth.log
。检查:
sudo grep sudo /var/log/auth.log
使用 auditd
:安装审计守护进程以跟踪文件访问:
sudo pacman -S audit
sudo systemctl enable auditd
sudo systemctl start auditd
添加规则监控 /etc/passwd:
sudo auditctl -w /etc/passwd -p wa -k identity
查看审计日志:
sudo ausearch -k identity
4. 密码和认证最佳实践
使用强密码:至少 12 位,包含大小写、数字、符号。
启用 PAM 模块:Manjaro 默认使用,但可配置双因素认证(2FA)用于 sudo:
编辑
/etc/pam.d/sudo
,添加:
auth required pam_google_authenticator.so
安装 Google Authenticator:
sudo pacman -S google-authenticator
google-authenticator # 为用户设置
5. 示例场景:安全安装软件
错误方式(直接 root):
sudo su
pacman -S firefox # 危险,如果命令错误
正确方式(使用 sudo):
sudo pacman -S firefox # 临时提升,有日志
如果需要多个命令,使用
sudo -i
但限时:
sudo -i # 进入 root shell
# 执行任务
exit # 立即退出
潜在问题与解决
Sudo 未工作
:检查用户是否在 wheel 组:
groups myuser
。如果缺失,
sudo usermod -aG wheel myuser
。
权限错误
:如果文件权限太严,使用
chmod
调整,例如
chmod 750 /home/myuser
(所有者读写执行,组读执行,其他无)。
忘记 sudo 密码
:以 root 重置:
sudo passwd myuser
(但避免日常 root)。
通过这些管理,您将 root 风险降至最低,同时保持系统灵活性。
结论
在 Manjaro 上实施防火墙和用户权限管理是提升系统安全的核心步骤。启用 UFW 并配置规则可以有效阻挡网络威胁,而使用 sudo 和普通用户模式避免了 root 的直接暴露。定期更新系统、监控日志并遵循最佳实践,将使您的 Manjaro 环境更健壮。记住,安全是持续过程——从今天开始应用这些技巧,并根据您的需求调整。如果您是新手,从 UFW 开始;对于高级用户,探索 Firewalld 和 auditd 以获得更精细控制。安全第一,享受 Manjaro 的强大功能!