在Nginx服务器上部署7G防火墙

| 9 月 28, 2023 | Alstra技术博客

在Web安全领域,拥有一个强大的防火墙对于保护您的网站免受恶意攻击至关重要。7G防火墙是一款轻量级但功能强大的开源Web应用程序防火墙(WAF),可以帮助保护您的Nginx服务器。

在本教程中,我们将逐步指导您如何在Nginx服务器上实施7G防火墙,一步一步进行操作。在开始之前,请注意本教程假定您对Nginx及其配置文件有基本的了解。

注意:7G防火墙是由Jeff Starr开发的开源项目。有关更多信息,包括许可证和免责声明,请访问7G防火墙主页

规则集分析

7G防火墙旨在防止各种常见的基于Web的攻击,如SQL注入、跨站脚本(XSS)和远程文件包含(RFI)。

这里我们来大致解释配置文件中的部分规则及其重要性:

  • "~*([a-z0-9]{2000,})" 1; 针对过长的查询字符串。如果查询字符串包含超过2000个字母数字字符,则被视为可疑并被阻止。这有助于防止缓冲区溢出攻击。
  • "~*(/|%2f)(:|%3a)(/|%2f)" 2; 阻止包含类似/:/模式或其URL编码等价物的查询字符串。这种模式通常用于目录遍历攻击。
  • "~*(ckfinder|fckeditor|fullclick)" 5; 阻止包含已知易受攻击的文件管理器脚本名称的请求。这些脚本可能被利用来上传和执行恶意文件。
  • "~*((.*)header:|(.*)set-cookie:(.*)=)" 7; 通过阻止尝试设置HTTP头的请求,有助于防止HTTP响应分裂和HTTP头注入攻击。
  • "~*(localhost|127(\.|%2e)0(\.|%2e)0(\.|%2e)1)" 8; 阻止包含对本地主机IP地址的引用的任何查询字符串。这些可能是利用SSRF(服务器端请求伪造)漏洞的尝试。
  • "~*(benchmark|char|exec|fopen|function|html)(.*)(\(|%28)(.*)(\)|%29)" 18; 阻止尝试执行某些经常用于代码注入攻击的函数的请求。
  • "~*(e|%65|%45)(v|%76|%56)(a|%61|%31)(l|%6c|%4c)(.*)(\(|%28)(.*)(\)|%29)" 20; 针对eval函数,该函数经常在恶意PHP代码中使用。它匹配函数名及其URL编码的等价物。
  • "~*(<|%3c)(.*)(s|%73|%53)(c|%63|%43)(r|%72|%52)(i|%69|%49)(p|%70|%50)(t|%74|%54)(.*)(>|%3e)" 25; 旨在阻止包含<script>标签或其URL编码等价物的任何查询字符串,防止潜在的跨站脚本(XSS)攻击。
  • "~*(;|<|>|\'|\"|\)|%0a|%0d|%22|%27|%3c|%3e|%00)(.*)(/\*|alter|base64|benchmark|cast|concat|convert|create|encode|declare|delete|drop|insert|md5|request|script|select|set|union|update)" 36; 阻止包含SQL或脚本注入尝试的任何请求。它匹配各种有害的SQL关键字和特殊字符,这些字符通常用于此类攻击。

安装步骤

步骤1:添加文件:

首先,下载7G Nginx防火墙ZIP文件并解压缩。您将找到两个文件:7g-firewall.conf7g.conf。将这些文件复制到服务器上的/nginx/conf.d/目录中。

步骤2:包含防火墙规则:

打开主要的Nginx配置文件,通常位于/nginx/nginx.conf,并在http块内添加以下行:

include /etc/nginx/conf.d/7g-firewall.conf;

确保文件路径与服务器上的目录结构匹配。

步骤3:包含条件逻辑:

接下来,打开本地/站点配置文件,通常位于/nginx/sites-enabled/example.com,并在server块内添加以下行:

include /etc/nginx/conf.d/7g.conf;

再次验证文件路径是否适用于服务器的目录结构。

测试您的Nginx配置是否有任何错误:

nginx -t

步骤4:重新启动服务器:

在进行这些更改后,您需要重新启动Nginx服务器以使新配置生效。

sudo systemctl reload nginx

步骤5:测试:

有了包含在Nginx配置中的7G防火墙文件,并且服务器已重新启动,现在是进行彻底测试的时候了。检查您的网站是否正常运作,并验证7G防火墙是否正确阻止了恶意请求。您可以使用像nginxdev.com这样的工具来发出测试请求,并比较服务器响应以查看各种7G查询的结果。

替代安装(Nginx 1.18+)

如果您使用的是Nginx版本1.18或更高版本,则有一种替代的安装方法可以简化过程。按照以下步骤操作:

  1. 7g-firewall.conf添加到/etc/nginx/conf.d
  2. 7g.conf添加到/etc/nginx/snippets
  3. 在您的配置文件的server指令中,添加以下行:include /etc/nginx/snippets/7g.conf;

这种替代方法利用了Nginx 1.18引入的snippets目录功能。

结论

在Nginx服务器上实施7G防火墙是增强网站安全性的有效方法。请务必在实施后进行全面测试,以确保一切正常运作。

准备为您的企业展开线上宏图了吗?

Alstra团队每天都在帮助安大略省和加拿大其他地区的企业实现他们的数字转型计划。让我们帮助您的企业完成更广阔的蓝图吧!

您也可以预约15分钟免费咨询,获赠项目启动手册,和项目专家在线面对面直接讨论您的想法