本文详细阐述Linux Minimal环境下的安全加固策略,涵盖基础基线、身份鉴别、网络防护、日志审计及持续维护五大核心环节。通过具体命令与配置文件修改,帮助运维人员有效降低攻击面,提升系统安全性。
最终安全状态预览
完成所有加固步骤后,您的 Linux Minimal 服务器将呈现以下安全状态:
- 仅运行必要的系统服务,关闭所有高危端口与明文协议。
- SSH 登录强制使用密钥认证,root 远程登录被禁止。
- 防火墙默认拒绝所有入站连接,仅放行受信任的 IP 段。
- 关键系统文件变更受到实时监控,异常登录行为会被自动封禁。

第一阶段:基础安全基线配置
安全加固的第一步是确保系统处于最小化且干净的状态。这包括清理不必要的用户、禁用危险服务以及配置基础防火墙。
第1步:清理无用账户与高危服务
默认安装中可能包含空口令账户或拥有过高权限的多余账户,这些是潜在的安全漏洞。我们需要识别并处理它们。
- 检查空口令账户: 执行以下命令查找
/etc/shadow中密码字段为空的账户:

awk -F: '($2 == ""){print $1}' /etc/shadow
- 检查 UID 为 0 的额外账户: 除了 root,不应有其他用户拥有 UID 0。执行以下命令检查:
awk -F: '($3 == 0){print $1}' /etc/passwd
- 处理结果: 对于发现的空口令账户,立即设置强密码或使用
usermod -L锁定账户。对于非必要的 UID 0 账户,考虑删除或降级权限。 - 禁用高危服务: 默认禁用或移除 telnet、rsh、ftp、rpcbind、xinetd 等老旧或明文传输协议的服务,以减少攻击面。
第2步:配置持久化防火墙
防火墙是保护服务器免受外部攻击的第一道防线。根据操作系统不同,选择对应的防火墙工具并配置默认拒绝策略。
- CentOS/RHEL 系统: 使用
firewalld。确保服务已启动并设置为开机自启,默认策略设为拒绝所有入站连接。 - Ubuntu/Debian 系统: 使用
UFW。启用 UFW 并设置默认入站策略为拒绝,出站策略为允许。
仅放行必要的端口,例如 SSH(默认端口 22)或 Web 服务端口(80/443)。严禁在公网暴露数据库管理端口或内部管理服务端口。
第3步:强化 SSH 远程登录配置
SSH 是远程管理服务器的主要通道,必须严格配置以防止暴力破解和未授权访问。
- 禁止 Root 远程登录: 编辑
/etc/ssh/sshd_config,设置PermitRootLogin no。 - 启用密钥登录: 禁用密码登录(
PasswordAuthentication no),强制使用 SSH 密钥对进行身份验证。 - 限制来源网段: 如果可能,通过防火墙规则或 SSH 配置中的
AllowUsers/AllowGroups限制仅允许特定 IP 段或用户组连接。 - 创建普通运维账户: 为运维人员创建普通用户,并将其加入
wheel(CentOS) 或sudo(Ubuntu) 组,通过sudo精细授权执行特权命令。
第4步:部署 Fail2Ban 防护
即使配置了密钥登录,暴力破解尝试仍可能消耗系统资源。部署 fail2ban 可以自动监测日志,对短时间内多次失败登录的 IP 进行临时封禁。
- 安装并启用
fail2ban服务。 - 配置 SSH 保护规则,例如:5 分钟内失败 3 次即封禁 1 小时。
- 确保
fail2ban日志记录功能开启,以便后续审计。
第二阶段:身份鉴别与访问控制
此阶段重点在于强化用户密码策略、限制特权切换以及管理会话超时,防止内部滥用和凭证泄露。
第5步:设置严格的口令策略
通过修改系统配置文件,强制用户遵循复杂的密码规则。
- 修改
/etc/login.defs: 设置密码生命周期参数: PASS_MAX_DAYS 90:密码最长有效期 90 天。PASS_MIN_LEN 8:密码最小长度 8 位。PASS_WARN_AGE 14:密码过期前 14 天开始警告。- 配置
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 模块限制连续失败登录次数。
- 在
/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 命令。
第7步:限制 Su 命令与设置会话超时
进一步限制特权切换和会话残留风险。
- 限制 Su 命令: 在
/etc/pam.d/su中添加auth required pam_wheel.so use_uid,仅允许wheel组成员使用su切换到 root。 - 设置会话超时: 在
/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步:禁用非必需开机服务
列出并禁用所有非必要的开机自启服务,以减少攻击面。
- 使用以下命令列出当前启用的服务:
systemctl list-unit-files --type=service | grep enabled
- 对非必需的服务执行禁用和停止操作:
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步:配置集中与保护日志
确保 rsyslog 或 journald 正常运行,并将关键日志(如 /var/log/secure 或 /var/log/auth.log)定期归档。建议配置远程日志服务器(例如通过 TLS 加密传输),防止本地日志被攻击者篡改或删除。
第12步:部署文件完整性监控 (AIDE)
使用 AIDE (Advanced Intrusion Detection Environment) 建立系统文件基线,并定期校验。
- 初始化 AIDE 数据库:
aideinit
- 定期执行完整性检查:
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-cron或dnf-automatic,仅应用安全更新。
第16步:执行例行安全巡检
每月至少进行一次手动核查,包括:
- 监听端口与服务: 使用
ss -tuln和systemctl list-unit-files --type=service检查。 - 防火墙状态: 使用
firewall-cmd --list-all或ufw status验证规则。 - SSH 配置: 确认密钥登录生效,root 远程登录被禁。
- Fail2ban 状态: 检查封禁列表和日志。
- 账户与授权: 审查
/etc/sudoers和系统账户列表。 - 日志与审计: 检查是否有异常告警或未处理的 AIDE 差异。
总结
通过对 Linux Minimal 环境进行从基础基线、身份鉴别、网络防护到日志审计的全方位加固,可以显著降低服务器被攻击的风险。关键在于坚持最小化原则,定期更新补丁,并建立持续的监控与审计机制。以上步骤可根据具体业务需求进行适当调整,但核心安全逻辑保持不变。
以上就是 Linux Minimal 服务器安全加固的详细内容,更多关于 Linux 安全配置的资料请关注本站其它相关文章!







