WAF防火墙部署抵御各类攻击:从零部署WAF防火墙
为什么普通服务器也需要WAF防火墙?
很多新手站长觉得小网站不会有人攻击,等真被入侵了才后悔没做防护。WAF(Web应用防火墙) 能实时分析HTTP请求,拦截SQL注入、跨站脚本(XSS)、文件包含等常见攻击,同时还能防御CC恶意请求。
部署一个轻量级的WAF,成本极低,却能挡住90%以上的自动化攻击。
本文以宝塔面板自带的Nginx防火墙插件为例,演示完整的部署与配置流程。
如果你用的是其他面板或原生Nginx,思路也相通。
部署前必须搞清楚的几件事
- 服务器环境:Linux系统(CentOS/Ubuntu均可),已安装宝塔面板(7.x以上版本),Web服务为Nginx。
- 域名与网站:至少有一个运行中的网站,并已在宝塔面板中绑定。
- 开放端口:确认服务器安全组/防火墙允许80和443端口对外访问。
- 备份:操作前建议对网站文件和数据库做一次快照或手动备份,以防配置失误导致网站异常。
宝塔面板一键安装Nginx防火墙插件
登录宝塔面板后台,按以下步骤操作:
- 进入左侧菜单 软件商店。
- 在搜索框输入“Nginx防火墙”,找到官方插件(图标带“免费”字样)。
- 点击 安装,版本选择最新稳定版,等待安装完成(约1-2分钟)。
- 安装成功后,左侧菜单会出现 防火墙 选项。
该插件基于nginx-lua实现,不会替换原有Nginx二进制文件,安装后自动生效。
配置规则:一键开启核心防护
进入 防火墙 -> 全局配置,建议按以下方式设置:
- SQL注入防御:开启(默认已开,可勾选“严格模式”增加检测精度)
- XSS防御:开启
- 文件包含防御:开启
- 防盗链:视需求开启,可设置允许的域名白名单
- CC防御:根据网站访问量调整阈值,新手可先设为“普通防御”(如每分钟单IP 60次请求)
- URL白名单:如果某些后台接口经常被误拦,可以把对应URL添加到白名单(比如 /api/ 前缀的路径)
重点:首次开启后,先不要点“全局开启所有规则”,建议逐一打开阅读说明,避免过度拦截。
设置完成后,点击 保存 使配置生效。
验证防护效果与避坑经验
如何确认WAF正常工作?
- 查看日志:在防火墙日志中会实时记录被拦截的请求。尝试用浏览器访问
?id=1 and 1=1这类简单测试,日志中会出现“SQL注入拦截”记录。 - 响应头检查:用curl或浏览器开发者工具查看响应头,如果看到
X-WAF-Status: blocked之类的标识,说明WAF已生效(宝塔插件默认不添加此头,但日志能确认)。 - 压力测试:使用 ab 或 siege 模拟一定量的请求(注意不要超过服务器资源),观察CC防御是否触发。
常见避坑说明
- 误拦截正常请求:如果网站出现异常无法访问,先在防火墙日志中查找拦截记录。将误拦URL加入白名单或降低规则等级。
- 性能影响:开启WAF后Nginx内存占用会上升20-50MB,对于1核1G的服务器基本无感。如果发现CPU飙升,可关闭“内容审计”等重型规则。
- 规则更新:宝塔面板的Nginx防火墙插件会不定期更新规则库,建议每月检查一次更新。
完成了以上步骤,你的服务器就已经具备基础的WAF防护能力。
如果后续遇到新的攻击类型,还可以通过自定义规则进一步强化。
建议每月查阅防火墙日志,了解攻击趋势,及时调整策略。