位置:首页 > 其他编程语言 > Linux Minimal 服务器安全加固完整指南

Linux Minimal 服务器安全加固完整指南

时间:2026-09-01  |  作者:电竞小硕  |  阅读:0

本文详细阐述Linux Minimal环境下的安全加固策略,涵盖基础基线、身份鉴别、网络防护、日志审计及持续维护五大核心环节。通过具体命令与配置文件修改,帮助运维人员有效降低攻击面,提升系统安全性。

最终安全状态预览

完成所有加固步骤后,您的 Linux Minimal 服务器将呈现以下安全状态:

  • 仅运行必要的系统服务,关闭所有高危端口与明文协议。
  • SSH 登录强制使用密钥认证,root 远程登录被禁止。
  • 防火墙默认拒绝所有入站连接,仅放行受信任的 IP 段。
  • 关键系统文件变更受到实时监控,异常登录行为会被自动封禁。
Linux Minimal 服务器安全加固后的系统状态示意图
加固后的 Linux Minimal 服务器界面,展示了精简的服务列表与安全的系统配置状态。

第一阶段:基础安全基线配置

安全加固的第一步是确保系统处于最小化且干净的状态。这包括清理不必要的用户、禁用危险服务以及配置基础防火墙。

第1步:清理无用账户与高危服务

默认安装中可能包含空口令账户或拥有过高权限的多余账户,这些是潜在的安全漏洞。我们需要识别并处理它们。

  1. 检查空口令账户: 执行以下命令查找 /etc/shadow 中密码字段为空的账户:
命令行界面显示查找空口令账户的命令输出
使用 awk 命令筛选出没有设置密码的系统账户。
awk -F: '($2 == ""){print $1}' /etc/shadow
  1. 检查 UID 为 0 的额外账户: 除了 root,不应有其他用户拥有 UID 0。执行以下命令检查:
awk -F: '($3 == 0){print $1}' /etc/passwd
  1. 处理结果: 对于发现的空口令账户,立即设置强密码或使用 usermod -L 锁定账户。对于非必要的 UID 0 账户,考虑删除或降级权限。
  2. 禁用高危服务: 默认禁用或移除 telnet、rsh、ftp、rpcbind、xinetd 等老旧或明文传输协议的服务,以减少攻击面。

第2步:配置持久化防火墙

防火墙是保护服务器免受外部攻击的第一道防线。根据操作系统不同,选择对应的防火墙工具并配置默认拒绝策略。

  • CentOS/RHEL 系统: 使用 firewalld。确保服务已启动并设置为开机自启,默认策略设为拒绝所有入站连接。
  • Ubuntu/Debian 系统: 使用 UFW。启用 UFW 并设置默认入站策略为拒绝,出站策略为允许。

仅放行必要的端口,例如 SSH(默认端口 22)或 Web 服务端口(80/443)。严禁在公网暴露数据库管理端口或内部管理服务端口。

第3步:强化 SSH 远程登录配置

SSH 是远程管理服务器的主要通道,必须严格配置以防止暴力破解和未授权访问。

  1. 禁止 Root 远程登录: 编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no
  2. 启用密钥登录: 禁用密码登录(PasswordAuthentication no),强制使用 SSH 密钥对进行身份验证。
  3. 限制来源网段: 如果可能,通过防火墙规则或 SSH 配置中的 AllowUsers / AllowGroups 限制仅允许特定 IP 段或用户组连接。
  4. 创建普通运维账户: 为运维人员创建普通用户,并将其加入 wheel (CentOS) 或 sudo (Ubuntu) 组,通过 sudo 精细授权执行特权命令。

第4步:部署 Fail2Ban 防护

即使配置了密钥登录,暴力破解尝试仍可能消耗系统资源。部署 fail2ban 可以自动监测日志,对短时间内多次失败登录的 IP 进行临时封禁。

  1. 安装并启用 fail2ban 服务。
  2. 配置 SSH 保护规则,例如:5 分钟内失败 3 次即封禁 1 小时。
  3. 确保 fail2ban 日志记录功能开启,以便后续审计。

第二阶段:身份鉴别与访问控制

此阶段重点在于强化用户密码策略、限制特权切换以及管理会话超时,防止内部滥用和凭证泄露。

第5步:设置严格的口令策略

通过修改系统配置文件,强制用户遵循复杂的密码规则。

  1. 修改 /etc/login.defs 设置密码生命周期参数:
    • PASS_MAX_DAYS 90:密码最长有效期 90 天。
    • PASS_MIN_LEN 8:密码最小长度 8 位。
    • PASS_WARN_AGE 14:密码过期前 14 天开始警告。
  2. 配置 pam_pwquality.so/etc/pam.d/system-auth 中添加复杂度检查:
password requisite pam_pwquality.so minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 difok=5 enforce_for_root

此配置要求密码必须包含小写、大写、数字和特殊字符,且与新密码至少有 5 个字符不同。

第6步:配置登录失败锁定机制

防止暴力破解的最后一道防线是账户锁定。通过 PAM 模块限制连续失败登录次数。

  1. /etc/pam.d/sshd/etc/pam.d/login 中配置 pam_tally2.so
