游客发表
宝塔网站防火墙(Nginx免费防火墙)装完之后,宝塔第一件事不是网站去调规则,而是防火先看日志。我见过太多人装完插件就扔那儿不管,宝塔等网站被打了才想起来还有个防火墙。网站这跟买了灭火器不检查压力表一个道理。防火
这个防火墙本质上是宝塔嵌在Nginx里的一个Lua模块,工作在OpenResty层面。网站跟Cloudflare那种DNS引流清洗不一样,防火它直接在服务器本地拦截请求,宝塔省去了回源那一段网络延迟。网站但代价是防火——它吃CPU。我之前在一台2核4G的宝塔机器上跑了个日IP五千左右的小站,开启防火墙后Nginx的网站CPU占用从3%跳到12%左右。不算离谱,防火但如果你机器本身就吃力,得掂量一下。
安装路径在宝塔面板的「软件商店」里搜“防火墙”就能找到。注意别装成Apache版的,虽然名字都差不多。装完后面板左侧会多出一个「Nginx防火墙」菜单,点进去先别急着开全局拦截。
我一般建议先跑两天观察模式。所谓观察模式就是只记录不拦截,让防火墙把正常流量特征摸清楚。你会看到日志里一堆误报——比如WordPress后台的某些AJAX请求被标成“疑似CC攻击”,又比如某些CDN回源IP被当成恶意节点。这些都是正常的,放两天再手动加白名单。
规则配置这块,CC防御的阈值别设太低。默认好像是60秒内同IP访问120次触发,对普通博客够用,但如果你站上有大量图片或者API接口,这个值得往上调。我有个做外贸站的朋友,他把阈值设成60秒80次,结果Googlebot直接被拦了——爬虫抓取频率比真人高得多。后来他把搜索引擎的User-Agent全加进白名单才解决。
IP黑名单和地区拦截是两个实用功能。前者适合对付已知的恶意IP段,后者可以屏蔽某些攻击高发地区。但地区拦截有个坑:它依赖IP库的准确性。我遇到过把香港IP识别成美国的情况,导致正常用户被误伤。所以如果你的用户群体集中在某个地区,建议用白名单模式而不是黑名单模式——只放行目标地区,其他全拦。
说到Web应用防火墙规则,宝塔内置的那套规则库更新还算勤快,但别指望它能挡住所有0day。SQL注入和XSS的常见payload它能识别,可一旦攻击者用编码变形或者分块传输,绕过率不低。我的做法是把它当第一道筛子,真正敏感的操作——比如后台登录、支付回调——再单独加一层自定义规则。比如后台登录路径改成随机字符串,然后在防火墙里设一条规则:非该路径的POST请求到wp-login.php一律阻断。这招比什么验证码都管用。
日志分析是个体力活。宝塔的日志界面能看最近请求,但数据量大时翻起来很痛苦。我习惯把日志导出来用grep过滤,或者直接看Nginx的error.log。有一次我发现某个IP每隔三秒请求一次xmlrpc.php,明显是爆破。直接在防火墙里拉黑整个C段,世界清净了。
最后说个容易被忽略的点:防火墙和CDN同时用时,记得在Nginx配置里加上real_ip模块。不然所有请求的来源IP都是CDN节点,CC防御直接失效——它会把CDN节点当成攻击者封掉,然后你的网站对所有用户都打不开。这个坑我踩过两次,每次都是网站突然503,排查半天才想起来是real_ip没配。
宝塔防火墙不是银弹,它更像一把趁手的螺丝刀。用好了能挡掉八成以上的自动化扫描和低级攻击,但遇到针对性强的渗透,还是得靠代码层面的安全审计和服务器层面的隔离。别把所有希望寄托在一个插件上。
友情链接