您的位置: 新闻资讯 > 行业动态 > 正文

Nginx 防火墙:构筑网站安全的坚固防线(图文)


来源:mozhe 2024-11-21

Nginx 作为高性能 Web 服务器,在互联网领域中占据着重要地位。它不仅能够高效地处理大量的并发连接,还具备强大的反向代理、负载均衡等功能。而其中的防火墙功能,更是在保护网站安全方面发挥着至关重要的作用。
随着网络攻击手段的日益多样化,网站面临着各种安全威胁,如 SQL 注入、跨站脚本攻击(XSS)、文件包含攻击等。Nginx 的防火墙功能就像是一道坚固的城墙,为网站抵御这些恶意攻击。
例如,Nginx 的 HTTP 防火墙是一个开源模块,可帮助 Web 应用程序免受一些最常见的 Web 攻击。它能追踪访问者的 HTTP 请求,对恶意请求进行拦截、过滤和防御。通过配置诸如 client_header_buffer_size、client_body_buffer_size、client_max_body_size 等参数,可以指定客户端 HTTP 头缓冲区、正文数据缓冲区以及允许的最大长度,有效地防止恶意请求通过修改 HTTP 头或发送超大请求来攻击网站。
而 WAF(Web 应用防火墙)作为专为 Web 应用程序而设计的防火墙,运行在 Web 服务器和应用程序之间,拦截恶意请求、攻击载荷和有害流量。Nginx 的 WAF 模块是一个开源应用程序,可以通过自定义规则进行设置,如 blacklist_by_ip 可以引用黑名单,阻止来自恶意 IP 地址的 Web 请求;block_sql_injection 能检测和阻止 SQL 注入攻击;block_xss 可检测和阻止跨站脚本攻击等。
总之,Nginx 的防火墙功能为网站的安全提供了有力的保障,在当今复杂的网络环境中,其重要性不言而喻。

二、Nginx 防火墙配置方法


(一)安装准备


在安装 Nginx 防火墙之前,我们需要进行一些环境准备工作。首先是安装 gcc 环境,可使用命令 yum install gcc-c++进行安装。接着,需要安装一些第三方开发包。例如,PCRE (Perl Compatible Regular Expressions),nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库。可以通过 yum install -y pcre pcre-devel安装 pcre-devel,它是使用 pcre 开发的一个二次开发库,nginx 也需要此库。zlib 库提供了多种压缩和解压缩的方式,nginx 使用 zlib 对 http 包的内容进行 gzip,安装命令为 yum install -y zlib zlib-devel。openssl 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并且提供了丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux 安装 openssl 库,使用 yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel进行安装。

(二)编译安装


进行 Nginx 的编译安装,首先从官网下载相应的包,如 wget http://nginx.org/download/nginx-1.20.1.tar.gz,然后解压 tar -zxvf nginx-1.20.1.tar.gz。进入到解压后的目录,进行编译参数的配置,使用命令 ./configure \\--prefix=/usr/local/nginx \\--pid-path=/var/local/nginx/nginx.pid \\--lock-path=/var/local/nginx/nginx.lock \\--error-log-path=/var/local/nginx/error.log \\--http-log-path=/var/local/nginx/access.log \\--with-http_gzip_static_module \\--http-client-body-temp-path=/var/local/nginx/client \\--http-proxy-temp-path=/var/local/nginx/proxy \\--http-fastcgi-temp-path=/var/local/nginx/fastcgi \\--http-uwsgi-temp-path=/var/local/nginx/uwsgi \\--http-scgi-temp-path=/var/local/nginx/scgi。可以使用 nginx -V来查看编译参数。最后进行编译安装,执行 make && make install。

(三)防火墙配置

  1. 关闭 firewall 的方法:关闭防火墙可以使用以下命令。首先停止 firewall,systemctl stop firewalld.service;然后禁止 firewall 开机启动,systemctl disable firewalld.service。
  1. 添加防火墙端口的方法:如果要添加防火墙端口,可以使用 firewall-cmd --zone=public --add-port=端口号/tcp --permanent命令,例如添加 nginx 默认端口 80,即 firewall-cmd --zone=public --add-port=80/tcp --permanent。如果修改了 nginx 端口,添加端口的时候要注意对应调整。添加端口后,需要重载防火墙,使用命令 firewall-cmd --reload。

三、Nginx 防火墙的作用


(一)抵御常见攻击


Nginx 防火墙在抵御常见攻击方面表现出色。它能够有效防止 SQL 注入攻击,通过对用户输入的数据进行严格的过滤和验证,防止恶意的 SQL 语句被插入到数据库查询中。例如,当攻击者试图在输入表单中插入恶意的 SQL 代码时,Nginx 防火墙可以识别并拦截这些请求,保护数据库的安全。
对于跨站脚本攻击(XSS),Nginx 防火墙同样能够发挥重要作用。它可以检测和过滤包含恶意脚本的请求,防止这些脚本在用户浏览器中执行,从而保护用户的隐私和安全。
此外,Nginx 防火墙还能防止一句话木马等常见渗透攻击。一句话木马是一种常见的 Web 安全漏洞,攻击者可以通过上传一句话木马文件来获取服务器的控制权。Nginx 防火墙可以通过限制文件上传类型、大小等方式,防止一句话木马文件被上传到服务器。
据统计,使用 Nginx 防火墙可以将常见渗透攻击的成功率降低 90% 以上,为网站的安全提供了有力的保障。

