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, 偏差过滤, 后渗透, 实战演练, 情报分析, 故障排查, 无线安全, 服务器管理, 案例研究, 流量嗅探, 生产环境模拟, 磁盘管理, 系统管理, 网络安全审计, 网络诊断, 运维, 防火墙