当前位置: 首页 > ops >正文

Linux操作系统基线检查与安全加固概述

前言:

       在数字化转型浪潮中,Linux凭借其开源生态与卓越稳定性,已成为云计算、金融核心系统及关键基础设施的承载主体。然而,随着网络攻击手段的持续演进和漏洞利用的产业化,默认配置的Linux系统如同“不设防的堡垒”——弱口令、未修复漏洞、过度权限配置等隐患,正成为攻击者突破的黄金入口

目录

一、系统安全基线

1、账户与认证安全

2、文件与目录权限

3、SSH服务安全

4、网络与服务配置

5、日志与审计

6、内核参数加固

7、更新与补丁

8、安全模块配置

9、SUID/SGID文件检查

10、默认权限控制(umask)

二、系统安全加固

1、账户与认证加固

2、服务与网络加固

3、文件系统与权限加固

4、内核参数加固

5、日志与审计加固

6、安全工具与模块

7、其他加固措施

8、总结

三、漏洞修复案例

案例1:Shellshock漏洞(CVE-2014-6271)

案例2:Dirty COW漏洞(CVE-2016-5195)

案例3:Heartbleed漏洞(CVE-2014-0160)

案例4:Sudo提权漏洞(CVE-2021-3156)

案例5:Ghost漏洞(CVE-2015-0235)

案例6:SSH Weak MAC Algorithms(CVE-2008-5161)

案例7:Polkit权限提升漏洞(CVE-2021-4034)

案例8:Apache HTTP Server漏洞(CVE-2021-41773)

案例9:Log4j远程代码执行漏洞(CVE-2021-44228)

案例10:Linux内核Netfilter漏洞(CVE-2024-1086)

总结


一、系统安全基线

1、账户与认证安全

  1. 检查默认账户状态

    • 检查点:锁定或删除不必要的默认账户(如guest, test)。

    • 案例

       # 锁定账户sudo passwd -l guest# 删除账户sudo userdel test
  2. 密码策略配置

    • 检查点:密码长度≥8位,复杂度包含大小写、数字、符号,有效期≤90天。

    • 案例:修改/etc/login.defs

       PASS_MAX_DAYS 90PASS_MIN_LEN 8PASS_WARN_AGE 7

      安装libpam-pwquality并配置复杂度(/etc/security/pwquality.conf):

       minlen = 8dcredit = -1ucredit = -1
  3. 禁止Root直接登录

    • 检查点:通过SSH禁止Root远程登录,使用普通用户+sudo提权。

    • 案例:修改/etc/ssh/sshd_config

       PermitRootLogin no
  4. 空密码账户检查

    • 检查点:确保所有账户均有密码。

    • 案例

       awk -F: '($2 == "") {print $1}' /etc/shadow

2、文件与目录权限

  1. 关键文件权限

    • 检查点/etc/passwd权限644,/etc/shadow权限600。

    • 案例

       chmod 644 /etc/passwdchmod 600 /etc/shadow
  2. 全局可写文件检查

    • 检查点:查找权限为777的文件或目录。

    • 案例

       find / -perm -0777 -type f -exec ls -l {} \;
  3. 无属主文件检查

    • 检查点:修复无属主或属组的文件。

    • 案例

      find / -nouser -o -nogroup -exec chown root:root {} \;
  4. 临时目录粘滞位

    • 检查点/tmp目录设置粘滞位(权限1777)。

    • 案例

       chmod +t /tmp

3、SSH服务安全

  1. 使用SSH协议版本2

    • 检查点:禁用不安全的SSHv1。

    • 案例:修改/etc/ssh/sshd_config

       Protocol 2
  2. 限制登录尝试次数

    • 检查点:防止暴力破解,限制失败尝试为3次。

    • 案例:修改/etc/ssh/sshd_config

       MaxAuthTries 3
  3. 启用密钥认证

    • 检查点:禁用密码登录,强制使用密钥。

    • 案例

      PasswordAuthentication no