(二)安全防护功能


Nginx 的 HTTP 防火墙和 WAF 具有丰富的可配置选项,为网站提供了强大的安全防护功能。
HTTP 防火墙可以通过配置参数如 client_header_buffer_size、client_body_buffer_size 和 client_max_body_size 等,来控制客户端请求的大小和格式。这有助于防止攻击者通过发送超大请求或恶意修改 HTTP 头来攻击网站。
WAF 则可以拦截恶意请求,保护 Web 应用程序的特定漏洞。例如,blacklist_by_ip 功能可以引用黑名单,阻止来自恶意 IP 地址的 Web 请求。block_sql_injection 能够检测和阻止 SQL 注入攻击,保护数据库的安全。block_xss 可检测和阻止跨站脚本攻击,防止用户受到恶意脚本的攻击。block_brute_force 可以检测和阻止暴力攻击,保护用户账号的安全。block_file_inclusion 能够检测和阻止文件包含攻击,防止攻击者通过文件包含漏洞获取服务器的敏感信息。
这些可配置选项可以根据 Web 应用程序的特定需求进行定制,为网站提供更加精准的安全防护。

(三)保障 HTTPS 安全通信


Nginx 防火墙从多个方面保障了 HTTPS 安全通信。
在 TLS/SSL 加密方面,Nginx 防火墙提供了多种 TLS/SSL 协议和加密算法的支持,如 TLS 1.0、1.1、1.2 和 1.3 以及 AES、RSA、ECDHE 等。这使得网站能够根据实际需求进行灵活配置,提高 HTTPS 通信的安全性。通过加密技术,能够防止数据在传输过程中被窃听、篡改、伪造等安全风险。
HTTPS 证书在保障安全通信中也至关重要。Nginx 防火墙支持多种 HTTPS 证书的安装和配置,如自签名证书、CA 证书、EV SSL 证书等。同时,还提供了 OCSP Stapling 功能,能够有效地验证证书状态,防止中间人攻击等安全风险。
HTTP/2 协议的出现极大地提升了 HTTPS 通信的速度和性能。Nginx 防火墙提供了对 HTTP/2 协议的充分支持,可以开启 Server Push 和流量控制等功能,提高 HTTPS 通信的效率和稳定性。
SSL 代理功能能够对 HTTPS 通信中的数据进行深度检测和防御。Nginx 防火墙提供了强大的 SSL 代理功能,如 SSL 握手延迟、缓冲区过滤、字词过滤等功能,从多个维度全面保障 HTTPS 通信的安全性。

四、Nginx 防火墙在特定场景的应用

(一)在公众号上的应用


安装 BT 宝塔 Nginx 防火墙后,可能会出现微信公众号验证登陆失败的情况。原因在于 Nginx 防火墙 — 全局设置内开启增强模式 — 人机验证时,在访问时会做一个跳转验证,导致微信公众号接口回调时直接被拦截。
解决方法如下:首先登录到微信公众号平台,找到基本设置,将服务器 URL 地址截取,从域名地址后面开始截取。然后登录面板,进入软件商店 —Nginx 防火墙 — 全局设置 —URL 白名单设置内增加截取的 URL 地址。
而在微擎使用 Nginx 防火墙后,可能会出现 token 验证失败的问题。配置服务器时提示 token 验证失败,关闭防火墙后则正常。许多用户反映找不到拦截记录,即使不勾选所有防御选项,微信公众号依然无法正常通讯,关键字回复全部失效。目前的解决方案包括查看拦截记录,将相关 URL 加到白名单中,但部分用户表示找不到拦截记录。也有用户建议加 QQ 协助调整规则,但这种方式并非通用解决方案。对于这个问题,目前还没有一个确定的、一劳永逸的解决办法,需要不断探索和尝试。

(二)自建 Web 应用防火墙


分析网站流量组成,主要包括爬虫流量、异常流量和正常流量。爬虫流量来自百度、bing、谷歌等搜索引擎以及各种采集器;异常流量包括单 IP 大流量访问、多 IP 大流量访问以及恶意攻击如 DDoS、CC、SQL 注入、暴力破解等;正常流量则是三方渠道大流量访问。
从基础防护层面,Nginx 结合 lua 可以实现个性化访问控制需求。在安全防护方面,通过分析客户端的 user_agent、url、query_string 等特征,可以初步分析是否具备统一特征,并根据其行为返回不同的状态码。例如,对于 SQL 注入攻击,可以设置规则进行拦截。如果请求的 query_string 中包含 “union.select.(.*)” 等特征,则认为是 SQL 注入攻击,返回状态码 444。对于文件注入、溢出攻击、spam 字段以及不符合 user_agent 规则的请求,也可以进行相应的拦截和处理。
在连接数、频率限制方面,可以使用 Nginx 的相关模块进行策略设置。例如,可以限制站点的访问连接数和访问频率,避免因恶意攻击或异常流量导致服务器宕机。可以设置每秒钟的请求数,当请求超过限制时,可以将其放入缓冲区等待处理,或者直接返回 503 错误。这样可以有效地保障服务器的性能和稳定性,提高网站的安全性。
 

墨者安全 防护盾

墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。

热门文章

X

7x24 小时

免费技术支持

15625276999


-->