Nginx 作为一款高性能的开源 Web 服务器软件,在企业项目中被广泛应用。在当今的网络环境下,服务器面临着来自全球各地的访问,其中不乏恶意用户和恶意程序的攻击。因此,防火墙及白名单设置对于服务器的安全至关重要。
防火墙可以限制 IP 访问,只允许需要的 IP 访问。通过设置防火墙,可以有效防止未经授权的外部访问,保护服务器免受恶意攻击。例如,可以使用 iptables、ufw 等工具进行设置,限制特定 IP 地址或 IP 段的访问。同时,为 Nginx 服务器配置 SSL/TLS 证书,加强数据传输加密,采用 HTTPS 访问,有效防止数据被窃听和篡改。
白名单则是一种更为严格的访问控制机制,可以限制特定的用户或请求能顺利访问服务器。通过设置白名单,可以确保只有特定的 IP 地址、域名或用户能够访问服务器,阻止潜在的风险。例如,可以使用 Nginx 的 Geo 模块来设置白名单,只允许中国和美国的访客访问网站,其他国家的访客将被拒绝访问。
据统计,目前互联网无时无刻都有各种扫描、探测、攻击着服务器。这些攻击者不会轻易放过每一个机会,按照 IP 段一路扫描,只要是云服务器的公网 IP 提供对外访问,就避不开探测和被攻击。因此,下载宝塔面板 - nginx 防火墙插件就有了安全保障,能有效防止 sql 注入 /xss/ 一句话木马等常见渗透攻击。
总之,Nginx 防火墙及白名单设置对于服务器的安全至关重要。通过设置防火墙和白名单,可以有效保护服务器免受恶意攻击,确保特定用户或请求能顺利访问服务器,为企业项目的稳定运行提供有力保障。
二、白名单设置方法
(一)定义黑名单或白名单
在 Nginx 的 conf 目录下建立 blockip.conf 文件,是定义黑名单或白名单的一种方法。格式如下:屏蔽单个 ip 访问可以使用deny IP;允许单个 ip 访问用allow IP;屏蔽所有 ip 访问为deny all;允许所有 ip 访问是allow all。如果想实现除了几个 IP 外其他全部拒绝的效果,可以在 blockip.conf 中这样写:先允许特定的 IP,如allow
1.1.1.1、allow
1.1.1.2,然后再使用deny all。在 nginx.conf 中添加配置时,可以将include blocksip.conf放到http、server、location、limit_except语句块中,需注意相对路径。例如,若要实现所有网站屏蔽 IP 的方法,把include blocksip.conf放到http {}语句块;若要单独屏蔽某个网站的 IP,则把include blocksip.conf放到该网站对应的server{}语句块。
(二)黑白名单作用范围
白名单和黑名单能在http{}、server{}、location{}下使用,功能默认是关闭的。配置格式为配置关键字on/off,其中配置关键字有white_list与black_list,分别用来表示白名单与黑名单。例如:white_list white1 on表示白名单white1在整个http{}中都开启;black_list black1 on表示黑名单black1在整个http{}中都开启。在server{}和location{}中使用方式类似。
(三)配置接口说明
http 配置接口包括以下内容:
- 查看黑白名单定义情况可以通过http://xxx/sec_config,返回结果包含版本信息、代码以及黑白名单的配置信息。
- 查看特定zone_name为white的list_path中的具体内容可以使用http://xxx/sec_config?zone_name=white。
- 向特定zone_name中增加 IP,如向zone_name为white中增加192.168.141.23可以使用http://xxx/sec_config?zone_name=white&add_item=192.168.141.23。
- 在特定zone_name中删除 IP,如在zone_name为white中删除192.168.141.23可以使用http://xxx/sec_config?zone_name=white&delete_item=192.168.141.23。查看配置方法还可以使用http://xxx/sec_config?for_each。
(四)动态黑名单设置
要使用动态黑名单功能,必须对ngx_http_limit_req_module.c进行patch。在ngx_http_limit_req_module.c中增加#include <white_black_list.h>,并修改代码找到特定位置,在其下面增加ngx_black_add_item_interface(r,1)。配备关键字为dyn_black,格式为dyn_black $zone_name time,比如dyn_black black 60表示禁止访问 60 秒,60 秒后自动解除。注意必须要配置black_list。
(五)安装相关模块
安装ngx_lua_waf防火墙的各种依赖及模块的步骤如下:
- 下载相关模块:
-
- cd /usr/src/,然后依次下载luajit2、lua-cjson、ngx_devel_kit、lua-nginx-module等模块。
- 编译安装luajit:
-
- cd luajit-2.1,make -j2 && make install,echo ‘/usr/local/lib’ >> /etc/ld.so.conf.d/local.conf,ldconfig。
- 编译安装lua-cjson:
-
- cd /usr/src/lua-cjson,export LUA_INCLUDE_DIR=/usr/local/include/luajit-2.1,make -j2 && make install。
- 设置LUAJIT环境变量:
-
- export LUAJIT_LIB=/usr/local/lib,export LUAJIT_INC=/usr/local/include/luajit-2.1。
- 编译nginx时加上两个模块:–add-module=../lua-nginx-module、–add-module=../ngx_devel_kit。
- 下载配置ngx_lua_waf:
-
- cat >/usr/local/nginx/conf/waf.conf << EOF,lua_shared_dict limit20m;,lua_package_path "/usr/local/nginx/conf/waf/?.lua";,init_by_lua_file"/usr/local/nginx/conf/waf/init.lua";,access_by_lua_file"/usr/local/nginx/conf/waf/access.lua";,EOF。
-
- mkdir -p /usr/local/nginx/logs/waf,chown www-data:www-data /usr/local/nginx/logs/waf。
(六)测试验证
启动nginx并访问特定网址以查看防火墙提示。例如访问
http://192.168.31.91/?a=a.sql,就可以看到防火墙提示。通过这种方式可以验证防火墙是否正常工作。
三、总结与展望
Nginx 免费防火墙的 User-Agent 白名单设置在服务器安全防护中起着至关重要的作用。通过对 User-Agent 的筛选,可以有效阻止潜在的恶意请求,为服务器的稳定运行提供有力保障。
User-Agent 白名单的设置具有很强的实用性。例如,在某些特定的业务场景下,只允许特定类型的客户端访问服务器,可以通过设置 User-Agent 白名单来实现。同时,结合其他的安全设置,如 IP 白名单、URL 白名单等,可以构建一个更加严密的安全防护体系。
在实际应用中,读者可以根据自己的需求进行灵活配置。根据不同的业务场景和安全要求,选择合适的白名单规则,确保服务器的安全。同时,随着网络安全形势的不断变化,我们也需要不断地更新和完善白名单设置,以适应新的安全挑战。
总之,Nginx 免费防火墙的 User-Agent 白名单设置是服务器安全防护的重要手段之一。通过合理的设置和灵活的配置,可以为服务器的安全提供有力保障,为企业的业务发展保驾护航。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。