1.
目标与前置准备
目的说明:在阿里云ECS上自主部署WAF,拦截常见Web攻击并保留可审计日志。
前置条件:1) 拥有阿里云账号与ECS实例;2) 已开通安全组/网络配置;3) 熟悉Linux基础与Nginx/系统命令。
2.
方案选择(推荐两种常见方案)
方案A:ModSecurity v3 + Nginx(最佳实践,兼容OWASP CRS)。
方案B:OpenResty + lua-waf(轻量、性能好,规则可定制)。
3.
工具列表与理由
必要工具:gcc、cmake、git、libpcre、libxml2等编译依赖。
推荐软件:ModSecurity(核心规则引擎)、ModSecurity-nginx连接器、OWASP CRS规则、Fail2ban(配合封IP)、Logrotate。
4.
环境准备与安全组设置
步骤:1) 登录阿里云控制台,找到ECS实例;2) 在“安全组”中放行80/443端口,临时放行SSH(22);3) 确认公网IP与域名解析指向ECS。
5.
安装依赖(以CentOS/Ubuntu为例)
CentOS示例:yum install -y epel-release gcc gcc-c++ make cmake git pcre pcre-devel libxml2 libxml2-devel openssl-devel zlib-devel。
Ubuntu示例:apt update && apt install -y build-essential git cmake libpcre3 libpcre3-dev libxml2 libxml2-dev libssl-dev zlib1g-dev。
6.
编译安装ModSecurity v3
步骤:git clone https://github.com/SpiderLabs/ModSecurity && cd ModSecurity;git checkout v3/master;git submodule init && git submodule update;sh build.sh && ./configure && make && make install。
检查:/usr/local/modsecurity/lib下是否有库文件。
7.
编译安装ModSecurity-nginx连接器与Nginx
步骤:1) 获取nginx源码或使用openresty源码;2) 下载modsecurity-nginx connector仓库;3) ./configure --add-module=/path/to/connector --with-...;4) make && make install。
注意保留原有Nginx配置备份。
8.
部署OWASP CRS与基本规则
步骤:git clone https://github.com/coreruleset/coreruleset /etc/modsecurity/crs;复制crs-setup.conf.example为crs-setup.conf;在modsecurity.conf中include规则目录。
调试模式:先将ModSecurity设置为检测模式(SecRuleEngine DetectionOnly)观察误报。
9.
Nginx配置示例要点
在http或server段加入:modsecurity on; modsecurity_rules_file /etc/nginx/modsec/main.conf;。
确保access_log与modsec_audit_log路径可写,并配置logrotate定期清理。
10.
测试与验证
本地测试:使用curl发送SQL注入/XSS特征请求例如curl -v "http://yourdomain/?id=1' OR '1'='1";
观察:ModSecurity检测日志(audit.log)有拦截记录并在Nginx返回403或自定义响应。
11.
上线前的调整与性能优化
配置步骤:1) 从DetectionOnly切换到On;2) 根据误报调整规则(rule exclusions);3) 开启缓存、gzip、keepalive等Nginx性能选项。
建议:在高并发场景考虑使用反向代理或SLB分流。
12.
运维监控与规则更新
监控项:WAF拦截率、CPU/内存、错误日志增长。
维护操作:定期更新OWASP CRS、备份规则与配置、建立误报反馈流程。
13.
常用辅助工具与推荐
工具:Fail2ban(配合nginx日志封禁暴力IP)、GoAccess/ELK/Graylog(日志可视化)、Docker镜像(快速部署测试)。
如需低成本可管理方案,评估阿里云原生WAF服务避免运维开销。
14.
问:自建WAF与阿里云WAF服务相比,哪种更适合运维团队?
答:如果团队追求可控性、定制化且有运维经验,自建(ModSecurity/OpenResty)适合;若希望降低维护成本、享受供应商防护规则与自动更新,阿里云WAF更省心。
15.
问:如何降低自建WAF的误报率?
答:先设为检测模式观察日志,基于真实流量逐条排查误报,使用白名单/排除规则、对业务参数做严格匹配,并建立回退/告警机制。
16.
问:部署后如何做灾备与日志审计?
答:将audit日志异步上传到对象存储或日志服务(如阿里云Log Service),定期备份配置与规则,使用ELK/日志服务做告警与长期审计。