Maizestream818/sistema-ids-institucional
GitHub: Maizestream818/sistema-ids-institucional
一个基于 Python 的轻量级机构网络入侵检测系统,通过白名单控制、DNS 日志记录、威胁情报比对和邮件告警实现防御性网络监控。
Stars: 0 | Forks: 0
# IDS Institucional
**IDS Institucional** 是一个防御性的入侵检测系统(IDS),旨在实时监控和分析本地网络流量。其模块化设计允许它拦截未经授权的连接,记录域名解析,并降低与连接到具有恶意声誉的 IP 地址相关的风险(Threat Intelligence)。
该系统注重隐私和合法性,仅收集网络元数据(MAC、IP、域名、协议),而不检查加密通信的内容(payloads)。
## 支持的运行环境
- **操作系统:** Ubuntu 24.04 LTS Desktop(或兼容的 Linux 服务器)。
- **环境:** 物理机构网络或配置为桥接模式(Bridged)的虚拟机,用于网络拦截。
## 系统要求
- Python 3.10 或更高版本。
- `pip` 和 `venv`。
- 系统库:`tcpdump`、`whois`、`net-tools`。
- socket 级别的数据包捕获权限(cap_net_raw)。
- SMTP 服务器(用于紧急警报通知)。
## 安装与部署
1. **安装系统依赖项:**
sudo apt update
sudo apt install -y python3 python3-pip python3-venv tcpdump whois net-tools
2. **配置 Python 虚拟环境:**
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3. **授予网络捕获权限:**
为了允许系统拦截数据包,而无需以 `root` 用户身份运行整个解释器:
sudo setcap cap_net_raw,cap_net_admin=eip $(readlink -f $(which python3))
## 环境配置
IDS 需要一个环境变量文件才能安全运行,而不会暴露凭据。
1. 导航到 `config/` 目录并创建 `.env` 文件:
cp config/.env.example config/.env
2. 使用发送 SMTP 凭据和接收管理员邮箱编辑 `config/.env`:
SMTP_SERVER=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=alertas.ids@tudominio.com
SMTP_PASSWORD=tu_app_password_segura
ADMIN_EMAIL=administrador.seguridad@tudominio.com
VIRUSTOTAL_API_KEY=tu_api_key_de_virustotal_opcional
## 规则管理
IDS 的访问策略通过 `config/` 文件夹中的 CSV 文件进行控制。
- **白名单(第 2 层和第 3 层访问控制):** `config/whitelist.csv`
包含授权在机构网络中运行的设备的 IP 地址和 MAC 地址。
- **Threat Intelligence(黑名单):** `config/blacklist_ips.csv`
存储已知具有恶意行为(Botnets、Malware、Phishing)的外部 IP 记录。
## 操作指南与模块验证
要启动系统,请激活环境并运行主模块:
```
source venv/bin/activate
sudo python3 src/main.py
```
系统将显示一个交互式菜单。以下说明了管理员如何验证各个模块的运行情况:
### 1. 白名单模块
系统会检查每个 ARP 和 IP 数据包。如果不在 `whitelist.csv` 中的设备发出流量:
- **验证:** 将未注册的设备连接到网络(或临时修改您设备的 MAC)。
- **结果:** IDS 将在控制台中记录违规行为,并**立即向管理员发送一封电子邮件**,警告该未经授权的设备。
### 2. 站点监控模块(DNS)
IDS 实时记录 DNS 域名解析,以维护网络流量的日志。
- **验证:** 启动 IDS(选项 1),并在另一个终端中执行 ping 或查询某个域名(例如:`ping portal.azure.com`)。
- **结果:** 该域名将实时显示在控制台中,并永久存储在 `logs/site_report.log` 中。(可以通过菜单中的选项 3 查看)。
### 3. 危险 IP 与自动化取证模块(Abuse/Whois)
系统将出站 IP 连接与其 Threat Intelligence 数据库进行比较。
- **验证:** 将测试 IP 添加到 `blacklist_ips.csv` 中,并尝试从网络上的设备使用 `curl` 或 `ping` 连接到该 IP。
- **结果:** IDS 会拦截流量,自动对目标 IP 执行取证分析(通过 Whois 命令提取组织、国家和 *Abuse* 联系方式),并在配置后通过 VirusTotal 对其进行评估。系统会自动通过电子邮件触发**“紧急警报”**,包含风险类型和准备好用于报告事件的数据。
### 4. 手动 VirusTotal 查询
- **验证:** 使用主菜单中的选项 6 输入公共 IP。
- **结果:** IDS 将通过 API 连接到 VirusTotal,以返回该主机在多个防病毒引擎下的声誉。
## 日志与审计(Logs)
系统检测到的所有异常活动都将保存到 `logs/` 目录中,以供后续的取证审计。每条记录都包含时间戳:
- `unauthorized_devices.log`:第 2 层和第 3 层违规(MAC/IP)。
- `site_report.log`:DNS 查询历史记录。
- `threats_detected.log`:针对黑名单的连接尝试。
- `alerts.log`:常规操作和 SMTP 发送日志。
标签:Python, 入侵检测系统, 威胁情报, 安全数据湖, 开发者工具, 无后门, 网络安全, 逆向工具, 防御绕过, 隐私保护