本文将指导系统管理员和安全检查人员对Linux操作系统进行全面的安全合规性检查和加固。通过遵循以下关键步骤,您可以显著提升系统的安全性,降低被攻击风险。1. 账户与口令安全
账户和口令是系统安全的第一道防线,严格的账户和密码策略能有效阻止未授权访问。1.1 禁用或删除无用账户
系统在安装和运行过程中会创建多种账户,而无需使用的账户会成为攻击者的入口点。- 使用命令
userdel <用户名>删除不必要的账户 - 使用命令
passwd -l <用户名>锁定暂时不需要但后续可能使用的账户 - 使用命令
passwd -u <用户名>在需要时解锁账户
定期审查系统账户,特别是系统默认创建的非必要账户。任何未被使用的账户都应被删除或锁定,以减少攻击面。1.2 检查特殊账户
特殊账户如空口令账户和具有root权限的账户是严重的安全隐患。- 使用命令
awk -F: '($2=="")' /etc/shadow查看空口令账户 - 使用命令
awk -F: '($3==0)' /etc/passwd查看UID为零的账户
- 为所有空口令账户设置复杂密码:
passwd <用户名> - 确保只有root账户的UID为0,其他UID为0的账户应重新分配UID或删除
1.3 强化口令策略
弱密码是系统被入侵的主要原因之一,强制密码策略能有效防范暴力破解。
PASS_MAX_DAYS 90 # 密码最长使用90天PASS_MIN_DAYS 7 # 密码最短使用7天,防止频繁更改PASS_WARN_AGE 7 # 密码过期前7天提醒用户
chage -m 7 -M 90 -W 7 <用户名>
- 配置密码复杂度策略,编辑/etc/security/pwquality.conf或/etc/pam.d/system-auth:
- 设置连续认证失败锁定策略,在/etc/pam.d/system-auth中添加:
auth required pam_tally.so onerr=fail deny=5 unlock_time=300
限制特权操作
严格控制用户切换到root权限的能力,遵循最小权限原则。- 编辑/etc/pam.d/su文件,添加以下行限制只有wheel组用户可使用
su:auth required pam_wheel.so group=wheel
- 将需要特权的用户加入wheel组:
usermod -aG wheel <用户名>
2. 服务安全配置
不必要的服务会增加系统攻击面,合理配置服务是安全加固的关键环节。2.1 关闭非必要服务
systemctl list-units --type=service --state=running
chkconfig --level <init级别> <服务名> off
2.2 SSH服务安全加固
SSH是远程管理的主要方式,也是攻击者重点攻击的目标。编辑/etc/ssh/sshd_config文件,修改以下参数:PermitRootLogin noProtocol 2MaxAuthTries 3Port 2222PermitEmptyPasswords noClientAliveInterval 300ClientAliveCountMax 2AllowUsers user1 user2@192.168.1.*
3. 文件系统安全
合理的文件系统权限设置能有效限制攻击者在入侵后的横向移动。3.1 设置默认umask值
umask 027 # 文件权限默认640,目录权限默认750
此设置确保新创建的文件属主拥有读写权限,同组用户拥有读权限,其他用户无权限。3.2 设置登录超时
3.3 保护敏感文件
chmod 644 /etc/passwdchmod 000 /etc/shadowchmod 644 /etc/groupchmod 440 /etc/sudoers
4. 日志与审计
4.1 系统日志配置
4.2 记录用户操作日志
historyUSER=`whoami`USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]; then USER_IP=`hostname`fiif [ ! -d /var/log/history ]; then mkdir /var/log/history chmod 777 /var/log/historyfiif [ ! -d /var/log/history/${LOGNAME} ]; then mkdir /var/log/history/${LOGNAME} chmod 300 /var/log/history/${LOGNAME}fiexport HISTSIZE=4096DT=`date +"%Y%m%d_%H:%M:%S"`export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
执行source /etc/profile使配置生效。此配置将为每个用户创建独立的操作日志,记录用户名、登录IP和时间等信息,便于审计追踪。5. 高级安全加固措施
5.1 防火墙配置
使用firewalld(CentOS/RHEL):systemctl start firewalldsystemctl enable firewalldfirewall-cmd --permanent --add-port=2222/tcp firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload
ufw allow 2222/tcp # SSH自定义端口ufw allow 80/tcpufw allow 443/tcpufw enable
5.2 内核参数加固
编辑/etc/sysctl.conf文件,添加以下安全设置:kernel.randomize_va_space = 2net.ipv4.conf.all.rp_filter = 1net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0
6. 安全合规检查脚本
以下是一个简单的安全检查脚本示例,可用于快速评估系统安全性:#!/bin/bashecho "=== Linux系统安全合规检查 ==="echo "1. 检查UID为0的账户:"awk -F: '($3==0) {print $1}' /etc/passwdecho "2. 检查空口令账户:"awk -F: '($2=="") {print $1}' /etc/shadowecho "3. 检查密码策略:"grep "^PASS" /etc/login.defsecho "4. 检查SSH配置:"grep -E "^(PermitRootLogin|Protocol|MaxAuthTries)" /etc/ssh/sshd_configecho "=== 检查完成 ==="
将以上内容保存为security_check.sh,赋予执行权限后运行即可进行快速检查。总结
Linux系统安全加固是一个持续的过程,而非一次性的任务。本文介绍的措施涵盖了账户安全、服务安全、文件系统安全和日志审计等多个关键领域,形成了纵深防御体系。通过实施以上安全措施,您可以显著提升Linux系统的安全性,为业务运行提供可靠的基础环境。安全是一个持续的过程,唯有保持警惕和定期维护,才能有效应对日益复杂的网络威胁。