4、网络与服务配置

  1. 关闭非必要服务

    • 检查点:禁用Telnet、FTP等不安全服务。

    • 案例

       systemctl stop telnet.socketsystemctl disable telnet.socket
  2. 防火墙配置

    • 检查点:仅开放必要端口(如SSH的22/HTTP的80)。

    • 案例(使用iptables):

       iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -j DROP
  3. 禁用ICMP重定向

    • 检查点:防止网络参数被篡改。

    • 案例:修改/etc/sysctl.conf

      net.ipv4.conf.all.accept_redirects = 0

5、日志与审计

  1. 日志服务状态

    • 检查点:确保rsyslog/auditd运行。

    • 案例

      systemctl status rsyslog
  2. 关键日志权限

    • 检查点/var/log/secure权限设为640。

    • 案例

       chmod 640 /var/log/secure
  3. 审计关键文件

    • 检查点:监控/etc/passwd的修改。

    • 案例:添加auditd规则(/etc/audit/rules.d/audit.rules):

       -w /etc/passwd -p wa -k passwd_change

6、内核参数加固

  1. 防SYN洪水攻击

    • 检查点:启用SYN Cookies。

    • 案例:修改/etc/sysctl.conf

       net.ipv4.tcp_syncookies = 1
  2. 禁用IP源路由

    • 检查点:防止IP欺骗。

    • 案例

       net.ipv4.conf.all.accept_source_route = 0

7、更新与补丁

  1. 系统更新检查

    • 检查点:定期更新所有软件包。

    • 案例

       apt update && apt upgrade -y  # Debian/Ubuntuyum update -y                 # CentOS/RHEL

8、安全模块配置

  1. 启用SELinux/AppArmor

    • 检查点:确保处于enforcing模式。

    • 案例:修改/etc/selinux/config

       SELINUX=enforcing

9、SUID/SGID文件检查

  1. 清理危险权限文件

    • 检查点:移除不必要的SUID/SGID文件。

    • 案例

       find / -perm /4000 -type f -exec ls -l {} \;  # SUID文件find / -perm /2000 -type f -exec ls -l {} \;  # SGID文件

10、默认权限控制(umask)

  1. 设置严格umask

    • 检查点:全局umask设置为027(文件640,目录750)。

    • 案例:修改/etc/profile

       umask 027

二、系统安全加固

1、账户与认证加固

  1. 禁用默认账户与空密码账户

    • 加固点:删除或锁定未使用的默认账户,禁止空密码登录。

    • 案例

      # 锁定账户(如guest)sudo passwd -l guest# 删除空密码账户sudo userdel $(awk -F: '($2 == "") {print $1}' /etc/shadow)
  2. 强化密码策略

    • 加固点:强制密码复杂度、有效期及历史记录。

    • 案例:修改/etc/login.defs

       PASS_MAX_DAYS 90    # 密码最长使用90天PASS_MIN_DAYS 1     # 最短修改间隔1天PASS_WARN_AGE 7     # 密码到期前7天提醒

      配置/etc/security/pwquality.conf(需安装libpam-pwquality):

       minlen = 10         # 密码最小长度10位minclass = 3        # 包含至少3种字符类别(大小写、数字、符号)
  3. 限制sudo权限

    • 加固点:仅允许特定用户或组使用sudo

    • 案例:修改/etc/sudoers

       # 仅允许admin组用户使用sudo%admin ALL=(ALL) ALL# 禁止普通用户执行危险命令(如重启)User_Alias RESTRICTED_USERS = alice, bobCmnd_Alias DANGEROUS_CMDS = /sbin/reboot, /sbin/shutdownRESTRICTED_USERS ALL=(ALL) ALL, !DANGEROUS_CMDS

2、服务与网络加固

  1. 关闭非必要服务

    • 加固点:禁用未使用的服务(如Telnet、FTP)。

    • 案例

       # 查看所有服务状态(systemd系统)systemctl list-unit-files --state=enabled# 禁用Telnet服务systemctl disable telnet.socket
  2. 防火墙配置

    • 加固点:仅开放必要端口,默认拒绝所有入站流量。

    • 案例(使用iptables):

       # 清空现有规则iptables -F# 允许SSH(22)、HTTP(80)、HTTPS(443)iptables -A INPUT -p tcp --dport 22 -j ACCEPTiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT# 默认拒绝其他入站流量iptables -P INPUT DROP# 保存规则(CentOS/RHEL)service iptables save
  3. SSH服务加固

    • 加固点:限制SSH访问、启用密钥认证、禁止Root登录。

    • 案例:修改/etc/ssh/sshd_config

       PermitRootLogin no             # 禁止Root登录PasswordAuthentication no      # 禁用密码登录(强制密钥)AllowUsers alice@192.168.1.0/24 # 仅允许特定IP段的用户alice登录MaxAuthTries 3                 # 最大登录尝试3次

