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

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)。

相关文章:

  • 《HarmonyOSNext终极UIAbility手册:从启动模式到页面跳转,一网打尽!》
  • C++之前向声明
  • [学习] Costas环详解:从原理到实战
  • 2025GEO供应商排名深度解析:源易信息构建AI生态优势
  • 一数一源一标准的补充
  • 【C】 USB CDC、Bulk-OUT 端点
  • PostgresSQL日常维护
  • 网页组件强制设置右对齐
  • python下载与开发环境配置
  • 从“字对字“到“意对意“:AI翻译正在重塑人类的语言认知模式
  • 观测云,全球领先的监控观测平台亮相亚马逊云科技中国峰会!
  • SecureRandom.getInstanceStrong() 与虚拟机的爱恨情仇
  • 【更新】中国经济政策不确定性指数数据集(2000.1-2025.5)
  • 2025 年二级造价工程师职业资格考试的报考条件有哪些新变化?
  • 【Java】Arrays.sort:TimSort
  • 560. 和为K的子数组
  • 软件测试之APP测试要点(包含Monkey基础使用)
  • C++实现文本编辑功能
  • C primer plus (第六版)第七章 编程练习第4题,第5题
  • 企业如何高效构建BI团队,解锁数据价值新高地?
  • 专业的上海网站建设公司排名/win11优化大师
  • 锡盟建设工程造价工程管理网站/郑州营销型网站建设
  • 做网站要多大的画布/怎样制作一个自己的网站
  • 网站服务器一年多少钱/长沙seo报价
  • 平果县免费网站哪家好/seo教学视频教程
  • 做网站对于不同的分辨率/百度竞价推广计划