企业 Linux 安全基线需先完成业务与合规对齐,避免过度加固影响业务可用性,核心对齐要求如下

服务器上线前必须完成安装源的安全校验,杜绝恶意镜像带来的初始入侵风险,核心流程如下:
# 示例:CentOS 9 镜像哈希校验
sha256sum CentOS-Stream-9-latest-x86_64-dvd1.iso
# 对比官方发布的SHA256值,不一致则禁止使用

最小化安装场景下,必须执行分区安全规划,核心原则是关键目录独立分区、限制高危权限、防止磁盘溢出攻击,分区规范与结构如下

配置生效与持久化命令:
# 1. 查看当前挂载参数
mount | column -t
# 2. 修改/etc/fstab,添加对应挂载参数(示例:/tmp分区)
# 编辑配置文件
vi /etc/fstab
# 添加/修改对应行
UUID=xxxx-xxxx /tmp ext4 defaults,nosuid,noexec,nodev 0 0
# 3. 重新挂载生效,无需重启
mount -o remount /tmp
# 4. 验证配置是否生效
mount | grep /tmp防止单用户模式修改 root 密码、篡改内核启动参数,必须设置 GRUB2 密码保护,配置流程如下:

可直接执行的配置命令:
# 1. 生成GRUB2加密密码(RPM系与DEB系通用)
grub2-mkpasswd-pbkdf2
# 输入密码后,复制生成的PBKDF2哈希串,格式为grub.pbkdf2.sha512.xxxx
# 2. 修改GRUB配置文件
# RPM系(CentOS/RHEL)
vi /etc/grub.d/00_header
# DEB系(Ubuntu/Debian)
vi /etc/grub.d/40_custom
# 3. 文件末尾添加以下内容,替换为生成的哈希串
cat << EOF
set superusers="root"
password_pbkdf2 root 你生成的PBKDF2哈希串
EOF
# 4. 更新GRUB配置文件,持久化生效
# RPM系
grub2-mkconfig -o /boot/grub2/grub.cfg
# DEB系
update-grub
# 5. 风险提示:配置完成后重启验证,必须输入密码才能修改GRUB启动参数限制虚拟终端数量,减少攻击面:
# 1. 查看默认开启的TTY数量
systemctl list-unit-files | grep getty@
# 2. 禁用多余TTY,仅保留1-2个(示例:禁用tty3-tty6)
systemctl mask --now [email protected] [email protected] [email protected] [email protected]
# 3. 验证配置
systemctl list-unit-files | grep getty@ | grep enabled账号安全是 Linux 入侵防御的核心防线,核心原则是最小权限原则、账号全生命周期管控、强身份认证。

可直接执行的配置命令:
# 1. 查看系统所有账号,筛选可登录账号
cat /etc/passwd | grep -v /sbin/nologin | grep -v /bin/false
# 2. 禁用非必需系统账号(示例,根据业务需求调整)
usermod -s /sbin/nologin adm
usermod -s /sbin/nologin lp
usermod -s /sbin/nologin sync
usermod -s /sbin/nologin shutdown
usermod -s /sbin/nologin halt
usermod -s /sbin/nologin news
usermod -s /sbin/nologin uucp
usermod -s /sbin/nologin operator
usermod -s /sbin/nologin games
usermod -s /sbin/nologin gopher
# 3. 锁定长期不使用的账号
usermod -L 账号名
# 解锁账号命令:usermod -U 账号名
# 4. 排查UID=0的账号,正常仅root一条结果
awk -F: '$3==0 {print $1}' /etc/passwd
# 如发现非root账号UID=0,立即删除或修改UID
userdel 违规账号名
# 5. 风险提示:禁止禁用root、bin、daemon、ssh等系统核心运行必需账号通过 PAM 模块与系统配置实现密码全生命周期强管控,符合等保三级要求,RPM 系与 DEB 系配置路径有差异,需严格区分,PAM 认证流程与策略配置逻辑如下:

