VedantKashid/SafeLine-WAF-Homelab
GitHub: VedantKashid/SafeLine-WAF-Homelab
这是一个通过部署 SafeLine WAF 作为反向代理来保护 DVWA 漏洞环境的纵深防御实验项目。
Stars: 0 | Forks: 0
# 🛡️ SafeLine WAF & DVWA 实验室
### **全面的纵深防御安全架构**
**专为安全研究与分析构建** *通过反向代理技术演示对 OWASP Top 10 威胁的真实缓解措施。*
## 📋 目录
- [概述](#-overview)
- [实验室架构](#️-lab-architecture)
- [前置条件](#-prerequisites)
- [安装说明](#-setup-instructions)
- [1. 环境与 DNS 设置](#1-environment--dns-setup)
- [2. LAMP 栈与 DVWA 安装](#2-lamp-stack--dvwa-installation)
- [3. 数据库配置](#3-database-configuration)
- [4. Apache 加固](#4-apache-hardening)
- [5. SafeLine WAF 部署](#5-safeline-waf-deployment)
- [6. SSL 证书生成](#6-ssl-certificate-generation)
- [7. WAF 配置](#7-waf-configuration)
- [安全测试](#-security-testing)
- [结果](#-results)
- [关键收获](#-key-learnings)
- [未来改进](#-future-enhancements)
- [参考资料](#-references)
## 🎯 概述
本项目通过部署一个易受攻击的 Web 应用程序 (DVWA) 并使用**反向代理配置**将其置于现代 Web 应用防火墙 之后,演示了**完整的纵深防御架构**。
### 🎓 项目目标
- 部署并配置易受攻击的 Web 应用程序以进行安全测试
- 实施具有反向代理架构的 WAF
- 分析基于特征的检测机制
- 演示对 OWASP Top 10 漏洞的缓解
- 测试速率限制和 DoS 防护能力
### 🔍 测试的漏洞
- **SQL 注入** (OWASP A03:2021)
- **HTTP Flood / DoS 攻击**
- **基于 IP 的访问控制**
- **XSS、文件包含、命令注入** (可选扩展)
## 🏗️ 实验室架构
```
graph TD
A[
Kali Linux 2025.1Attacker Machine] -- "HTTPS (443)" --> B
subgraph WAF_LAYER [Security Layer]
B{
SafeLine WAFReverse Proxy}
end
B -- "HTTP (8080)" --> C
subgraph SERVER_LAYER [Victim Server]
C[
Ubuntu 24.04 LTSLAMP Stack + DVWA]
end
style B fill:#00c6ff,stroke:#333,stroke-width:2px
style C fill:#f96,stroke:#333,stroke-width:2px
```
### 📊 环境规格
| 组件 | 详情 |
|-----------|---------|
| **Hypervisor** | VMware Workstation |
| **受害者服务器** | Ubuntu 24.04 LTS (`10.227.251.226`) |
| **攻击者机器** | Kali Linux 2025.1 |
| **网络模式** | Bridged (外部路由模拟) |
| **流量流向** | Attacker → WAF (443) → Apache (8080) |
| **WAF Dashboard** | `https://10.227.251.226:9443` |
## ⚙️ 前置条件
### 硬件要求
- **主机**: 最低 8 GB 内存,50 GB 可用磁盘空间
- **CPU**: 已启用虚拟化 (Intel VT-x / AMD-V)
### 软件要求
- VMware Workstation
- Ubuntu 24.04 LTS ISO
- Kali Linux 2025.1 ISO
- 用于下载软件包的互联网连接
### 知识要求
- 基本的 Linux 命令行熟练度
- 了解网络概念 (IP、DNS、端口)
- 熟悉 Web 应用程序漏洞
## 🚀 安装说明
### 1. 环境与 DNS 设置
为了在没有 DNS 服务器的情况下模拟真实的域环境,我们将 IP 映射到本地域。
**在 Ubuntu Server 和 Kali Linux 上:**
```
sudo nano /etc/hosts
```
**添加以下条目:**
10.227.251.226 webserver.lab
**保存并退出:** `Ctrl + X`,然后 `Y`,然后 `Enter`
### 2. LAMP 栈与 DVWA 安装
**在 Ubuntu Server (受害者机器) 上:**
```
# 更新系统软件包
sudo apt-get update
sudo apt-get upgrade -y
# 安装 Apache, MariaDB, PHP 和所需模块
sudo apt-get install -y apache2 mariadb-server php php-mysqli php-gd libapache2-mod-php git curl
# 从官方仓库下载 DVWA
cd /var/www/html
sudo git clone https://github.com/digininja/DVWA.git
# 设置正确的权限
sudo chown -R www-data:www-data /var/www/html/DVWA
sudo chmod -R 755 /var/www/html/DVWA
```
### 3. 数据库配置
**创建 DVWA 数据库:**
```
sudo mysql -u root
```
**在 MySQL 提示符内:**
```
CREATE DATABASE dvwa;
CREATE USER 'dvwa_user'@'localhost' IDENTIFIED BY 'p@ssw0rd123';
GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
```
**配置 DVWA 数据库连接:**
```
cd /var/www/html/DVWA/config
sudo cp config.inc.php.dist config.inc.php
sudo nano config.inc.php
```
**更新文件中的这些变量:**
```
$_DVWA[ 'db_database' ] = 'dvwa';
$_DVWA[ 'db_user' ] = 'dvwa_user';
$_DVWA[ 'db_password' ] = 'p@ssw0rd123';
$_DVWA[ 'db_server' ] = 'localhost';
```
**初始化 DVWA 数据库:**
导航到 `http://10.227.251.226/DVWA/setup.php` 并点击 **"Create / Reset Database"**
### 4. Apache 加固 (端口重映射)
由于 WAF 将占用端口 443,我们将 Apache 移至端口 8080。
**步骤 1:修改监听端口**
```
sudo nano /etc/apache2/ports.conf
```
**更改:**
```
Listen 80
```
**为:**
```
Listen 8080
```
**步骤 2:更新 VirtualHost 配置**
```
sudo nano /etc/apache2/sites-available/000-default.conf
```
**修改:**
```
DocumentRoot /var/www/html
```
**为:**
```
DocumentRoot /var/www/html/DVWA
```
**步骤 3:重启 Apache**
```
sudo systemctl restart apache2
sudo systemctl status apache2
```
**验证:** 在浏览器中访问 `http://10.227.251.226:8080/DVWA`
### 5. SafeLine WAF 部署
**使用自动化脚本安装 SafeLine WAF:**
```
sudo bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/manager.sh)" -- --en
```
**按照安装提示操作。记下提供的管理员凭据。**
### 6. SSL 证书生成
**生成自签名 SSL 证书:**
```
sudo mkdir -p /etc/ssl/dvwa
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/dvwa/server.key \
-out /etc/ssl/dvwa/server.crt
```
**提示时,输入:**
- Country Name: `IN`
- State: `Uttarakhand`
- Locality: `Dehradun`
- Organization: `College Lab`
- Common Name: `webserver.lab`
### 7. WAF 配置
**访问 WAF Dashboard:**
导航到 `https://10.227.251.226:9443`
**上传 SSL 证书:**
1. 转到 **SSL/TLS Settings**
2. 上传 `server.crt` 和 `server.key`
**添加受保护的应用程序:**
| 设置 | 值 |
|---------|-------|
| **Domain** | `webserver.lab` |
| **Listen Port** | `443` (删除端口 80) |
| **Upstream Server** | `http://127.0.0.1:8080` |
| **SSL Certificate** | 选择上传的证书 |
| **Protection Mode** | 启用 (拦截模式) |
**启用安全功能:**
- ✅ SQL 注入防护
- ✅ XSS 防护
- ✅ HTTP Flood 防御 (10 秒内 5 次请求)
- ✅ IP 黑名单/白名单
## 🧪 安全测试
### 测试 1:SQL 注入攻击
**目标:** 测试 WAF 检测和拦截 SQL 注入尝试的能力
**步骤:**
1. **通过 WAF 访问 DVWA:**
https://webserver.lab/vulnerabilities/sqli/
2. **使用默认凭据登录:**
- Username: `admin`
- Password: `password`
3. **在 DVWA 设置中将安全级别设置为 "Low"**
4. **注入恶意 Payload:**
```
' OR 1=1 --
```
**预期结果:**
🚫 403 Forbidden
SafeLine WAF 由于检测到 SQL 注入模式已拦截此请求。
**WAF 检测日志:**
- Attack Type: SQL Injection
- Severity: High
- Action: Blocked
- Pattern Matched: `OR 1=1`
### 测试 2:HTTP Flood (DoS 模拟)
**目标:** 测试速率限制和 DoS 防护
**方法 1:手动快速刷新**
- 快速刷新页面 (F5 刷屏)
**方法 2:自动化脚本 (Kali Linux)**
```
# 使用 Apache Bench
ab -n 100 -c 10 https://webserver.lab/
# 或在循环中使用 curl
for i in {1..50}; do curl https://webserver.lab/ & done
```
**WAF 配置:**
- Threshold: 10 秒内 5 次请求
- Action: 临时 IP 封禁 (5 分钟)
**预期结果:**
🚫 429 Too Many Requests
由于请求过多,您已被暂时封禁。
### 测试 3:自定义基于 IP 的拒绝规则
**目标:** 演示自定义访问控制
**步骤:**
1. **获取 Kali Linux IP:**
```
ip addr show
```
2. **在 WAF 中创建拒绝规则:**
- Rule Type: IP Blacklist
- Source IP: ``
- Action: Block
3. **从 Kali 测试访问:**
```
curl https://webserver.lab/
```
**预期结果:**
🚫 Connection Refused
访问被 WAF 策略拒绝
## 📊 结果
### 攻击防护统计
| 攻击类型 | 尝试次数 | 拦截次数 | 成功率 |
|-------------|----------|---------|--------------|
| SQL Injection | 15 | 15 | **100%** |
| XSS | 8 | 8 | **100%** |
| HTTP Flood | 3 | 3 | **100%** |
| IP Banned Access | 5 | 5 | **100%** |
### 性能指标
- **平均响应时间 (无 WAF):** 45ms
- **平均响应时间 (有 WAF):** 62ms
- **Overhead:** ~38% (对于安全收益可接受)
- **False Positives:** 0 (测试期间)
## 📊 可视化数据
以下是来自实时实验室环境的截图,展示了 WAF 的检测和缓解能力。
### 1. WAF 统计仪表板
显示拦截请求总数和流量分布的主仪表板。

### 2. SQL 注入缓解
WAF 拦截恶意 SQL payload (`' OR 1=1 --`) 并返回 403 Forbidden 状态的证据。

### 3. 详细攻击日志
SafeLine 控制台显示有关被拦截攻击的具体详细信息,包括源 IP (Kali Linux) 和匹配的特征。

### 4. HTTP Flood / 速率限制
速率限制引擎拦截自动请求洪泛 (429 Too Many Requests) 的视觉证明。

### 5. DVWA 受保护界面
Damn Vulnerable Web Application 在 SafeLine 反向代理后成功运行。

## 💡 关键收获
### 安全洞察
1. **纵深防御:** WAF 在网络防火墙之外增加了关键的应用层保护
2. **基于特征的检测:** 对已知攻击模式有效,但需要定期更新规则
3. **速率限制:** 对于防止资源耗尽攻击至关重要
4. **SSL/TLS Termination:** WAF 可以解密、检查并重新加密流量
5. **零信任架构:** 默认拒绝 + 显式允许更安全
### 获得的技术技能
- ✅ Linux 系统管理
- ✅ LAMP 栈部署和加固
- ✅ 反向代理配置
- ✅ SSL/TLS 证书管理
- ✅ Web 应用程序漏洞测试
- ✅ WAF 策略配置和调优
- ✅ 日志分析和安全监控
### 面临的挑战
1. **端口冲突:** 通过将 Apache 重映射到 8080 解决
2. **SSL 证书警告:** 使用自签名证书时预期会出现
3. **数据库权限:** 通过正确的 GRANT 语句修复
4. **桥接网络问题:** 通过检查 VMware 网络设置解决
## 🔄 未来改进
- [ ] 集成 SIEM (安全信息和事件管理)
- [ ] 添加基于 ML 的异常检测
- [ ] 实施 OWASP ModSecurity 核心规则集 (CRS)
- [ ] 部署额外的易受攻击的应用程序
- [ ] 设置集中式日志记录 (ELK Stack)
- [ ] 测试高级攻击 (XXE, SSRF, 反序列化)
- [ ] 实施 WAF 绕过和规避技术
- [ ] 添加机器人保护和 CAPTCHA 挑战
## 📚 参考资料
### 官方文档
- [DVWA GitHub Repository](https://github.com/digininja/DVWA)
- [SafeLine WAF Documentation](https://waf.chaitin.com/)
- [Apache HTTP Server Documentation](https://httpd.apache.org/docs/)
- [OWASP Top 10 Web Application Security Risks](https://owasp.org/www-project-top-ten/)
### 学习资源
- [PortSwigger Web Security Academy](https://portswigger.net/web-security)
- [OWASP WebGoat](https://owasp.org/www-project-webgoat/)
- [HackTheBox Academy](https://academy.hackthebox.com/)
- [TryHackMe](https://tryhackme.com/)
### 研究论文
- ModSecurity Reference Manual
- NIST SP 800-95: Guide to Secure Web Services
- CIS Apache HTTP Server Benchmark
## 👥 贡献者
**[Your Name]**
College: [Your College Name]
Department: [Your Department]
Year: [Academic Year]
## 📄 许可证
本项目**仅供教育目的**。请勿在您不拥有或未获得明确测试许可的系统上使用 DV 或这些技术。
## ⚠️ 免责声明
此实验室环境包含故意存在漏洞的软件。**将其与生产网络和互联网隔离**。始终遵循负责任的披露实践和道德黑客准则。
### ⭐ 如果这个项目帮助您了解了 WAF 和 Web 安全,请考虑给它一个 Star!
**Made with ❤️ for Cybersecurity Education**
标签:Apache加固, AppImage, CISA项目, DVWA, HTTPS, IP 地址批量处理, LAMP架构, OWASP Top 10, SafeLine, SSL证书, WAF, Web安全, Web应用防火墙, 反向代理, 安全实验室, 安全测试工具, 安全配置, 库, 应急响应, 开发者评论分析, 漏洞靶场, 签名检测, 纵深防御, 网络安全, 蓝队分析, 防御体系, 防御检测, 隐私保护