系统安全及应用深度笔记

系统安全及应用深度笔记

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

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

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 "弱口令检测报告" [email protected] < 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 实现弱口令与端口暴露的实时监控
  • 事后响应:结合审计日志和应急流程快速处置安全事件
相关推荐
湖北春晖信息3 分钟前
工业自动化实践:机器人上料系统如何优化生产流程?
运维·机器人·自动化
非自律懒癌患者25 分钟前
ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案
linux·tcp/ip·ubuntu
Xam_d_LM26 分钟前
【Linux】如何清除 Ubuntu 留下的 EFI 分区,Windows 磁盘管理器右键删除卷是灰色
linux·运维·windows·ubuntu·重装系统·磁盘管理器
lil44x_32 分钟前
嵌入式学习笔记DAY23(树,哈希表)
笔记·学习
自由鬼42 分钟前
WebSphere Application Server(WAS)8.5.5教程第五讲
运维·服务器·程序人生·中间件·was·ibm·websphere
霸王蟹42 分钟前
常见面试题:Webpack的构建流程简单说一下。
前端·笔记·学习·webpack·node.js·vue
黄暄1 小时前
Linux项目部署全攻略:从环境搭建到前后端部署实战
java·linux·运维·服务器·前端·后端·持续部署
AORO_BEIDOU1 小时前
遨游科普:三防平板是什么?应用在什么场景?
网络·安全·电脑·信息与通信
珊瑚里的鱼1 小时前
【滑动窗口】LeetCode 1004题解 | 最大连续1的个数 Ⅲ
开发语言·c++·笔记·算法·leetcode
独行soc1 小时前
2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)
linux·数据库·安全·web安全·面试·职场和发展·渗透测试