henryaddo/linux-incident-response-
GitHub: henryaddo/linux-incident-response-
一套工单式 Linux 生产故障排查实战演练项目,通过结构化调查流程培养系统管理员的应急响应能力。
Stars: 0 | Forks: 0
# Linux 应急响应
一个专注于**生产环境级故障调查**的实战 Linux 故障排查项目。
本仓库演示了 Linux 工程师如何调查和响应常见的运维故障,例如:
- 服务中断
- 磁盘已满
- 网络连接问题
- SELinux 访问拒绝
- 启动/引导故障
每个故障都模拟了真实的支持场景,并包含:
- 故障描述
- 调查步骤
- 解决步骤
- 验证命令
- 可选诊断脚本
- 结果截图
本项目的目标是演示系统管理员和 Linux 支持工程师使用的**真实世界 Linux 故障排查工作流**。
# 故障类别
| 故障 | 描述 |
|--------|-------------|
| 服务中断 | 诊断服务或应用程序不可用的原因 |
| 磁盘已满 | 调查存储耗尽问题 |
| 网络中断 | 诊断连接或路由故障 |
| SELinux 拒绝 | 调查由安全上下文导致的访问拒绝 |
| 启动失败 | 诊断引导或挂载故障 |
# 仓库结构
```
linux-incident-response-toolkit/
scripts/
service-triage.sh
disk-investigate.sh
network-triage.sh
selinux-check.sh
startup-check.sh
incidents/
001-service-down/
INCIDENT.md
INVESTIGATION.md
RESOLUTION.md
screenshots/
002-disk-full/
INCIDENT.md
INVESTIGATION.md
RESOLUTION.md
screenshots/
003-network-outage/
INCIDENT.md
INVESTIGATION.md
RESOLUTION.md
screenshots/
004-selinux-access-denied/
INCIDENT.md
INVESTIGATION.md
RESOLUTION.md
screenshots/
005-startup-failure/
INCIDENT.md
INVESTIGATION.md
RESOLUTION.md
screenshots/
docs/
troubleshooting-workflow.md
command-cheatsheet.md
```
# 故障 001 — 服务中断
## INCIDENT.md
用户报告托管在服务器上的 Web 应用程序无法访问。
该服务应在端口 **80** 上运行,但用户无法连接。
请调查并恢复该服务。
## INVESTIGATION.md
执行的步骤:
检查服务状态:
```
systemctl status httpd
```
检查日志:
```
journalctl -xeu httpd
```
验证监听端口:
```
ss -tulpn | grep :80
```
检查防火墙规则:
```
firewall-cmd --list-all
```
验证 SELinux 上下文:
```
ls -Z /var/www/html
```
## RESOLUTION.md
启动并启用服务:
```
systemctl start httpd
systemctl enable httpd
```
允许 HTTP 流量通过防火墙:
```
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
```
验证服务可访问性:
```
curl http://localhost
```
# 故障 002 — 磁盘已满
## INCIDENT.md
系统报告 **"No space left on device"**(设备上没有剩余空间)。
调查磁盘耗尽的原因并识别大文件。
## INVESTIGATION.md
检查文件系统使用情况:
```
df -h
```
检查 inode 使用情况:
```
df -i
```
检查块设备:
```
lsblk
```
查找大文件:
```
du -ahx / | sort -rh | head -20
```
## RESOLUTION.md
清理不必要的文件或日志。
示例:
```
journalctl --vacuum-time=7d
```
验证磁盘空间:
```
df -h
```
# 故障 003 — 网络中断
## INCIDENT.md
用户报告在更改网络配置后服务器无法访问。
## INVESTIGATION.md
检查网络接口:
```
ip -br a
```
检查路由:
```
ip r
```
验证 NetworkManager 状态:
```
nmcli device status
```
测试连接性:
```
ping -c 4 8.8.8.8
```
检查 DNS 解析:
```
getent hosts google.com
```
## RESOLUTION.md
重启网络连接:
```
nmcli connection down eth0
nmcli connection up eth0
```
验证连接性:
```
ping -c 4 8.8.8.8
```
# 故障 004 — SELinux 访问拒绝
## INCIDENT.md
即使普通文件权限看起来正确,服务仍无法访问所需的文件。
## INVESTIGATION.md
检查 SELinux 模式:
```
getenforce
```
检查文件上下文:
```
ls -Z /var/www/html
```
搜索审计日志:
```
ausearch -m AVC -ts recent
```
## RESOLUTION.md
恢复正确的上下文:
```
restorecon -Rv /var/www/html
```
验证:
```
ls -Z /var/www/html
```
# 故障 005 — 启动失败
## INCIDENT.md
系统在启动后报告服务故障。
请调查启动日志和配置。
## INVESTIGATION.md
检查失败的服务:
```
systemctl --failed
```
检查启动日志:
```
journalctl -xb
```
检查文件系统配置:
```
cat /etc/fstab
```
测试挂载:
```
mount -a
```
## RESOLUTION.md
修复配置错误并重启受影响的服务。
验证系统状态:
```
systemctl --failed
```
# 故障排查工作流
典型调查工作流:
1. 识别问题
2. 检查系统状态
3. 查看日志
4. 采取纠正措施
5. 验证结果
# Linux 故障排查工具包
应急响应期间常用的命令:
```
systemctl
journalctl
ss
ip
nmcli
lsblk
df
mount
top
ps
firewall-cmd
semanage
restorecon
```
# 关于
由 **Henry Addo** 创建
本项目演示了在真实世界系统管理环境中使用的实用 Linux 故障排查和故障调查工作流。
标签:Awesome, HTTP工具, IT运维, journalctl, Mr. Robot, RHCSA, SELinux, Shell脚本, Socks5代理, SRE, systemctl, 偏差过滤, 后渗透, 实战演练, 情报分析, 故障排查, 无线安全, 服务器管理, 案例研究, 流量嗅探, 生产环境模拟, 磁盘管理, 系统管理, 网络安全审计, 网络诊断, 运维, 防火墙