3、文件系统与权限加固

  1. 关键文件权限控制

    • 加固点:限制敏感文件(如/etc/passwd/etc/shadow)的访问。

    • 案例

       chmod 600 /etc/shadow     # 仅Root可读写chmod 644 /etc/passwd     # Root可读写,其他用户只读
  2. 禁用危险权限文件

    • 加固点:查找并移除不必要的SUID/SGID权限文件。

    • 案例

      # 查找所有SUID/SGID文件find / -perm /4000 -o -perm /2000 -exec ls -l {} \;# 移除危险文件权限(如不必要的setuid程序)chmod u-s /usr/bin/example_tool
  3. 挂载选项加固

    • 加固点:为关键分区添加noexecnosuid选项。

    • 案例:修改/etc/fstab

       /tmp  /tmp  ext4  defaults,noexec,nosuid,nodev  0 0/home /home ext4  defaults,nodev               0 0

4、内核参数加固

  1. 防SYN洪水攻击

    • 加固点:启用SYN Cookies防止DDoS攻击。

    • 案例:修改/etc/sysctl.conf

       net.ipv4.tcp_syncookies = 1       # 启用SYN Cookiesnet.ipv4.tcp_max_syn_backlog = 2048 # 增大SYN队列长度
  2. 禁用IP转发与源路由

    • 加固点:防止系统被用作路由器或遭受IP欺骗。

    • 案例

      net.ipv4.ip_forward = 0           # 禁用IPv4转发
      net.ipv4.conf.all.accept_source_route = 0  # 禁用源路由
  3. 限制核心转储文件

    • 加固点:防止通过核心转储泄露敏感信息。

    • 案例

      # 限制核心转储文件大小(单位:KB)ulimit -c 0# 永久生效:在/etc/security/limits.conf中添加* hard core 0

5、日志与审计加固

  1. 启用审计服务(auditd)

    • 加固点:监控关键文件和用户操作。

    • 案例:配置/etc/audit/rules.d/audit.rules

       # 监控/etc/passwd和/etc/shadow的修改-w /etc/passwd -p wa -k passwd_change-w /etc/shadow -p wa -k shadow_change# 监控用户提权操作(sudo)-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -k sudo_use
  2. 日志远程存储

    • 加固点:防止本地日志被篡改,配置日志服务器。

    • 案例:修改/etc/rsyslog.conf

       # 将日志发送到远程服务器(替换IP)*.* @192.168.1.100:514
  3. 日志轮转与保留

    • 加固点:避免日志文件过大,保留90天日志。

    • 案例:修改/etc/logrotate.conf

       rotate 12          # 保留12个日志副本(按月轮转)maxage 90          # 日志保留90天

6、安全工具与模块

  1. 启用SELinux/AppArmor

    • 加固点:强制访问控制(MAC)限制进程权限。

    • 案例(SELinux):

       # 检查状态sestatus# 修改模式为enforcingsetenforce 1# 永久生效:修改/etc/selinux/configSELINUX=enforcing
  2. 安装入侵检测工具(如AIDE)

    • 加固点:监控文件完整性。

    • 案例

       # 安装AIDEyum install aide -y        # CentOS/RHELapt install aide -y        # Debian/Ubuntu# 初始化数据库aide --init# 每日自动检查echo "0 0 * * * /usr/sbin/aide --check" >> /etc/crontab
  3. 部署防暴力破解工具(如fail2ban)

    • 加固点:自动封禁多次登录失败的IP。

    • 案例

       # 安装fail2banyum install fail2ban -y    # CentOS/RHELapt install fail2ban -y    # Debian/Ubuntu# 配置SSH防护(/etc/fail2ban/jail.local)[sshd]enabled = truemaxretry = 3               # 允许3次失败尝试bantime = 86400            # 封禁24小时

