系统安全及应用深度笔记

系统安全及应用深度笔记

一、账号安全控制体系构建

(一)账户全生命周期管理

1. 冗余账户精细化治理
  • 非登录账户基线核查

    Linux 系统默认创建的非登录账户(如bindaemonmail)承担系统服务支撑功能,其登录 Shell 必须强制设置为/sbin/nologin。通过以下命令批量核查:

    bash 复制代码
    grep "/sbin/nologin" /etc/passwd | awk -F: '{print $1}'

    若发现异常账户(如 Shell 被修改为/bin/bash),需立即排查是否存在非法篡改。

  • 动态账户清理策略

    • 临时账户处理

      :对于安装程序生成的临时账户(如

      复制代码
      games
      
      lp

      ),若确认无用可直接删除:

      bash 复制代码
      userdel -r games  # -r选项递归删除宿主目录
    • 僵尸账户锁定

      :对不确定是否需保留的账户,采用

      复制代码
      usermod -L

      双向锁定(同时锁定密码和账户状态):

      bash 复制代码
      usermod -L -e "01/01/2020" zhangsan  # 设置过期时间并锁定

      解锁时需同时清除过期时间:

      bash 复制代码
      usermod -U -e "" zhangsan
  • 账户配置文件免疫机制

    使用chattr命令为账户核心文件添加不可变属性(+i),形成写保护:

    bash 复制代码
    chattr +i /etc/passwd /etc/shadow /etc/group

    此时任何账户操作(包括useraddpasswd)都会报错,解锁需管理员手动执行:

    bash 复制代码
    chattr -i /etc/passwd /etc/shadow /etc/group
2. 密码策略三维度强化
  • 时间维度:有效期梯度控制

    • 全局策略

      :在

      复制代码
      /etc/login.defs

      中配置默认密码策略,例如:

      bas

      bash 复制代码
      PASS_MAX_DAYS 90    # 最大有效期90天
      PASS_MIN_DAYS 7     # 最小修改间隔7天
      PASS_WARN_AGE 14    # 过期前14天警告
    • 个体策略

      :针对特权账户(如

      复制代码
      root

      )设置更严格的有效期:

      bash 复制代码
      chage -M 30 -W 7 root  # 30天强制修改,提前7天警告
  • 强度维度:复杂度校验

    结合 PAM 模块实现密码复杂度检查,在/etc/pam.d/system-auth中添加:

    bash 复制代码
    password requisite pam_cracklib.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1  # 要求至少12位,包含大小写、数字

    违反策略时用户将收到明确提示:密码必须包含至少1个大写字母、1个小写字母和1个数字

  • 行为维度:强制密码重置

    • 首次登录重置

      :新建用户时强制下次登录修改密码:

      bash 复制代码
      useradd -m jerry && chage -d 0 jerry
    • 批量重置

      :系统升级后要求所有用户重新设置密码:

      bash 复制代码
      awk -F: '$3>=1000' /etc/passwd | cut -d: -f1 | xargs -I {} chage -d 0 {}
3. 会话安全深度加固
  • 历史命令防泄露

    • 记录量限制

      :全局限制所有用户历史命令记录为 500 条(默认 1000 条):

      bash 复制代码
      echo "HISTSIZE=500" >> /etc/profile && source /etc/profile
    • 敏感操作净化

      :在用户

      复制代码
      .bashrc

      中添加过滤规则,自动清除包含密码的命令:

      bash 复制代码
      export HISTIGNORE='*password*:*passwd*'
  • 智能超时机制

    • 动态超时

      :根据会话活跃度自动调整超时时间(需结合脚本实现),基础配置为:

      bash 复制代码
      echo "export TMOUT=300" >> /etc/profile  # 5分钟无操作自动注销
    • 例外场景

      :在执行长时间任务(如编译代码)时,临时禁用超时:

      bash 复制代码
      trap '' SIGALRM  # 忽略超时信号

(二)权限管理矩阵模型

1. su 命令的最小权限控制
  • wheel 组特权隔离

    • 用户加入

      :将授权用户添加到

      复制代码
      wheel

      组(GID=10):

      bash 复制代码
      gpasswd -a tsengyia wheel
    • 配置激活

      :编辑

      复制代码
      /etc/pam.d/su

      ,取消注释以下行以启用 wheel 组验证:

      bash 复制代码
      auth required pam_wheel.so use_uid  # 仅wheel组成员可使用su
    • 审计追踪

      :su 操作记录存储在

      复制代码
      /var/log/secure

      ,可通过以下命令过滤:

      bash 复制代码
      grep "su:" /var/log/secure | grep "session opened"
