在日常的服务器管理与运维工作中,安全配置是系统上线前不可或缺的一环。一些基础而关键的安全基线设置,能有效抵御大部分低层次的自动化攻击,为业务系统建立第一道防线。今天,我们就来梳理8个在Linux服务器上必须配置的常见安全项,帮助你从源头加强主机安全防护。
1、禁用root账户远程SSH登录
直接使用root进行远程登录是极大的安全隐患。配置此项前,请确保至少已创建一个具有sudo权限的普通用户,以便后续管理。
vi /etc/ssh/sshd_config
找到 PermitRootLogin 配置项,将其值修改为 no。
# 将PermitRootLogin yes改为PermitRootLogin no
PermitRootLogin no
保存文件后,重启SSH服务使配置生效。
systemctl restart sshd
2、设置口令生存周期策略
强制用户定期更换密码,是防止密码被长期破解的有效手段。通常建议密码最大有效期不超过90天。
# 修改前备份原配置文件
cp /etc/login.defs /etc/login.defs.bak
# 编辑配置文件
vim /etc/login.defs
在文件中找到或添加以下参数并进行修改:
PASS_MAX_DAYS 90 # 密码最大使用天数,不大于90则合规
PASS_MIN_DAYS 7 # 密码更改最小间隔天数,应大于等于7
PASS_WARN_AGE 7 # 密码过期前提前警告的天数

3、配置密码复杂度要求
弱密码是安全崩塌的起点。通过PAM模块强制密码具备一定的复杂度,通常要求包含大小写字母、数字、特殊字符,且长度至少8位。
# 修改前备份
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
# 编辑PAM认证配置文件
vim /etc/pam.d/system-auth
在文件中添加或修改 password 模块的配置行:
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1
配置参数说明:
retry=3 # 密码设置失败前允许重试3次
minlen=8 # 密码最小长度为8个字符
dcredit=-1 # 密码中至少包含1位数字
ucredit=-1 # 密码中至少包含1个大写字母
ocredit=-1 # 密码中至少包含1个特殊字符
lcredit=-1 # 密码中至少包含1个小写字母
4、设置账户连续认证失败锁定策略
防止暴力破解密码,对连续输错密码的账户进行临时锁定。
vim /etc/pam.d/system-auth
在文件中增加以下两行配置。此例表示连续输入错误密码5次后,账户将被锁定180秒。
auth required pam_tally2.so deny=5 onerr=fail no_magic_root unlock_time=180
account required pam_tally2.so

5、限制可使用su命令切换为root的用户
默认情况下,任何知晓root密码的用户都可以使用 su 命令切换到root。为了收紧权限,可以将其限制为仅 wheel 用户组的成员。
# 修改前备份
cp /etc/pam.d/su /etc/pam.d/su_bak
vim /etc/pam.d/su
在配置文件中添加或确保存在如下两行:
auth sufficient pam_rootok.so
auth required pam_wheel.so use_uid
配置完成后,需要将允许使用 su 切换为root的普通用户加入 wheel 组。
usermod -G wheel $username
# 请将 $username 替换为实际的用户名

6、Shell历史命令记录配置
过长的命令历史可能泄露敏感信息。合理限制历史命令的记录条数,并为其添加时间戳,便于审计。
vim /etc/profile
在文件末尾添加或修改以下配置:
# 设置历史命令带时间戳
export HISTTIMEFORMAT="%F %T "
# 设置内存中保存的历史命令条数
HISTSIZE=50
# 设置历史命令文件(.bash_history)中保存的条数
HISTFILESIZE=5
7、关键系统文件权限加固
/etc/passwd、/etc/shadow 等文件记录了核心的用户认证信息,必须严格控制其访问权限。
chmod 644 /etc/passwd
chmod 644 /etc/group
chmod 400 /etc/shadow
chmod 400 /etc/gshadow
8、确保系统日志审计服务启用
完善的日志记录是事后追溯和审计分析的基础。确保 rsyslog 或 systemd-journald 等服务正常运行。
systemctl enable rsyslog
systemctl start rsyslog
以上列举的8项是Linux系统安全加固中最基础、也最立竿见影的配置。它们共同构成了服务器安全的基线,是抵御自动化脚本和初级攻击者的有效屏障。当然,完整的 系统安全加固 涉及网络、应用、数据等多个层面。
在实际的企业环境中,尤其是需要满足国家信息安全等级保护(等保)二级或三级要求的系统,安全部门会提供更为详尽的 安全基线 检查清单,其条目会精细和严格得多。这些配置是每一个系统管理员和运维工程师都应该掌握的基本功。如果你对更多深入的运维实践和 安全防护 话题感兴趣,欢迎到 云栈社区 与更多同行交流探讨。