可直接执行的配置命令:
# ========== RPM系(CentOS/RHEL 7+) ==========
# 1. 编辑PAM认证配置文件
vi /etc/pam.d/system-auth
vi /etc/pam.d/password-auth
# 2. 找到password requisite pam_pwquality.so行,修改为以下配置
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
# 参数说明:
# minlen=12:密码最小长度12位
# lcredit=-1:至少1个小写字母
# ucredit=-1:至少1个大写字母
# dcredit=-1:至少1个数字
# ocredit=-1:至少1个特殊字符
# retry=3:密码错误3次锁定
# enforce_for_root:root用户也强制遵守该规则
# ========== DEB系(Ubuntu/Debian) ==========
# 1. 安装密码复杂度模块
apt update && apt install libpam-pwquality -y
# 2. 编辑PAM配置文件
vi /etc/pam.d/common-password
# 3. 找到password requisite pam_pwquality.so行,修改为上述相同配置
# 1. 编辑登录配置文件,全局生效
vi /etc/login.defs
# 2. 修改/添加以下配置
PASS_MAX_DAYS 90 # 密码最大有效期90天
PASS_MIN_DAYS 5 # 密码修改后最小使用天数5天,防止频繁修改绕过历史记录
PASS_MIN_LEN 12 # 密码最小长度,与PAM配置保持一致
PASS_WARN_AGE 7 # 密码过期前7天提醒用户修改
# 3. 配置密码历史记录,禁止使用近5次用过的密码
# RPM系:在/etc/pam.d/system-auth/password-auth中添加
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
# DEB系:在/etc/pam.d/common-password中添加
password [success=1 default=ignore] pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5# ========== RPM系(CentOS/RHEL 8+,使用pam_faillock) ==========
# 1. 编辑/etc/pam.d/system-auth与password-auth
vi /etc/pam.d/system-auth
vi /etc/pam.d/password-auth
# 2. auth段添加以下配置(放在auth段最上方)
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800 even_deny_root root_unlock_time=3600
auth required pam_faillock.so authfail audit deny=5 unlock_time=1800 even_deny_root root_unlock_time=3600
# 3. account段添加以下配置
account required pam_faillock.so
# ========== DEB系(Ubuntu/Debian) ==========
# 1. 编辑/etc/pam.d/common-auth
vi /etc/pam.d/common-auth
# 2. 添加以下配置
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800 even_deny_root root_unlock_time=3600
auth required pam_faillock.so authfail audit deny=5 unlock_time=1800 even_deny_root root_unlock_time=3600
account required pam_faillock.so
# 常用命令
faillock --user 用户名 # 查看用户登录失败记录
faillock --user 用户名 --reset # 解锁被锁定的用户SSH 是 Linux 远程管理的核心入口,也是黑客攻击的首要目标,必须执行最高等级加固,所有配置修改前必须保留一个活跃会话,防止配置错误导致断连,SSH 加固核心流程与配置逻辑如下:

可直接执行的配置命令:
# 1. 先备份原有配置文件,必做!
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%Y%m%d)
# 2. 编辑SSH主配置文件
vi /etc/ssh/sshd_config
# 3. 核心加固配置(逐项修改/添加,注释掉原有冲突配置)
# 3.1 基础端口与地址绑定
Port 22222 # 修改默认22端口,推荐使用10000-65535之间的端口
ListenAddress 0.0.0.0 # 生产环境建议绑定固定内网IP,禁止0.0.0.0
# 3.2 登录权限管控
PermitRootLogin no # 禁止root用户直接远程登录
MaxAuthTries 3 # 最大认证尝试次数3次
MaxSessions 5 # 最大并发会话数5个
LoginGraceTime 30s # 登录认证超时时间30秒
PermitEmptyPasswords no # 禁止空密码登录
# 3.3 认证方式加固
PasswordAuthentication no # 生产环境禁用密码登录,仅使用密钥登录
PubkeyAuthentication yes # 开启公钥密钥认证
ChallengeResponseAuthentication no # 禁用挑战应答认证
GSSAPIAuthentication no # 禁用GSSA