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.1
Attacker Machine] -- "HTTPS (443)" --> B subgraph WAF_LAYER [Security Layer] B{SafeLine WAF
Reverse Proxy} end B -- "HTTP (8080)" --> C subgraph SERVER_LAYER [Victim Server] C[Ubuntu 24.04 LTS
LAMP 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 统计仪表板 显示拦截请求总数和流量分布的主仪表板。 ![WAF Statistics](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2306c9336b155443.png) ### 2. SQL 注入缓解 WAF 拦截恶意 SQL payload (`' OR 1=1 --`) 并返回 403 Forbidden 状态的证据。 ![SQL Injection Blocked](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/a42574f74c155444.png) ### 3. 详细攻击日志 SafeLine 控制台显示有关被拦截攻击的具体详细信息,包括源 IP (Kali Linux) 和匹配的特征。 ![Attack Logs](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fd72ef6ace155445.png) ### 4. HTTP Flood / 速率限制 速率限制引擎拦截自动请求洪泛 (429 Too Many Requests) 的视觉证明。 ![HTTP Flood Blocked](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2b3308d205155447.png) ### 5. DVWA 受保护界面 Damn Vulnerable Web Application 在 SafeLine 反向代理后成功运行。 ![DVWA Home Page](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/5a39a2eabb155448.png) ## 💡 关键收获 ### 安全洞察 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应用防火墙, 反向代理, 安全实验室, 安全测试工具, 安全配置, 库, 应急响应, 开发者评论分析, 漏洞靶场, 签名检测, 纵深防御, 网络安全, 蓝队分析, 防御体系, 防御检测, 隐私保护