2. sudo 的 RBAC 模型实践
  • 细粒度授权示例

    • 单命令授权

      :允许用户

      复制代码
      jerry

      在本地执行

      复制代码
      ifconfig

      (需输入自身密码):

      bash 复制代码
      visudo -c <<EOF
      jerry localhost=/sbin/ifconfig
      EOF
    • 无密码授权

      :允许

      复制代码
      admin

      组用户无密码执行

      复制代码
      systemctl
      bash 复制代码
      %admin ALL=NOPASSWD: /usr/bin/systemctl
  • 复杂场景配置

    • 目录级授权

      :允许用户

      复制代码
      ops

      执行

      复制代码
      /usr/local/bin/

      下的所有命令:

      bash 复制代码
      ops ALL=/usr/local/bin/*
    • 排除特定命令

      :禁止

      复制代码
      dbadmin

      组执行

      复制代码
      rm

      复制代码
      mv
      bash 复制代码
      %dbadmin ALL=!/bin/rm, !/bin/mv
  • 审计与回溯

    启用 sudo 日志记录至独立文件:

    bash 复制代码
    echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers

    日志包含用户、终端、执行命令等信息,可通过grep "COMMAND=" /var/log/sudo.log分析。

二、系统引导与登录防护体系

(一)物理层与引导层安全

1. BIOS 安全基线配置
  • 引导策略锁定

    • 启动顺序 :设置为硬盘 > 光驱 > 网络 > U盘(不同品牌 BIOS 路径不同,通常在Boot菜单)。

    • 安全选项

      • Security Boot:启用防止未签名系统启动
      • Set Supervisor Password:设置管理员密码(复杂度要求:8 位以上,含字母 + 数字)
      • USB Legacy Support:禁用(防止 USB 设备启动)
2. GRUB2 安全加固
  • 加密密码生成

    使用 PBKDF2 算法生成强密码(避免明文):

    bash 复制代码
    grub2-mkpasswd-pbkdf2
    输入密码: ******
    重新输入口令: ******
    # 记录生成的哈希值
  • 配置文件修改

    /etc/grub.d/01_users中添加认证配置:

    bash 复制代码
    cat << EOF
    set superusers="admin"
    export superusers
    password pbkdf2 admin <生成的哈希值>
    EOF

    重新生成 GRUB 配置:

    bash 复制代码
    grub2-mkconfig -o /boot/grub2/grub.cfg

    启动时按E键编辑需输入密码,有效防止未授权内核参数修改(如单用户模式绕过认证)。

(二)终端登录安全策略

1. root 账户登录限制
  • 安全终端定义

    复制代码
    etc/securetty

    文件列出允许 root 登录的终端,默认包含

    复制代码
    tty1-tty6

    。禁止远程登录时,需注释所有行:

    bash 复制代码
    # 原始内容
    tty1
    tty2
    # 修改后(禁止所有本地终端登录)
    #tty1
    #tty2

    此时 root 只能通过 SSH(需配合

    复制代码
    PermitRootLogin no

    )或控制台带外管理登录。

2. 维护模式临时封锁
  • 紧急状态启用

    创建

    复制代码
    /etc/nologin

    文件后,普通用户登录时会看到:

    复制代码
    The system is undergoing maintenance. Please try later.
    bash 复制代码
    touch /etc/nologin  # 立即生效
    • 例外处理:root 用户仍可登录,用于紧急维护

    • 自动清理

      :可结合

      复制代码
      systemd

      定时器,在维护窗口结束后自动删除文件:

      bash 复制代码
      cat /etc/systemd/system/nologin-cleanup.timer
      [Unit]
      Description=Cleanup nologin file
      
      [Timer]
      OnCalendar=2025-05-19 23:00:00
      Persistent=true
      
      [Install]
      WantedBy=timers.target

三、安全检测与监控技术

(一)弱口令深度检测(John the Ripper)

1. 分布式破解架构
  • 环境准备

    • 文件提取

      :从目标服务器复制

      复制代码
      /etc/shadow

      (需 root 权限)

      bash 复制代码
      scp root@target:/etc/shadow ./shadow.txt
    • 权限处理 :确保当前用户可读取该文件(需设置chmod 600 shadow.txt

2. 进阶破解技巧
  • 混合攻击模式

    使用规则文件(run/password.lst)结合用户名字典生成变体密码:

    bash 复制代码
    ./john --rules --wordlist=usernames.txt shadow.txt

    例如:用户名jerry可能生成jerry123Jerry!等变体。

  • 差异化字典策略

    • 行业字典 :针对金融行业使用包含banktrade的专业字典

    • 自定义字典生成

      :利用

      复制代码
      crunch

      工具生成指定规则字典(如 8 位数字 + 字母):

      bash 复制代码
      crunch 8 8 -t @@@###%% -o custom.dict  # 格式:3字母+3数字+2符号
3. 结果分析与响应
  • 风险分级

    • 高风险 :纯数字 / 简单字符串(如123456admin
    • 中风险 :姓名拼音 + 数字(如zhangsan2023
    • 低风险:符合复杂度要求但被破解(需检查字典是否包含内部信息)
  • 自动化响应脚本

    破解完成后自动生成整改报告并通知管理员:

    bash 复制代码
    ./john --show shadow.txt | awk '{print "用户:"$2,"密码:"$1}' > weak_password_report.txt
    mail -s "弱口令检测报告" admin@example.com < weak_password_report.txt

(二)网络服务安全扫描(NMAP)

1. 分层扫描策略
  • 第一层:存活主机发现

    使用 ICMP 和 SYN 包混合探测,避免单一协议被防火墙过滤:

    bash 复制代码
    nmap -sP -PE -PS21,80,443 192.168.1.0/24
    • -PE:ICMP Echo 请求
    • -PS:TCP SYN 包到指定端口
  • 第二层:端口服务枚举

    对存活主机进行全端口扫描(1-65535)并识别服务版本:

    bash 复制代码
    nmap -p- -sV -O --script=vulners 192.168.1.100
    • -sV:获取服务版本信息
    • -O:操作系统指纹识别
    • --script=vulners:同步检测已知漏洞
  • 第三层:深度漏洞验证

    针对高危端口(如 445、3389)执行脚本化攻击检测:

    bash 复制代码
    nmap --script=smb-vuln-ms17-010,nmap-vulners 192.168.1.110
2. 典型攻击场景模拟
  • 隐蔽扫描(绕过防火墙)

    使用 FIN 扫描(-sF)和 Xmas 扫描(-sX)检测状态过滤型防火墙:

    bash 复制代码
    nmap -sF -p 80,443 192.168.1.50
    nmap -sX -p 1-1000 192.168.1.50
    • 开放端口对 FIN/Xmas 包无响应,关闭端口返回 RST 包
  • UDP 服务发现

    扫描 DNS(53)、SNMP(161)等 UDP 服务,使用 - sU 选项并增加超时(-T4)

    bash 复制代码
    nmap -sU -p 53,161 -T4 192.168.1.20
3. 扫描结果处置流程
  1. 高危端口(如 22、3306)开放在外网:立即配置防火墙限制源 IP
  2. 未授权服务(如 RPC 111、NetBIOS 139):关闭对应服务或迁移至内网
  3. 过时软件版本 :触发补丁升级流程(如yum update httpd
  4. 可疑端口(如非标准端口运行自定义服务) :启动入侵检测(如tcpdump抓包分析)

四、安全运营体系构建

(一)定期审计清单

检查项 频率 工具 / 命令 合规标准
非登录账户 Shell 检查 每周 grep nologin /etc/passwd 全部为/sbin/nologin
弱口令检测 每月 John the Ripper 无复杂度不足密码
开放端口核查 每季度 nmap -p- localhost 仅开放必要端口(如 22、80、443)
GRUB 密码有效性验证 半年 重启测试 GRUB 密码输入 必须输入正确密码才能修改引导参数

(二)应急响应预案要点

  1. 账户异常 :发现未知账户立即锁定(usermod -L)并检查/etc/passwd修改记录
  2. 密码泄露:强制所有用户修改密码,审计 sudo 日志排查权限滥用
  3. 端口异常 :使用lsof -i :端口号定位进程,结合chkconfig关闭自启动服务
  4. 引导篡改 :从应急启动盘(如 Ubuntu Live CD)恢复 GRUB 配置,重新生成grub.cfg

(三)安全意识培养

  • 用户教育:定期培训密码安全(如 "8 字符以上 + 三要素组合")、禁止共享账户
  • 管理员认证 :要求掌握chattrpamgrub2等核心安全工具的高级用法
  • 威胁情报 :订阅 CVE 漏洞周报,建立nmap脚本库实时更新检测规则

五、总结:构建主动防御体系

系统安全是动态防御过程,需实现:

  • 事前预防:通过账户清理、密码策略、引导保护构建准入防线
  • 事中检测:利用 John 和 NMAP 实现弱口令与端口暴露的实时监控
  • 事后响应:结合审计日志和应急流程快速处置安全事件
相关推荐
码农101号11 分钟前
Linux中容器文件操作和数据卷使用以及目录挂载
linux·运维·服务器
金色光环12 分钟前
【Modbus学习笔记】stm32实现Modbus
笔记·stm32·学习
PanZonghui29 分钟前
Centos项目部署之Nginx 的安装与卸载
linux·nginx
PanZonghui35 分钟前
Centos项目部署之安装数据库MySQL8
linux·后端·mysql
PanZonghui37 分钟前
Centos项目部署之运行SpringBoot打包后的jar文件
linux·spring boot
PanZonghui38 分钟前
Centos项目部署之Java安装与配置
java·linux
程序员弘羽1 小时前
Linux进程管理:从基础到实战
linux·运维·服务器
PanZonghui1 小时前
Centos项目部署之常用操作命令
linux
JeffersonZU1 小时前
Linux/Unix进程概念及基本操作(PID、内存布局、虚拟内存、环境变量、fork、exit、wait、exec、system)
linux·c语言·unix·gnu
zyxzyx6661 小时前
Flyway 介绍以及与 Spring Boot 集成指南
spring boot·笔记