7、其他加固措施

  1. 限制用户历史命令记录

    • 加固点:防止敏感命令泄露。

    • 案例:修改/etc/profile

      # 减少历史命令保存条数export HISTSIZE=50# 不记录特定命令(如密码相关)export HISTIGNORE="passwd:*ssh*:mysql*"
  2. 禁用Ctrl+Alt+Del重启

    • 加固点:防止误操作或恶意重启。

    • 案例:注释/etc/systemd/system.conf中的配置:

       # 原内容:CtrlAltDelBurstAction=reboot-force# 修改为:#CtrlAltDelBurstAction=reboot-force
  3. 定期更新系统

    • 加固点:修复已知漏洞。

    • 案例

       # Debian/Ubuntuapt update && apt upgrade -y# CentOS/RHELyum update -y --security

8、总结

       通过账户加固、服务管理、文件权限控制、内核参数优化、日志审计、安全工具部署等综合措施,可显著提升Linux系统的安全性。实际操作中需结合业务场景调整策略,并通过工具(如Lynis、OpenSCAP)验证加固效果。

三、漏洞修复案例

案例1:Shellshock漏洞(CVE-2014-6271)
  • 影响版本:Bash ≤4.3

  • 漏洞描述:通过环境变量注入恶意代码,可远程执行任意命令。

  • 修复步骤

     # 更新Bashsudo apt-get update && sudo apt-get install --only-upgrade bash  # Debian/Ubuntusudo yum update bash -y  # RHEL/CentOS
  • 验证方法

     env x='() { :;}; echo vulnerable' bash -c "echo test"  # 若输出"vulnerable"则未修复。
案例2:Dirty COW漏洞(CVE-2016-5195)
  • 影响版本:Linux内核 2.6.22 ≤ version ≤4.8.3

  • 漏洞描述:竞争条件漏洞,允许本地用户提权到root。

  • 修复步骤

     sudo apt-get update && sudo apt-get upgrade linux-image-$(uname -r)  # Debian/Ubuntusudo yum update kernel -y  # RHEL/CentOSsudo reboot
  • 验证方法: 使用漏洞检测脚本(如dirtycow-detect)或检查内核版本是否≥4.8.3。

案例3:Heartbleed漏洞(CVE-2014-0160)
  • 影响版本:OpenSSL 1.0.1 ~1.0.1f

  • 漏洞描述:TLS心跳扩展漏洞,可泄露服务器内存中的敏感信息。

  • 修复步骤

     sudo apt-get update && sudo apt-get install openssl libssl1.0.0  # Debian/Ubuntusudo yum update openssl -y  # RHEL/CentOS
  • 验证方法: 使用nmap --script ssl-heartbleed <目标IP>检测是否修复。

案例4:Sudo提权漏洞(CVE-2021-3156)
  • 影响版本:Sudo 1.8.2 ~1.8.31p2

  • 漏洞描述:堆溢出漏洞,本地用户无需密码即可获取root权限。

  • 修复步骤

     sudo apt-get install sudo -y  # Debian/Ubuntu(自动升级到最新)sudo yum update sudo -y  # RHEL/CentOS
  • 验证方法: 执行sudoedit -s /,若返回"sudoedit"错误而非崩溃则已修复。

案例5:Ghost漏洞(CVE-2015-0235)
  • 影响版本:glibc ≤2.17

  • 漏洞描述gethostbyname函数缓冲区溢出,可导致远程代码执行。

  • 修复步骤

     sudo apt-get update && sudo apt-get install libc6  # Debian/Ubuntusudo yum update glibc -y  # RHEL/CentOS
  • 验证方法: 使用检测脚本check_ghost.sh或检查glibc版本≥2.18。

案例6:SSH Weak MAC Algorithms(CVE-2008-5161)
  • 影响版本:OpenSSH ≤7.2

  • 漏洞描述:支持弱加密算法(如MD5),易受中间人攻击。

  • 修复步骤: 编辑/etc/ssh/sshd_config,禁用不安全的MAC算法:

    MACs hmac-sha2-512,hmac-sha2-256

    重启服务:systemctl restart sshd

  • 验证方法: 使用ssh -Q mac或扫描工具(如nmap --script ssh2-enum-algos)确认禁用弱算法。


