Ubuntu 安全设置与 FetchLinux 加固实践
一 基线加固清单
- 保持系统与内核为最新:执行 sudo apt update && sudo apt full-upgrade -y,并重启;为关键补丁建立变更记录与回滚预案。
- 创建非 root 管理用户并加入 sudo:例如 adduser deploy;usermod -aG sudo deploy;日常以普通用户登录,提权用 sudo。
- 强化 SSH:禁用 root 登录(PermitRootLogin no)、仅允许 密钥登录(PasswordAuthentication no)、可更改默认端口(Port 2222);修改前务必保留一条当前会话,避免被锁。
- 启用 UFW 防火墙:默认拒绝入站(sudo ufw default deny incoming)、放行必要端口(如 22/80/443 或自定义 SSH 端口),启用日志(sudo ufw logging on)。
- 开启 自动安全更新:安装 unattended-upgrades,配置仅安装安全更新,定期清理。
- 部署 Fail2ban:防护 SSH 等服务的暴力破解,按需要自定义 bantime、findtime、maxretry。
- 启用 日志审计与告警:配置 Logwatch 或等效方案,按日/周发送摘要;关键日志集中采集与留存。
- 文件与目录权限:用户主目录建议 0700;敏感文件(如 ~/.ssh/authorized_keys)0600;服务目录遵循最小权限原则。
二 防火墙与 SSH 快速配置
- UFW 最小化放行示例(先放行 SSH 再启用,避免失联):
- 查看状态:sudo ufw status verbose
- 放行 SSH(若已改端口,将 22 替换为实际端口):sudo ufw allow 22/tcp
- 放行 Web:sudo ufw allow 80,443/tcp
- 默认策略与启用:sudo ufw default deny incoming;sudo ufw default allow outgoing;sudo ufw enable
- 可选:仅允许可信网段访问 SSH(示例为办公网段):sudo ufw allow from 203.0.113.0/24 to any port 22
- SSH 安全要点(/etc/ssh/sshd_config):
- PermitRootLogin no
- PasswordAuthentication no(确保本机已部署密钥后再关闭)
- Port 2222(示例)
- 修改后执行:sudo systemctl restart sshd
- 提示:若使用云厂商安全组,请与其规则保持一致,避免误封。
三 自动更新与入侵防护
- 自动安全更新(仅安全仓库):
- 安装:sudo apt install unattended-upgrades
- 启用周期任务(/etc/apt/apt.conf.d/10periodic):
- APT::Periodic::Update-Package-Lists “1”;
- APT::Periodic::Download-Upgradeable-Packages “1”;
- APT::Periodic::AutocleanInterval “7”;
- APT::Periodic::Unattended-Upgrade “1”;
- 仅启用安全更新(/etc/apt/apt.conf.d/50unattended-upgrades):
- Unattended-Upgrade::Allowed-Origins { “Ubuntu <你的发行版>-security”; };
- Fail2ban(示例为 SSH 防护):
- 安装:sudo apt install fail2ban
- 复制配置:sudo cp /etc/fail2ban/jail.{conf,local}
- 启用 SSH 监狱:在 jail.local 中确保 [sshd] 段 enabled = true,并设置 bantime/findtime/maxretry
- 重启:sudo systemctl restart fail2ban
- 查看状态:sudo fail2ban-client status ssh
四 用户与权限最小化
- 用户与组:
- 新增用户:sudo adduser alice;将用户加入 sudo 组:sudo usermod -aG sudo alice
- 删除用户:sudo deluser --remove-home bob
- 主目录与 SSH 密钥:
- chmod 700 /home/alice
- chmod 600 /home/alice/.ssh/authorized_keys
- 文件权限范式:
- 目录常用 755(rwxr-xr-x),文件常用 644(rw-r–r–);仅对可执行文件设置 +x
- ACL 精细授权(可选):
- 授予用户 bob 对 /data 只读:setfacl -m u:bob:r-x /data
- 查看 ACL:getfacl /data
五 关于 FetchLinux 的采用建议
- 工具定位:FetchLinux 用于自动化更新/维护与用户管理等运维任务,可作为加固的辅助手段,但不能替代内核/SSH/防火墙等基础安全控制。
- 实践要点:
- 若采用 FetchLinux 管理更新,建议将其以最小权限的系统用户运行(如创建 fetchlinux 用户/组,限制 sudo 能力),并通过 systemd 管理;变更前做好配置与仓库镜像的备份。
- 若采用 FetchLinux 的用户管理功能,遵循“最小权限”与“可审计”原则,所有变更通过工单/版本控制留痕。
- 无论是否使用 FetchLinux,都应保留上述基线加固措施(SSH、UFW、自动安全更新、Fail2ban 等)。