系统安全及应用深度笔记
一、账号安全控制体系构建
(一)账户全生命周期管理
1. 冗余账户精细化治理
-
非登录账户基线核查
Linux 系统默认创建的非登录账户(如
bin
、daemon
、mail
)承担系统服务支撑功能,其登录 Shell 必须强制设置为/sbin/nologin
。通过以下命令批量核查:bashgrep "/sbin/nologin" /etc/passwd | awk -F: '{print $1}'
若发现异常账户(如 Shell 被修改为
/bin/bash
),需立即排查是否存在非法篡改。 -
动态账户清理策略
-
临时账户处理
:对于安装程序生成的临时账户(如
games lp
),若确认无用可直接删除:
bashuserdel -r games # -r选项递归删除宿主目录
-
僵尸账户锁定
:对不确定是否需保留的账户,采用
usermod -L
双向锁定(同时锁定密码和账户状态):
bashusermod -L -e "01/01/2020" zhangsan # 设置过期时间并锁定
解锁时需同时清除过期时间:
bashusermod -U -e "" zhangsan
-
-
账户配置文件免疫机制
使用
chattr
命令为账户核心文件添加不可变属性(+i
),形成写保护:bashchattr +i /etc/passwd /etc/shadow /etc/group
此时任何账户操作(包括
useradd
、passwd
)都会报错,解锁需管理员手动执行:bashchattr -i /etc/passwd /etc/shadow /etc/group
2. 密码策略三维度强化
-
时间维度:有效期梯度控制
-
全局策略
:在
/etc/login.defs
中配置默认密码策略,例如:
bas
bashPASS_MAX_DAYS 90 # 最大有效期90天 PASS_MIN_DAYS 7 # 最小修改间隔7天 PASS_WARN_AGE 14 # 过期前14天警告
-
个体策略
:针对特权账户(如
root
)设置更严格的有效期:
bashchage -M 30 -W 7 root # 30天强制修改,提前7天警告
-
-
强度维度:复杂度校验
结合 PAM 模块实现密码复杂度检查,在
/etc/pam.d/system-auth
中添加:bashpassword requisite pam_cracklib.so retry=3 minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 # 要求至少12位,包含大小写、数字
违反策略时用户将收到明确提示:
密码必须包含至少1个大写字母、1个小写字母和1个数字
。 -
行为维度:强制密码重置
-
首次登录重置
:新建用户时强制下次登录修改密码:
bashuseradd -m jerry && chage -d 0 jerry
-
批量重置
:系统升级后要求所有用户重新设置密码:
bashawk -F: '$3>=1000' /etc/passwd | cut -d: -f1 | xargs -I {} chage -d 0 {}
-
3. 会话安全深度加固
-
历史命令防泄露
-
记录量限制
:全局限制所有用户历史命令记录为 500 条(默认 1000 条):
bashecho "HISTSIZE=500" >> /etc/profile && source /etc/profile
-
敏感操作净化
:在用户
.bashrc
中添加过滤规则,自动清除包含密码的命令:
bashexport HISTIGNORE='*password*:*passwd*'
-
-
智能超时机制
-
动态超时
:根据会话活跃度自动调整超时时间(需结合脚本实现),基础配置为:
bashecho "export TMOUT=300" >> /etc/profile # 5分钟无操作自动注销
-
例外场景
:在执行长时间任务(如编译代码)时,临时禁用超时:
bashtrap '' SIGALRM # 忽略超时信号
-
(二)权限管理矩阵模型
1. su 命令的最小权限控制
-
wheel 组特权隔离
-
用户加入
:将授权用户添加到
wheel
组(GID=10):
bashgpasswd -a tsengyia wheel
-
配置激活
:编辑
/etc/pam.d/su
,取消注释以下行以启用 wheel 组验证:
bashauth required pam_wheel.so use_uid # 仅wheel组成员可使用su
-
审计追踪
:su 操作记录存储在
/var/log/secure
,可通过以下命令过滤:
bashgrep "su:" /var/log/secure | grep "session opened"
-
2. sudo 的 RBAC 模型实践
-
细粒度授权示例
-
单命令授权
:允许用户
jerry
在本地执行
ifconfig
(需输入自身密码):
bashvisudo -c <<EOF jerry localhost=/sbin/ifconfig EOF
-
无密码授权
:允许
admin
组用户无密码执行
systemctl
bash%admin ALL=NOPASSWD: /usr/bin/systemctl
-
-
复杂场景配置
-
目录级授权
:允许用户
ops
执行
/usr/local/bin/
下的所有命令:
bashops ALL=/usr/local/bin/*
-
排除特定命令
:禁止
dbadmin
组执行
rm
和
mv
bash%dbadmin ALL=!/bin/rm, !/bin/mv
-
-
审计与回溯
启用 sudo 日志记录至独立文件:
bashecho "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 算法生成强密码(避免明文):
bashgrub2-mkpasswd-pbkdf2 输入密码: ****** 重新输入口令: ****** # 记录生成的哈希值
-
配置文件修改
在
/etc/grub.d/01_users
中添加认证配置:bashcat << EOF set superusers="admin" export superusers password pbkdf2 admin <生成的哈希值> EOF
重新生成 GRUB 配置:
bashgrub2-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.
bashtouch /etc/nologin # 立即生效
-
例外处理:root 用户仍可登录,用于紧急维护
-
自动清理
:可结合
systemd
定时器,在维护窗口结束后自动删除文件:
bashcat /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 权限)
bashscp root@target:/etc/shadow ./shadow.txt
-
权限处理 :确保当前用户可读取该文件(需设置
chmod 600 shadow.txt
)
-
2. 进阶破解技巧
-
混合攻击模式
使用规则文件(
run/password.lst
)结合用户名字典生成变体密码:bash./john --rules --wordlist=usernames.txt shadow.txt
例如:用户名
jerry
可能生成jerry123
、Jerry!
等变体。 -
差异化字典策略
-
行业字典 :针对金融行业使用包含
bank
、trade
的专业字典 -
自定义字典生成
:利用
crunch
工具生成指定规则字典(如 8 位数字 + 字母):
bashcrunch 8 8 -t @@@###%% -o custom.dict # 格式:3字母+3数字+2符号
-
3. 结果分析与响应
-
风险分级
- 高风险 :纯数字 / 简单字符串(如
123456
、admin
) - 中风险 :姓名拼音 + 数字(如
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 包混合探测,避免单一协议被防火墙过滤:
bashnmap -sP -PE -PS21,80,443 192.168.1.0/24
-PE
:ICMP Echo 请求-PS
:TCP SYN 包到指定端口
-
第二层:端口服务枚举
对存活主机进行全端口扫描(1-65535)并识别服务版本:
bashnmap -p- -sV -O --script=vulners 192.168.1.100
-sV
:获取服务版本信息-O
:操作系统指纹识别--script=vulners
:同步检测已知漏洞
-
第三层:深度漏洞验证
针对高危端口(如 445、3389)执行脚本化攻击检测:
bashnmap --script=smb-vuln-ms17-010,nmap-vulners 192.168.1.110
2. 典型攻击场景模拟
-
隐蔽扫描(绕过防火墙)
使用 FIN 扫描(-sF)和 Xmas 扫描(-sX)检测状态过滤型防火墙:
bashnmap -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)
bashnmap -sU -p 53,161 -T4 192.168.1.20
3. 扫描结果处置流程
- 高危端口(如 22、3306)开放在外网:立即配置防火墙限制源 IP
- 未授权服务(如 RPC 111、NetBIOS 139):关闭对应服务或迁移至内网
- 过时软件版本 :触发补丁升级流程(如
yum update httpd
) - 可疑端口(如非标准端口运行自定义服务) :启动入侵检测(如
tcpdump
抓包分析)
四、安全运营体系构建
(一)定期审计清单
检查项 | 频率 | 工具 / 命令 | 合规标准 |
---|---|---|---|
非登录账户 Shell 检查 | 每周 | grep nologin /etc/passwd |
全部为/sbin/nologin |
弱口令检测 | 每月 | John the Ripper | 无复杂度不足密码 |
开放端口核查 | 每季度 | nmap -p- localhost |
仅开放必要端口(如 22、80、443) |
GRUB 密码有效性验证 | 半年 | 重启测试 GRUB 密码输入 | 必须输入正确密码才能修改引导参数 |
(二)应急响应预案要点
- 账户异常 :发现未知账户立即锁定(
usermod -L
)并检查/etc/passwd
修改记录 - 密码泄露:强制所有用户修改密码,审计 sudo 日志排查权限滥用
- 端口异常 :使用
lsof -i :端口号
定位进程,结合chkconfig
关闭自启动服务 - 引导篡改 :从应急启动盘(如 Ubuntu Live CD)恢复 GRUB 配置,重新生成
grub.cfg
(三)安全意识培养
- 用户教育:定期培训密码安全(如 "8 字符以上 + 三要素组合")、禁止共享账户
- 管理员认证 :要求掌握
chattr
、pam
、grub2
等核心安全工具的高级用法 - 威胁情报 :订阅 CVE 漏洞周报,建立
nmap
脚本库实时更新检测规则
五、总结:构建主动防御体系
系统安全是动态防御过程,需实现:
- 事前预防:通过账户清理、密码策略、引导保护构建准入防线
- 事中检测:利用 John 和 NMAP 实现弱口令与端口暴露的实时监控
- 事后响应:结合审计日志和应急流程快速处置安全事件