案例7:Polkit权限提升漏洞(CVE-2021-4034)
  • 影响版本:polkit ≤0.120

  • 漏洞描述:本地用户可通过环境变量注入执行任意代码。

  • 修复步骤

     sudo apt-get update && sudo apt-get install policykit-1 -y  # Debian/Ubuntusudo yum update polkit -y  # RHEL/CentOS
  • 验证方法: 执行检测命令pkexec --version,确认版本≥0.121。


案例8:Apache HTTP Server漏洞(CVE-2021-41773)
  • 影响版本:Apache 2.4.49/2.4.50

  • 漏洞描述:路径遍历漏洞,可读取服务器敏感文件。

  • 修复步骤

     sudo apt-get install apache2 -y  # Debian/Ubuntu(升级到2.4.51+)sudo yum update httpd -y  # RHEL/CentOS
  • 验证方法: 使用漏洞检测POC或检查Apache版本≥2.4.51。


案例9:Log4j远程代码执行漏洞(CVE-2021-44228)
  • 影响版本:Log4j 2.x ≤2.14.1

  • 漏洞描述:JNDI注入漏洞,攻击者可通过日志记录触发RCE。

  • 修复步骤

    1. 升级Log4j到2.17.0+:

       # 手动替换JAR文件或通过包管理器更新
    2. 设置环境变量禁用JNDI:

       export LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  • 验证方法: 使用扫描工具(如log4j-detector)确认版本和配置。


案例10:Linux内核Netfilter漏洞(CVE-2024-1086)
  • 影响版本:Linux内核 5.14 ~6.6

  • 漏洞描述:释放后使用(Use-After-Free)漏洞,可导致本地提权。

  • 修复步骤

     sudo apt-get update && sudo apt-get install linux-image-generic  # Debian/Ubuntusudo yum update kernel -y  # RHEL/CentOSsudo reboot
  • 验证方法: 检查内核版本是否升级到修复版本(如6.6.15+)。

总结

       以上案例覆盖了从用户态工具(如Bash、Sudo)到内核级漏洞的修复流程,同时包含配置修复(如SSH、Apache)和第三方库升级(如Log4j)。

       建议在修复后:

       1.通过版本检查或漏洞扫描工具验证。

       2.定期订阅CVE公告(如Linux内核邮件列表)。

       3.使用自动化工具(如unattended-upgrades)或漏洞管理平台(如Tenable、Qualys)。

http://www.xdnf.cn/news/13485.html

相关文章:

  • ZYNQ学习记录FPGA(三)状态机
  • 梯度范数的作用
  • P1186 玛丽卡
  • Python编程基石:整型、浮点、字符串与布尔值完全解读
  • linux学习第20天(进程间通信,管道)
  • MYSQL多表查询
  • HashMap 核心实现原理分析
  • 【翻译】图解deepseek-R1
  • 组织结构图软件:数据驱动的可视化架构管理工具
  • 洛谷P1093【NOIP2007 普及组】奖学金
  • 560. 和为K的子数组
  • Flink 系列之二十七 - Flink SQL - 中间算子:OVER聚合
  • 国内电商API接口平台排名与解析
  • 2025年深度学习+多目标优化最新创新思路
  • 学习笔记087——Java接口和抽象类的区别和使用
  • 对比**CMake** 和 **PlatformIO** 构建嵌入式项目方式
  • C++(5)
  • Wordpress安装插件提示输入ftp问题解决
  • AIStarter一键启动平台:轻松运行AI项目,无需复杂配置
  • 五种IO模型与阻塞IO
  • LeetCode - 1047. 删除字符串中的所有相邻重复项
  • dockerfile 简单搭建 和 supervisor 进程管理工具
  • JAVASE:方法
  • 亚远景-ASPICE在汽车软件全生命周期管理中的作用
  • 7. 整数反转
  • 探索奇妙的LLM应用:提高工作效率的AI代理和RAG合集
  • Jemily张洁领域成就概述:匠心筑品牌,革新引航家用电梯新征程
  • 31.Python编程实战:自动化批量压缩与解压文件
  • GoldenDB简述
  • 【DVWA系列】——xss(DOM)——High详细教程