NetworkSecurityLabs/snort3-admin-login-detection
GitHub: NetworkSecurityLabs/snort3-admin-login-detection
该项目演示了如何在 Ubuntu 上使用 Snort3 自定义规则实时检测针对 Apache 管理页面的暴力破解登录攻击。
Stars: 0 | Forks: 0
# 🛡️ 实时管理员登录攻击检测器 — Ubuntu 上的 Snort3 + Apache
针对 Web 管理面板的暴力破解登录攻击在实际环境中 constantly 发生。本项目展示了如何实时捕获它们——就在有人猛击你登录页面的那一刻。
一个受密码保护的 Apache Web 服务器运行在 Ubuntu 上,并由 Snort3 监控网络接口。来自 Kali Linux 攻击机的失败登录尝试会触发自定义的 Snort3 规则,并以 fast 和 full 日志格式生成警报。
📖 **Dev.to 上的完整演练:** [我如何在 Ubuntu 上使用 Snort3 和 Apache 构建了一个实时管理员登录攻击检测器](https://dev.to/almahmudkhalif/lab-task-14-how-i-built-a-real-time-admin-login-attack-detector-using-snort3-and-apache-on-ubuntu-45l9)
## 🖥️ 环境
| 机器 | 操作系统 | 角色 |
|---|---|---|
| Ubuntu (服务器) | Ubuntu 24.x | Web 服务器 + Snort3 IDS |
| Kali Linux (攻击者) | Kali 2025/2026 | 攻击模拟 |
| 网络 | Host-only / NAT | VirtualBox |
## ⚙️ 步骤 1 — 安装并验证 Apache2
```
sudo apt update
sudo apt install apache2 -y
sudo apt install apache2-utils -y
sudo systemctl status apache2
```


## 📄 步骤 2 — 创建管理员 Web 页面
```
sudo mkdir /var/www/html/admin
sudo nano /var/www/html/admin/index.html
```
```
Welcome to Admin Page
```
```
sudo rm /var/www/html/index.html
```



## 🔐 步骤 3 — 为 admin 目录设置密码保护
```
sudo htpasswd -c /etc/apache2/.htpasswd adminuser
sudo chmod -R 755 /var/www/html/admin
```

## 🔧 步骤 4 — 配置 Apache Virtual Host
```
sudo nano /etc/apache2/sites-available/000-default.conf
```
在 `` 中添加:
```
AuthType Basic
AuthName "Restricted Admin Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
```

```
sudo a2enmod headers
sudo systemctl restart apache2
sudo systemctl status apache2
```

## 🌐 步骤 5 — 确认管理页面已上线
```
ip a
```
从 Kali 访问 `http:///admin` —— 应该会弹出一个 Basic Auth 登录窗口。


## 📝 步骤 6 — 编写自定义 Snort3 检测规则
```
sudo nano /usr/local/etc/rules/local-rules/local.rules
```
```
alert tcp any any -> any 80 (
msg:"Unauthorized Access to admin page";
content:"Authorization";
sid:1000011;
rev:2;
)
```
| 规则组件 | 用途 |
|---|---|
| `alert tcp any any -> any 80` | 监控所有发往端口 80 的 TCP 流量 |
| `content:"Authorization"` | 匹配 HTTP Basic Auth header |
| `msg` | 日志中显示的警报标签 |
| `sid:1000011` | 唯一的规则标识符 |


## ✅ 步骤 7 — 验证 Snort3 配置
```
snort -c /usr/local/etc/snort/snort.lua -T
```
预期输出:
```
Snort successfully validated the configuration (with 0 warnings).
```


## 🚀 步骤 8 — 以 Alert Fast 模式运行 Snort3
```
sudo snort -A alert_fast -i enp0s3 -c /usr/local/etc/snort/snort.lua
```


## 💥 步骤 9 — 模拟攻击
从 Kali 访问 `http:///admin` 并输入错误的凭据 4-5 次。观察 Snort 终端实时触发警报。

## 📋 步骤 10 — Full 日志格式
```
sudo snort -A full -i enp0s3 -c /usr/local/etc/snort/snort.lua
```
Full 格式包含 TCP flags、序列号、TTL 和窗口大小 —— 非常适合进行取证分析。


## 🧪 验证清单
- Apache 运行中:`sudo systemctl status apache2` → `active (running)`
- 管理页面受保护:`http:///admin` 提示登录
- Snort 检测:登录尝试后警报显示 `"Unauthorized Access to admin page"`
- 配置有效:`snort -c /usr/local/etc/snort/snort.lua -T` → 0 个警告
- Full 日志工作正常:`-A full` 标志为每个警报输出数据包级别的详细信息
## ⚠️ 常见错误
| 错误 | 发生的情况 | 修复方法 |
|---|---|---|
| 未运行 `sudo a2enmod headers` | Apache 无法重启 | 运行它,然后重启 Apache |
| `-i` 标志中指定的网络接口错误 | Snort 捕获不到任何内容 | 使用 `ip a` 确认 |
| 规则 content 关键字不匹配 | 没有触发任何警报 | 使用 Wireshark 验证 header 字符串 |
| `sid` 重复 | Snort 配置失败 | 使用 10000000+ 范围内的 SID |
| 浏览器缓存保留了 auth cookie | 登录跳过了提示 | 使用无痕模式 |
| 跳过 `snort -T` | 在生产环境中出现静默规则错误 | 在正式运行前始终进行验证 |
## 🌐 与我联系
[](https://dev.to/almahmudkhalif)
[](https://www.linkedin.com/in/khalif-al-mahmud)
标签:Apache, Snort3, 免杀技术, 安全实验环境, 暴力破解检测