humaameer786/security-automation-learning
GitHub: humaameer786/security-automation-learning
一个分阶段的网络安全自动化学习仓库,通过逐步构建日志解析、撞库检测、威胁情报查询和容器化部署等组件,培养安全分析的实用自动化技能。
Stars: 0 | Forks: 0
# 安全自动化学习之旅
本仓库记录了我逐步构建完整的**安全自动化流水线** (Security Automation Pipeline) 的学习之旅。
我没有从包含多种不熟悉技术的大型项目开始,而是选择分别构建每一个组件。这使我能够理解其中的逻辑,独立测试每个部分,记录所学内容,并最终将这些组件整合为一个完整的网络安全作品集项目。
## 项目目标
本仓库的目标是培养自动化常见安全分析任务所需的实用技能。
练习将涵盖:
- 解析身份验证日志
- 处理时间戳和时间窗口
- 检测登录失败模式
- 检测撞库 (Credential-stuffing) 攻击
- 关联来自多个日志源的事件
- 使用 Pandas 进行安全数据分析
- 将事件存储在 SQLite 和 PostgreSQL 中
- 通过威胁情报 API 充实可疑 IP 地址的信息
- 安全管理 API 密钥和其他机密
- 使用 Docker 对应用程序进行容器化
- 使用 Docker Compose 运行多个服务
- 测试、调试和记录安全工具
## 计划学习路径
### 01 — 安全日志解析器
构建一个 Python 命令行工具,用于读取身份验证日志并显示:
- 有效记录总数
- 登录成功次数
- 登录失败次数
- 唯一用户名
- 唯一源 IP 地址
- 无效或格式错误的记录
涉及概念:
- Python 虚拟环境
- Python 模块
- 使用 `python -m` 运行代码
- CSV 处理
- `datetime` 解析
- 输入验证
- 错误处理
**状态:** 进行中
### 02 — 纯 Python 登录失败检测器
使用 Python 字典、列表、集合以及时间窗口逻辑创建一个检测器。
计划检测规则:
涉及概念:
- 字典和集合
- 按时间戳对事件进行排序
- `datetime` 和 `timedelta`
- 按源 IP 对事件进行分组
- 基于阈值的检测
- 基础单元测试
**状态:** 未开始
### 03 — Pandas 撞库检测器
使用 Pandas 重构检测逻辑。
涉及概念:
- DataFrame
- `pandas.to_datetime()`
- 布尔过滤
- `groupby()`
- `nunique()`
- `resample()`
- 聚合
- 将检测结果导出为 CSV
Pandas 检测器将与纯 Python 版本进行对比,以确认两者产生相同的结果。
**状态:** 未开始
### 04 — VPN 与 Web 应用日志关联器
创建模拟的 VPN 身份验证日志和 Web 应用访问日志,然后关联两个来源中的相关活动。
该工具将调查:
- 是否有相同的 IP 针对了这两个系统
- 两个日志中是否出现了相同的用户名
- 反复的登录失败之后是否跟随了成功的登录
- 事件是否发生在同一时间窗口内
涉及概念:
- 日志规范化
- 多源分析
- Pandas 的 `merge()`
- 时间戳比较
- 事件关联
**状态:** 未开始
### 05 — SQLite 安全事件存储
将身份验证事件和检测结果存储在 SQLite 中。
计划工作流:
```
Synthetic authentication logs
↓
SQLite database
↓
Pandas analysis
↓
Detections
↓
SQLite database
```
涉及概念:
- 创建数据库和表
- 参数化 SQL 查询
- 从 Python 插入记录
- `pandas.read_sql()`
- DataFrame 的 `to_sql()`
- 查询可疑活动
- 数据持久化
**状态:** 未开始
### 06 — 威胁情报 IP 充实工具
构建一个命令行工具,利用威胁情报 API 检查可疑的 IP 地址。
计划功能:
- 验证 IPv4 和 IPv6 地址
- 从环境变量中读取 API 密钥
- 发送经过身份验证的 API 请求
- 解析 JSON 响应
- 显示有用的信誉信息
- 处理超时和 API 错误
- 遵守 API 速率限制
- 缓存之前检查过的 IP 地址
错误处理将包括:
- 缺少 API 密钥
- 无效的 IP 地址
- 网络超时
- HTTP `401`
- HTTP `404`
- HTTP `429`
- 意外的 API 响应
**状态:** 未开始
### 07 — PostgreSQL 和 JSONB
将威胁情报的充实结果存储在 PostgreSQL 中。
涉及概念:
- 将 Python 连接到 PostgreSQL
- 数据库连接字符串
- SQLAlchemy 或 `psycopg2`
- 事务
- PostgreSQL 的 `JSONB`
- 存储原始 API 响应
- 查询之前的充实结果
- 重复处理和 upsert
**状态:** 未开始
### 08 — Docker 化安全工具
将一个 Python 安全工具打包到 Docker 容器中。
涉及概念:
- Docker 镜像和容器
- Dockerfile
- 基础镜像
- 镜像层
- 环境变量
- 卷挂载
- `.dockerignore`
- 以非 root 用户身份运行容器
**状态:** 未开始
### 09 — Docker Compose 应用程序和数据库
使用 Docker Compose 将 Python 应用程序和 PostgreSQL 作为独立的服务运行。
计划架构:
```
Python security application
↓
PostgreSQL database
```
涉及概念:
- 多容器应用程序
- Docker Compose 服务
- 容器网络
- 持久化卷
- 环境变量注入
- 数据库健康检查
- 服务启动顺序
- 容器日志和重启测试
**状态:** 未开始
## 最终作品集项目
在完成学习练习后,我将把这些组件整合到一个单独的项目中:
# 安全自动化流水线
最终的流水线将:
1. 生成模拟的 VPN 和 Web 应用身份验证日志。
2. 存储和处理安全事件。
3. 检测撞库模式。
4. 关联多个日志源中的可疑活动。
5. 利用威胁情报 API 充实可疑 IP 地址的信息。
6. 将充实结果存储在 PostgreSQL 中。
7. 通过一个 Python 协调器运行完整的工作流。
8. 使用 Docker Compose 打包应用程序和数据库。
完成的流水线将作为独立的 GitHub 仓库发布。
## 文档记录方法
每个练习都将包含自己的 README,涵盖:
- 目标
- 练习的概念
- 检测逻辑
- 设置说明
- 用法
- 输入示例
- 输出示例
- 我的收获
- 遇到的问题及修复方法
- 局限性
- 未来可能的改进
本仓库旨在展示最终结果以及其背后的学习过程。
## 安全与隐私
本仓库中使用的所有日志和安全事件将是:
- 合成的
- 虚构的
- 专门为学习而创建的
- 不含真实凭证
- 不含个人信息
- 不含机密业务数据
在适当的地方将使用保留的文档化 IP 范围:
```
192.0.2.0/24
198.51.100.0/24
203.0.113.0/24
```
本仓库不涉及未经授权的访问、真实的凭证收集,或未经许可测试外部系统。
## 机密管理
API 密钥、密码、token 和数据库凭证永远不会被提交到 GitHub。
仓库的 `.gitignore` 应包含:
```
.env
.venv/
venv/
__pycache__/
*.pyc
*.db
.pytest_cache/
.vscode/
.idea/
```
可能会包含一个安全的示例文件:
```
.env.example
```
示例:
```
VT_API_KEY=replace_with_your_api_key
DATABASE_URL=replace_with_your_database_connection
```
## 当前进度
| 阶段 | 练习 | 状态 |
|---:|---|---|
| 01 | 安全日志解析器 | 进行中 |
| 02 | 纯 Python 登录失败检测器 | 未开始 |
| 03 | Pandas 撞库检测器 | 未开始 |
| 04 | VPN 与 Web 应用日志关联器 | 未开始 |
| 05 | SQLite 安全事件存储 | 未开始 |
| 06 | 威胁情报 IP 充实工具 | 未开始 |
| 07 | PostgreSQL 和 JSONB | 未开始 |
| 08 | Docker 化安全工具 | 未开始 |
| 09 | Docker Compose 应用程序和数据库 | 未开始 |
此表格将随着项目的进展而更新。
## 正在培养的技能
- Python
- 安全自动化
- 身份验证日志分析
- 撞库检测
- 事件关联
- Pandas
- SQL
- SQLite
- PostgreSQL
- JSON 和 JSONB
- REST API
- 威胁情报
- 机密管理
- Docker
- Docker Compose
- Git 和 GitHub
- 测试和调试
- 技术文档
## 免责声明
本仓库包含使用合成数据和受控环境进行的防御性网络安全练习。
其仅供合法和教育用途。未经系统所有者的明确授权,不应使用此处记录的工具和技术来访问、测试、监控或干扰任何系统。
## 作者
**Huma Ameer**
标签:Docker, Python, 威胁情报, 安全防御评估, 开发者工具, 撞库检测, 无后门, 测试用例, 版权保护, 请求拦截, 逆向工具