安装地址git clone https://gitee.com/yyongs/waf.gitC-Proxy-WAF 网络安全实验报告完整版一、实验概述1.1 实验目的本次实验基于纯 C 语言、epoll-ET 高并发模型手动开发一款轻量级反向代理 WAFWeb 应用防火墙。通过从零实现 HTTP 代理、报文解析、攻击特征检测、日志审计、CC 防护、IP 黑白名单、蜜罐封禁、热重载、守护进程等功能深入理解 Web 攻击原理、WAF 防护机制、Linux 高并发网络编程架构。同时结合 Apache2 搭建后端 Web 服务实现 客户端 → C-Proxy-WAF → Apache2 业务服务 的完整防护链路完成 Web 安全防护实验验证。1.2 项目特性基于 Linux epoll-ET 边缘触发非阻塞 IO高并发、高性能完整 HTTP1.1 代理链路GET/POST/Cookie 全解析SQL 注入、XSS、路径遍历攻击检测外部规则文件热加载无需重新编译可开关告警/阻断双模式waf_block单IP CC 并发防护、报文长度防溢出IP 白名单、IP 临时蜜罐封禁系统完整日志落盘访问日志、攻击日志、原始报文日志Systemd 守护进程、后台运行、SIGHUP 热重载、SIGUSR1 状态统计优雅退出、内存防泄漏、SIGPIPE 容错、超时回收 FD二、整体实验架构用户访问链路客户端浏览器/攻击脚本 → C-Proxy-WAF(80端口) → Apache2 后端服务(8000端口)WAF 作为反向代理网关对所有 HTTP 流量进行解析、检测、日志记录、拦截防护保护后端 Apache2 服务不直接暴露公网。三、环境部署3.1 实验环境操作系统Ubuntu 20.04 / 22.04编译环境GCC、Make后端服务Apache2开发语言标准 CPOSIX 无第三方库3.2 Apache2 后端部署安装并配置后端 Web 服务用于 WAF 代理转发sudo apt updatesudo apt install apache2 -ysudo systemctl start apache2sudo systemctl enable apache2修改 Apache 监听端口为 8000避免与 WAF 80 端口冲突sudo vim /etc/apache2/ports.conf修改 Listen 80 - Listen 8000sudo vim /etc/apache2/sites-available/000-default.conf修改 VirtualHost *:80 - VirtualHost *:8000sudo systemctl restart apache2验证访问 127.0.0.1:8000 出现 Apache 默认页面。3.3 C-Proxy-WAF 源码部署克隆项目并编译git clone https://gitee.com/yyongs/waf.gitcd wafmkdir -p logs rulestouch rules/sqli.rule rules/xss.rule rules/path.rule rules/ip_black.listtouch rules/ip_white.list rules/honeypot.pathmake3.4 Systemd 生产部署守护进程新建 systemd 服务文件sudo vim /etc/systemd/system/c-proxy-waf.service写入内容[Unit]DescriptionC-Proxy-WAF Epoll Web Application FirewallAfternetwork.target[Service]TypesimpleWorkingDirectory/home/bj/wafExecStart/home/bj/waf/c-proxy-wafExecReload/bin/kill -HUP $MAINPIDRestarton-failureRestartSec3LimitNOFILE8192[Install]WantedBymulti-user.target启动并开机自启sudo systemctl daemon-reloadsudo systemctl start c-proxy-wafsudo systemctl enable c-proxy-waf常用运维命令热重载配置/规则kill -HUP $(pidof c-proxy-waf)查看运行统计kill -USR1 $(pidof c-proxy-waf)查看日志journalctl -u c-proxy-waf -f四、完整配置文件说明proxy.conf以下为最终优化版全量配置含全部参数释义C-Proxy-WAF 完整配置文件注释# 开头支持 key value 空格格式-------- 基础代理配置 --------listen_port 80backend_ip 127.0.0.1backend_port 8000-------- WAF 总开关与工作模式 --------waf_enable0 完全关闭WAF纯透明代理waf_enable1 开启全部防护规则waf_enable 1waf_block0 仅告警、全部放行调试模式waf_block1 告警 403 阻断攻击流量waf_block 0-------- 日志系统配置 --------log_access_path logs/access.loglog_waf_path logs/waf_alert.log-------- IO 缓冲区配置 --------recv_buf_size 4096-------- 连接超时防护防挂死、FD泄露 --------conn_idle_timeout 60backend_connect_timeout 10-------- 外部规则文件路径 --------sqli_rule_file rules/sqli.rulexss_rule_file rules/xss.rulepath_rule_file rules/path.ruleip_black_file rules/ip_black.list-------- P5 健壮性 防CC配置 --------max_http_request_line 1024max_http_header_total 16384max_post_body 16384cc_enable 1cc_max_conn_per_ip 50-------- P6 运维守护进程配置 --------daemon_enable 0pidfile_path ./c-proxy-waf.pid-------- P7 高级扩展配置 --------ip_white_file rules/ip_white.listhoneypot_file rules/honeypot.pathhoneypot_ban_seconds 300raw_log_enable 0raw_log_path logs/raw_request.log4.1 参数详细释义listen_portWAF 对外监听端口默认 80 替代 Apache 直接对外backend_ip / backend_port后端 Apache2 真实业务地址waf_enable总开关关闭后所有防护失效仅做代理waf_block工作模式切换0仅日志告警1拦截403log_access_path正常访问日志log_waf_path攻击告警日志conn_idle_timeout空闲连接超时回收防御 Slowlorismax_http_xxx报文长度限制防 OOM、畸形攻击包cc_max_conn_per_ip单IP最大并发防御简易CC泛洪daemon_enable后台守护进程运行ip_white_file白名单IP绕过所有检测与CC限制honeypot_ban_seconds访问蜜罐路径后临时封禁时长raw_log_enable原始 HTTP 报文dump用于攻击样本分析五、核心功能测试结果5.1 Web 攻击检测测试可识别并日志告警开启阻断可拦截SQL 注入?idunion selectXSS 跨站路径遍历…/etc/passwdCookie 携带恶意载荷POST 表单恶意内容5.2 CC 泛洪防御单IP并发连接超过阈值自动告警/拦截防御慢速攻击、短连接洪水。5.3 蜜罐封禁扫描器、爬虫访问诱饵路径后自动临时封禁IP有效防御探测扫描。5.4 热重载能力修改规则/配置后 kill -HUP 即时生效不重启、不中断业务。六、安全边界分析重点6.1 可防御攻击有效能力明文特征 SQL 注入、XSS、路径遍历攻击常规 Web 扫描、目录爆破、主动探测行为Slowloris 慢速连接耗尽攻击单IP高频 CC 并发泛洪恶意 IP 黑名单拦截、蜜罐主动封禁畸形超大 HTTP 报文、异常请求防崩溃6.2 无法防御/能力有限场景真实安全边界编码变形绕过双重URL编码、注释拆分、大小写变形可绕过无语法解析仅字符串匹配分布式CC多IP低并发请求无法防御无速率限流、滑动窗口TCP层SYN洪水用户态程序无法拦截内核SYN半连接攻击劫持类攻击全部无效无HTTPS无法防御中间人劫持、DNS劫持、Cookie会话劫持无特征正常业务洪水正常请求高频访问无法识别6.3 项目定位总结本项目属于教学实验型 WAF可用于学习网络编程、HTTP 解析、Web 攻防原理不适合直接公网高强度生产防护与商业 WAF雷池、阿里云WAF存在明显差距。七、项目优缺点总结7.1 优点纯手写 epoll-ETIO 模型标准、高性能完整 HTTP 代理链路可真实防护后端 Apache 服务规则与代码分离支持热重载工程化程度高日志完整、可审计、可溯源攻击行为自带 CC 防护、超时回收、内存安全、优雅退出支持白名单、黑名单、蜜罐封禁多层防护7.2 不足仅字符串匹配无语义解析容易被变形绕过无 HTTPS无法防御中间人劫持无高级限流、无正则匹配、无智能风控八、实验总结本次实验成功基于 C 语言 epoll 模型开发完成一款功能完整的轻量 Web 应用防火墙。通过搭建 Apache2 后端服务实现了反向代理架构、HTTP 流量全解析、攻击检测、日志审计、抗扫描、抗泛洪、IP 管控、系统守护部署全套能力。实验清晰验证了 WAF 的防护原理、工作模式与安全边界深刻理解了 Web 攻击绕过思路、用户态网络程序的优缺点完成了网络安全高阶编程与 Web 防护综合实训。