本文来自微信公众号「萌动的红日」,关注后可第一时间收到推送
打开原文 · 去微信公众号阅读

Linux操作系统安全合规性检查和加固手册


本文将指导系统管理员和安全检查人员对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 强化口令策略

弱密码是系统被入侵的主要原因之一,强制密码策略能有效防范暴力破解。
配置步骤:
  1. 修改/etc/login.defs文件:
PASS_MAX_DAYS 90    # 密码最长使用90PASS_MIN_DAYS 7     # 密码最短使用7天,防止频繁更改PASS_WARN_AGE 7     # 密码过期前7天提醒用户

  1. 使用chage命令修改特定用户设置:
chage -m 7 -M 90 -W 7 <用户名>

  1. 配置密码复杂度策略,编辑/etc/security/pwquality.conf或/etc/pam.d/system-auth:
minlen=10       # 最小长度10位minclass=3      # 至少包含3种字符类型(大写、小写、数字、特殊字符)

  1. 设置连续认证失败锁定策略,在/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

  • 禁用不必要的服务:
    systemctl disable <服务名>

  • 对于老版本Linux(如CentOS 6):
    chkconfig --level <init级别> <服务名> off

应重点关注的服务:
  • 打印服务(cups)
  • 远程桌面服务(vncserver)
  • 蓝牙服务(bluetooth)
  • 其他非业务必需的服务

2.2 SSH服务安全加固

SSH是远程管理的主要方式,也是攻击者重点攻击的目标。
加固步骤:
编辑/etc/ssh/sshd_config文件,修改以下参数:
# 禁止root直接登录PermitRootLogin no# 使用SSH协议版本2Protocol 2# 限制认证尝试次数MaxAuthTries 3# 修改默认端口(可选)Port 2222# 禁止空密码登录PermitEmptyPasswords no# 设置空闲超时时间ClientAliveInterval 300ClientAliveCountMax 2# 限制登录用户(可选)AllowUsers user1 user2@192.168.1.*

增强措施:
  • 使用密钥认证替代密码认证
  • 安装fail2ban防止暴力破解
  • 配置SSH Banner显示登录警告信息

3. 文件系统安全

合理的文件系统权限设置能有效限制攻击者在入侵后的横向移动。

3.1 设置默认umask值

umask决定新创建文件和目录的默认权限。
配置方法:
在/etc/profile文件中添加:
umask 027    # 文件权限默认640,目录权限默认750
此设置确保新创建的文件属主拥有读写权限,同组用户拥有读权限,其他用户无权限。

3.2 设置登录超时

配置方法:
在/etc/profile文件中设置:
TMOUT=180    # 设置超时时间为3分钟export TMOUT
这能防止在用户离开时,未退出的会话被他人滥用。

3.3 保护敏感文件

关键文件权限设置:
chmod 644 /etc/passwdchmod 000 /etc/shadowchmod 644 /etc/groupchmod 440 /etc/sudoers

4. 日志与审计

完善的日志记录是事后审计和取证的基础。

4.1 系统日志配置

确保以下日志功能启用:
  • 系统日志:/var/log/messages
  • cron日志:/var/log/cron
  • 安全日志:/var/log/secure
配置远程日志服务器(增强可靠性):
在/etc/rsyslog.conf中添加:
@远程日志服务器IP

4.2 记录用户操作日志

配置方法:
在/etc/profile文件中添加以下脚本:
# 记录用户操作日志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  # SSH自定义端口firewall-cmd --permanent --add-service=httpfirewall-cmd --permanent --add-service=httpsfirewall-cmd --reload

使用UFW(Ubuntu/Debian):
ufw allow 2222/tcp  # SSH自定义端口ufw allow 80/tcpufw allow 443/tcpufw enable

5.2 内核参数加固

编辑/etc/sysctl.conf文件,添加以下安全设置:
# 启用地址空间布局随机化kernel.randomize_va_space = 2# 网络安全参数net.ipv4.conf.all.rp_filter = 1net.ipv4.conf.all.accept_redirects = 0net.ipv4.conf.all.send_redirects = 0

执行sysctl -p使配置生效。

6. 安全合规检查脚本

以下是一个简单的安全检查脚本示例,可用于快速评估系统安全性:
#!/bin/bashecho "=== Linux系统安全合规检查 ==="# 检查UID为0的账户echo "1. 检查UID为0的账户:"awk -F: '($3==0) {print $1}' /etc/passwd# 检查空口令账户echo "2. 检查空口令账户:"awk -F: '($2=="") {print $1}' /etc/shadow# 检查密码策略echo "3. 检查密码策略:"grep "^PASS" /etc/login.defs# 检查SSH配置echo "4. 检查SSH配置:"grep -E "^(PermitRootLogin|Protocol|MaxAuthTries)" /etc/ssh/sshd_configecho "=== 检查完成 ==="

将以上内容保存为security_check.sh,赋予执行权限后运行即可进行快速检查。

总结

Linux系统安全加固是一个持续的过程,而非一次性的任务。本文介绍的措施涵盖了账户安全、服务安全、文件系统安全和日志审计等多个关键领域,形成了纵深防御体系。
日常维护建议:
  • 定期更新系统补丁
  • 每月审查账户和服务
  • 每季度进行安全审计
  • 每年进行渗透测试
通过实施以上安全措施,您可以显著提升Linux系统的安全性,为业务运行提供可靠的基础环境。
安全是一个持续的过程,唯有保持警惕和定期维护,才能有效应对日益复杂的网络威胁。

关注「萌动的红日」

每天一点正能量,陪你迎接每一个萌动的红日。关注公众号,第一时间阅读最新文章。

本文内容已在公众号首发,点击下方按钮可跳转微信原文

打开原文 · 去微信公众号阅读

原文链接:在微信公众号中阅读

上一篇Office Tool Plus:一键搞定Office安装激活的办公神器 下一篇轻松修改文件时间的利器--NewFileTime
← 返回文章列表
关注公众号