auth required pam_tally2.so deny=5 lock_time=30 unlock_time=600 even_deny_root root_unlock_time=600

该配置表示:允许 5 次失败尝试,锁定 30 秒,解锁时间 600 秒。即使 root 账户也会受到此限制。若需手动解锁,可使用 pam_tally2 -u -r 命令。

第7步:限制 Su 命令与设置会话超时

进一步限制特权切换和会话残留风险。

  1. 限制 Su 命令:/etc/pam.d/su 中添加 auth required pam_wheel.so use_uid,仅允许 wheel 组成员使用 su 切换到 root。
  2. 设置会话超时:/etc/profile/etc/bashrc 中设置:
TMOUT=600
HISTSIZE=5
HISTFILESIZE=5

这表示用户无操作 10 分钟后自动登出,历史记录仅保留最近 5 条命令,减少信息泄露和会话劫持的风险。

第8步:实施最小权限原则

为每个运行的服务创建专用的系统用户,并以最小权限运行。例如,为 Nginx 创建专用用户:

useradd -r -s /sbin/nologin nginx

对于特定的部署脚本,通过 sudoers 白名单授权,避免授予完整 root 权限:

deployer ALL=(www-data) NOPASSWD: /usr/local/bin/deploy.sh

第三阶段:服务与网络精细化加固

此阶段关注服务层面的最小化配置和网络流量的精细控制,确保只有必要的服务暴露给网络。

第9步:禁用非必需开机服务

列出并禁用所有非必要的开机自启服务,以减少攻击面。

  1. 使用以下命令列出当前启用的服务:
systemctl list-unit-files --type=service | grep enabled
  1. 对非必需的服务执行禁用和停止操作:
systemctl disable  && systemctl stop 

定期审查此列表,确保新增服务符合最小化原则。

第10步:配置精细化防火墙规则

除了默认拒绝策略,还需配置具体的白名单规则,允许受信任的访问。

  • Firewalld (CentOS/RHEL): 使用富规则限制源地址和端口:
firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="80" protocol="tcp" accept'
  • UFW (Ubuntu/Debian): 允许特定 IP 访问特定端口:
ufw allow from 192.168.1.100 to any port 3306/tcp

注意:变更 SSH 端口仅作为辅助手段(Security through Obscurity),不能替代密钥登录和防火墙白名单。务必确保数据库和管理端口不对公网开放。

第四阶段:日志审计与完整性监控

安全不仅是预防,还包括检测和响应。通过集中日志、文件完整性监控和合规性检查,确保能及时发现并追溯安全事件。

第11步:配置集中与保护日志

确保 rsyslogjournald 正常运行,并将关键日志(如 /var/log/secure/var/log/auth.log)定期归档。建议配置远程日志服务器(例如通过 TLS 加密传输),防止本地日志被攻击者篡改或删除。

第12步:部署文件完整性监控 (AIDE)

使用 AIDE (Advanced Intrusion Detection Environment) 建立系统文件基线,并定期校验。

  1. 初始化 AIDE 数据库:
aideinit
  1. 定期执行完整性检查:
aide --check

一旦发现未授权的配置文件或二进制文件变更,立即触发告警并处置。

第13步:监控关键系统文件

使用 auditd 监控敏感文件的读写和属性变更。例如,监控 /etc/passwd 文件:

auditctl -w /etc/passwd -p wa -k passwd_changes

这有助于事后追溯谁修改了用户账户信息。

第14步:合规性检查

如果系统需满足等保 2.0 或其他合规要求,请对照“身份鉴别、访问控制、安全审计、入侵防范、恶意代码防范、剩余信息保护”等控制点,验证上述措施是否全覆盖。

第五阶段:持续维护与验证

安全加固不是一次性工作,而是持续的维护过程。建立定期巡检和自动更新机制,确保持续的安全性。

第15步:启用自动安全更新

配置系统自动安装安全补丁,减少漏洞暴露时间。

  • Ubuntu: 启用 unattended-upgrades
  • RHEL/CentOS: 启用 yum-crondnf-automatic,仅应用安全更新。

第16步:执行例行安全巡检

每月至少进行一次手动核查,包括:

  • 监听端口与服务: 使用 ss -tulnsystemctl list-unit-files --type=service 检查。
  • 防火墙状态: 使用 firewall-cmd --list-allufw status 验证规则。
  • SSH 配置: 确认密钥登录生效,root 远程登录被禁。
  • Fail2ban 状态: 检查封禁列表和日志。
  • 账户与授权: 审查 /etc/sudoers 和系统账户列表。
  • 日志与审计: 检查是否有异常告警或未处理的 AIDE 差异。

总结

通过对 Linux Minimal 环境进行从基础基线、身份鉴别、网络防护到日志审计的全方位加固,可以显著降低服务器被攻击的风险。关键在于坚持最小化原则,定期更新补丁,并建立持续的监控与审计机制。以上步骤可根据具体业务需求进行适当调整,但核心安全逻辑保持不变。

以上就是 Linux Minimal 服务器安全加固的详细内容,更多关于 Linux 安全配置的资料请关注本站其它相关文章!

免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多