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

《NGINX 防火墙:守护网络安全的坚固屏障》(图文)


来源:mozhe 2024-12-03

NGINX 作为一款高性能的 Web 服务器和反向代理服务器,在互联网领域中被广泛应用。其防火墙功能对于保护 Web 应用程序的安全起着至关重要的作用。
NGINX 的防火墙主要由 HTTP 防火墙和 WAF(Web 应用防火墙)两部分组成。这两个重要的安全功能能够有效识别并阻止基于 HTTP 协议的恶意攻击,为机构的信息安全提供坚实的保障。
1.HTTP 防火墙
HTTP 防火墙是一种安全措施,能够识别和阻止基于 HTTP 协议的恶意攻击。在 HTTP 协议下,每个请求都包含一个 HTTP 头,攻击者可能通过修改 HTTP 头进行攻击。例如,发送带有恶意参数的 HTTP 请求以利用应用程序漏洞。而 NGINX 的 HTTP 防火墙是一个开源模块,可帮助 Web 应用程序抵御一些常见的 Web 攻击,如跨站点脚本(XSS)、SQL 注入、文件包含、请求欺骗等。它可以追踪访问者的 HTTP 请求,对恶意请求进行拦截、过滤和防御。
其中一些可配置选项包括:
  • client_header_buffer_size:指定客户端 HTTP 头缓冲区的大小。
  • client_body_buffer_size:指定客户端 HTTP 正文数据缓冲区的大小。
  • client_max_body_size:指定客户端发送的 HTTP 正文数据允许的最大长度。
  • http2_max_field_size:指定 HTTP/2 请求头字段的最大长度。
  • http2_max_header_size:指定 HTTP/2 请求头的最大大小。
需要根据 Web 应用程序的需求进行具体设置,但要注意 HTTP 防火墙只能提供基本的安全保护措施,还需要其他功能的补充,如 WAF。
2.WAF
WAF(Web 应用防火墙)是专为 Web 应用程序设计的防火墙。它不仅可以拦截和阻止基于 HTTP 协议的攻击,还能针对 Web 应用程序的特定漏洞进行保护。WAF 通常运行在 Web 服务器和应用程序之间,拦截恶意请求、攻击载荷和有害流量。
NGINX 的 WAF 模块是一个开源应用程序,可以通过自定义规则进行设置。它能够检测和阻止到达 Web 应用程序的恶意流量和攻击载荷,如 SQL 注入、跨站点脚本、OS 攻击和 HTTP 协议攻击。WAF 模块还支持自定义规则文件,以满足更特定的应用程序需求。除了依赖常规的规则数据包外,也可以结合其他第三方规则引擎,如 ModSecurity。
一些 WAF 的例子包括:
  • blacklist_by_ip:引用黑名单,阻止来自恶意 IP 地址的 Web 请求。
  • block_sql_injection:检测和阻止 SQL 注入攻击。
  • block_xss:检测和阻止跨站脚本攻击。
  • block_brute_force:检测和阻止暴力攻击。
  • block_file_inclusion:检测和阻止文件包含攻击。
需要根据 Web 应用程序的特定需求和安全性威胁制定具体的规则集。
总之,NGINX 的 HTTP 防火墙和 WAF 功能共同构成了一个完整的 Web 防护系统。当配置正确后,能极大地提高 Web 应用程序的安全性,保护机构的信息安全。但要记住,安全性问题不能完全依靠这两个功能解决,仍需要进行持续的评估和测试,以确保其有效性和适应性。

二、NGINX 防火墙作用


  1. HTTP 防火墙可识别和阻止基于 HTTP 协议的恶意攻击,如跨站点脚本(XSS)、SQL 注入、文件包含、请求欺骗等。通过配置各种选项,如客户端 HTTP 头缓冲区大小、正文数据缓冲区大小、最大长度等,为 Web 应用程序提供基本的安全保护。
    • Nginx 的 HTTP 防火墙是一个开源模块,可通过配置一些选项来抵御常见的 Web 攻击。例如,client_header_buffer_size可指定客户端 HTTP 头缓冲区的大小,client_body_buffer_size指定客户端 HTTP 正文数据缓冲区的大小,client_max_body_size指定客户端发送的 HTTP 正文数据允许的最大长度等。这些选项需要根据 Web 应用程序的需求进行具体设置。
    • 参考写作素材中提到的“Nginx缓冲区大小和超时怎么设置 - 问答 - 亿速云”,Nginx 的缓冲区大小和超时设置可以通过配置文件进行调整。比如,可以通过proxy_buffer_size和proxy_buffers指令来设置 Nginx 的缓冲区大小,通过proxy_connect_timeout、proxy_send_timeout和proxy_read_timeout指令来设置 Nginx 的超时时间。
    • 同时,如“缓冲区设置_Nginx 的这些安全设置,你都知道吗?-CSDN 博客”中提到,可以根据服务器的实际情况合理调整缓冲区大小和超时时间,以提高服务器性能和稳定性。还可以禁用不需要的 Nginx 模块,不展示 server tokens,控制资源和限制,禁用所有不需要的 HTTP 方法,监控访问日志和错误日志,合理配置响应头等措施来增强 Nginx 的安全性。
  1. WAF 专为 Web 应用程序设计,不仅能拦截和阻止基于 HTTP 协议的攻击,还能针对特定漏洞进行保护。它可以检测和阻止恶意流量和攻击载荷,如 SQL 注入、跨站脚本、暴力攻击、文件包含攻击等。同时支持自定义规则文件,结合第三方规则引擎,如 ModSecurity,满足更特定的应用程序需求。
    • Nginx 的 WAF 模块是一个开源应用程序,可以通过自定义规则进行设置。它能够检测和阻止到达 Web 应用程序的恶意流量和攻击载荷,如 SQL 注入、跨站点脚本、OS 攻击和 HTTP 协议攻击等。
    • 参考写作素材中的“nginx 安装 WAF_nginx waf - CSDN 博客”,安装 lua 模块让 Nginx 支持 lua,然后安装基于 lua 的 WAF,如 ngx_lua_waf,可以防止 Sql 注入、XSS、SSRF、CC 攻击、IP 黑白名单、URL 拦截访问等,从而保护应用安全。
    • 还可以结合第三方规则引擎,如 ModSecurity。“Linux 一键部署 Nginx+ModSecurity - CSDN 博客”提到,ModSecurity 是一个开源、高性能的 Web 应用程序防火墙(WAF),它提供了强大的安全规则引擎,用于检测和阻止各种攻击行为,如 SQL 注入、XSS 跨站点脚本攻击等。“Nginx+ModSecurity(WAF)加强 Web 应用程序安全性 - 博客园”详细介绍了 ModSecurity 的功能,如阻止 SQL 注入、跨站脚本攻击、本地文件包含漏洞攻击、远程文件包含漏洞攻击等,并介绍了使用 Nginx 和 ModSecurity 的步骤,包括安装 ModSecurity 和 ModSecurity-nginx 模块,以及配置 Nginx 等。
    • “Nginx 配合 modsecurity 实现企业级 WAF 应用防火墙功能 -CSDN 博客”介绍了 ModSecurity 原本是 Apache 上的一款开源 waf,可以有效的增强 web 安全性,目前已经支持 nginx 和 IIS,配合 nginx 的灵活和高效,可以打造成生产级的 WAF,是保护和审核 web 安全的利器。

三、NGINX 防火墙保障 HTTPS 安全通信

  1. 通过提供多种 TLS/SSL 协议和加密算法的支持,如 TLS 1.0、1.1、1.2 和 1.3 以及 AES、RSA、ECDHE 等,保障 HTTPS 通信的安全性,防止数据在传输过程中被窃听、篡改、伪造等安全风险。
在当今互联网时代,安全通信至关重要,尤其是在 HTTPS 通信中。Nginx 防火墙提供了多种 TLS/SSL 协议和加密算法的支持,如 TLS 1.0、1.1、1.2 和 1.3 以及 AES、RSA、ECDHE 等。这些丰富的选择使得网站能够根据实际需求进行灵活配置,从而极大地提高了 HTTPS 通信的安全性。例如,参考写作素材中提到的“Nginx 防火墙如何保障 HTTPS 安全通信 - Nginx - PHP 中文网”,详细阐述了 HTTPS 通信的安全保障主要基于 TLS/SSL 加密技术,能够防止数据在传输过程中被窃听、篡改、伪造等安全风险。同时,“禁止 nginx 服务器使用 RC4 加密算法 - boyboy 的技术博客 - 51CTO 博客”也从侧面说明了选择合适的加密算法对于保障服务器安全的重要性。
  1. 支持多种 HTTPS 证书的安装和配置,如自签名证书、CA 证书、EV SSL 证书等,并提供 OCSP Stapling 功能,有效验证证书状态,防止中间人攻击。
Nginx 防火墙支持多种 HTTPS 证书的安装和配置,包括自签名证书、CA 证书、EV SSL 证书等。同时,还提供了 OCSP Stapling 功能,能够有效地验证证书状态,防止中间人攻击等安全风险。如写作素材中的“Nginx 防火墙如何保障 HTTPS 安全通信 - Nginx - PHP 中文网”指出,Nginx 防火墙支持多种 HTTPS 证书的安装和配置,并且通过 OCSP Stapling 功能确保证书的有效性。此外,“【教程】Nginx 配置 ssl 模块,支持 https 访问 - CSDN 博客”也提到了申请不同类型的 ssl 证书以及在 Nginx 中的配置方法。
  1. 对 HTTP/2 协议充分支持,开启 Server Push 和流量控制等功能,提高 HTTPS 通信的效率和稳定性。
Nginx 防火墙对 HTTP/2 协议提供了充分支持,可以开启 Server Push 和流量控制等功能,从而显著提高 HTTPS 通信的效率和稳定性。参考写作素材中的“NGINX Plus 现在完全支持 HTTP/2 - 原创手记 - 慕课网”,提到了 HTTP/2 使数据传输更高效,对应用程序更安全,具有完全复用、单一持久连接、二进制编码、Header 压缩和 SSL/TLS 加密等五个提高性能的特点。“nginx 支持 http2 协议 - CSDN 博客”则详细介绍了在 centos6 上安装 nginx 并支持 http2 协议的步骤,包括编译安装 nginx、生成证书以及修改配置文件等。
  1. 强大的 SSL 代理功能,如 SSL 握手延迟、缓冲区过滤、字词过滤等,从多个维度全面保障 HTTPS 通信的安全性。
Nginx 防火墙拥有强大的 SSL 代理功能,如 SSL 握手延迟、缓冲区过滤、字词过滤等。这些功能能够从多个维度全面保障 HTTPS 通信的安全性。例如,写作素材中的“Nginx 防火墙如何保障 HTTPS 安全通信 - Nginx - PHP 中文网”详细阐述了 SSL 代理能够对 HTTPS 通信中的数据进行深度检测和防御,有效地防范恶意攻击和信息泄露等安全威胁。通过这些强大的 SSL 代理功能,Nginx 防火墙为用户提供了更加安全、稳定的 HTTPS 通信服务。

四、NGINX 防火墙案例

  1. Kubernetes 集群+Keepalived+Nginx+防火墙实例中,通过配置防火墙服务器,设置双网卡,实现外网客户端可以通过特定 IP 访问内网的 Web 服务,同时利用 Nginx 和 Keepalived 实现负载均衡高可用。
在 Kubernetes 集群中,为了实现外网客户端访问内网的 Web 服务以及负载均衡高可用,采用了一系列的配置措施。首先,设置防火墙服务器并配置双网卡,通过设置 SNAT 和 DNAT 转换,使得外网客户端能够通过特定 IP 访问内网的 Web 服务。同时,在两台负载均衡器上配置 Nginx 和 Keepalived。两台负载均衡器将网关地址修改为防火墙服务器的内网 IP 地址,并配置 Nginx 和 Keepalived。关闭主调度器的 Nginx 服务模拟故障时,Keepalived 能够自动切换,确保服务的高可用性。通过这些配置,实现了外网客户端对内网 Web 服务的稳定访问,并提高了系统的可靠性和稳定性。
  1. nginx+lua 实现简单的 waf 网页防火墙功能,通过安装 LuaJIT、ngx_devel_kit、nginx_lua_module 等模块,为 Nginx 增加防火墙功能,可有效拦截恶意请求,并记录日志。
为了增强 Nginx 的安全性,可以通过安装 LuaJIT、ngx_devel_kit、nginx_lua_module 等模块,实现简单的 waf(Web 应用防火墙)功能。首先,安装 LuaJIT,这是一个即时的 Lua 代码解释器。然后安装 ngx_devel_kit 和 nginx_lua_module。安装完成后,进行 Nginx 的配置,创建一个 Nginx 配置文件,定义 WAF 规则和 Lua 脚本。在 init.lua 文件中,可以定义 WAF 规则,如禁止访问特定 URL、检测恶意请求等。在 access.lua 文件中,编写 Lua 脚本实现 WAF 逻辑,根据规则进行请求过滤和处理。通过这些配置,Nginx 可以有效拦截恶意请求,并记录日志,提高 Web 应用的安全性。
  1. Nginx 实战:Firewalld 防火墙中,利用 Firewalld 动态防火墙管理工具,与 Nginx 相关的端口和服务相结合,确保服务器的安全性,如添加 Nginx 服务到 Firewalld、手动开放特定端口、将 Nginx 所在服务器加入特定区域等。
在使用 Nginx 时,可以结合 Firewalld 动态防火墙管理工具来确保服务器的安全性。首先,开启并启动 Firewalld 服务。然后,可以将 Nginx 服务添加到 Firewalld 中,允许 HTTP 和 HTTPS 访问。如果需要为 Nginx 开放除标准 HTTP/HTTPS 端口之外的端口,可以手动开放特定端口。还可以将 Nginx 所在服务器加入特定区域,如设置为 public 区域。通过查看已开放的端口和服务,可以确保配置正确。设置临时或永久规则时,可以使用 --permanent 参数使规则在系统重启后仍能保留。对于更复杂的规则,可以直接编辑 XML 配置文件或者使用 firewall-cmd 的更多功能来精细化控制访问策略。通过这些步骤,可以有效地将 Firewalld 防火墙配置与 Nginx 服务相结合,保障服务器的安全性和可控的网络访问策略。

五、NGINX 防火墙使用场景

  1. 适用于遭受各类攻击的用户,如 CC 攻击、SQL 注入、渗透攻击、恶意上传脚本等。
NGINX 防火墙可以有效抵御多种类型的攻击。对于 CC 攻击,可以通过多种方式进行防御。例如,可以使用 Nginx 的 Lua 模块编写简易防火墙防止 CC 攻击,通过设置共享字典、定义 Lua 函数获取真实 IP 和客户端 IP、设置封禁积分机制等方式,当检测到访问过快的 IP 时进行封禁,阻止其继续访问。此外,还可以通过 Nginx 的配置文件抵御攻击,采用验证浏览器行为的方法,如设置不同 IP 请求的不同 cookie 值,并结合字符串散列等技术,使攻击者难以伪造 cookie,从而将代理型 CC 和低级发包型 CC 攻击流量阻挡在 302 重定向状态。同时,配置 Nginx 防御 CC 攻击还可以通过下载 lua,并使用 Nginx 进行编译,对相关文件进行修改配置,实现对 CC 攻击的防御。
对于 SQL 注入攻击,NGINX 的 WAF(Web 应用防火墙)可以有效检测和阻止。WAF 不仅可以拦截和阻止基于 HTTP 协议的攻击,还能针对特定漏洞进行保护,如 SQL 注入攻击。它可以检测和阻止到达 Web 应用程序的恶意流量和攻击载荷,如 SQL 注入、跨站脚本、OS 攻击和 HTTP 协议攻击等。同时支持自定义规则文件,结合第三方规则引擎,如 ModSecurity,满足更特定的应用程序需求。
对于渗透攻击和恶意上传脚本等攻击,NGINX 的 HTTP 防火墙和 WAF 共同作用,能够追踪访问者的 HTTP 请求,对恶意请求进行拦截、过滤和防御。通过配置各种选项,如客户端 HTTP 头缓冲区大小、正文数据缓冲区大小、最大长度等,为 Web 应用程序提供基本的安全保护。同时,WAF 可以针对特定漏洞进行保护,阻止恶意上传脚本等危险行为。
  1. 可根据需求屏蔽境内或境外地区访问,通过 UA、IP 黑白名单管理网站访问规则,可视化管理网站防御规则,实时展示防火墙拦截状态等。
NGINX 防火墙可以通过多种方式实现屏蔽境内或境外地区访问。例如,可以利用宝塔面板中的插件免费防火墙,实现一键禁止国外 IP 访问网站。在插件中,找到全局配置,将禁止海外访问状态按钮启用即可,里面还包含其它多种不同的拦截策略,可以根据自己的需求,合理配置。还可以通过屏蔽国外 IP 访问的几种常用方法,如使用 Web 应用防火墙或云防火墙、宝塔 Nginx 防火墙禁止海外访问、域名解析方式、云安全组或系统软防火墙规则等。其中,使用 Web 应用防火墙或云防火墙可以通过全球地域封禁功能、配置黑白名单等方式实现屏蔽国外 IP 访问;宝塔 Nginx 防火墙禁止海外访问可以通过安装插件、设置全局配置等方式实现;域名解析方式可以通过设置域名拒绝 IP 直接访问,将境外解析设置为内网 IP 地址,国内设置为正常 IP 地址来实现;云安全组或系统软防火墙规则可以通过设置允许已知的 IP 地址登录、使用 ipset 等方式实现屏蔽国外 IP 访问。
同时,NGINX 防火墙还可以通过 UA、IP 黑白名单管理网站访问规则。可以使用 deny 和 allow 指令属于 ngx_http_access_module,直接在配置文件中添加白名单和黑名单设置,或者通过读取文件 IP 配置白名单和黑名单。还可以使用 ngx_http_geo_module 模块,设置 IP 限制,也可设置国家地区限制,通过设置默认值和判断条件,实现对不同 IP 的访问控制。此外,NGINX 防火墙还可以实现可视化管理网站防御规则,实时展示防火墙拦截状态等功能,如宝塔面板防火墙提供了高度自由的规则自定义功能,为站点加一道铜墙铁壁,能够可视化管理网站防御规则,实时展示防火墙拦截状态,适合各种不同的应用场景。
  1. 在大规模 Web 安全防御中,Nginx 可作为反向代理、负载均衡、缓存、WAF 等,提高 Web 安全和性能,如集群化 Nginx 架构、反向代理结合 WAF 的部署、利用 Nginx 缓存提高访问速度等。
在大规模 Web 安全防御中,Nginx 发挥着重要作用。集群化 Nginx 架构能够有效地防范高并发和 DDoS 攻击。此架构使用多个 Nginx 服务器,在应用层对请求进行负载均衡,转发到后端源服务器中处理,从而降低了单点故障和压力。
Nginx 反向代理结合 WAF 的部署可以增强 Web 安全性。WAF 内嵌在 Nginx 服务器中,在 Nginx 进行反向代理之前,先对请求进行安全检测和过滤,过滤掉大部分的攻击请求,同时保护后端源服务器。可以结合第三方 WAF 软件,如 ModSecurity,增强 Web 安全性。ModSecurity 是一个入侵探测与阻止的引擎,作为 Web 应用程序防火墙,可以实时监控、日志记录和访问控制,为 Web 应用程序提供强大的安全保护。
利用 Nginx 缓存可以提高访问速度。在高并发访问大量静态页面的情况下,Nginx 将请求的网页内容缓存到内存中,当后续用户请求该网页时,Nginx 从缓存中读取网页并返回,节省了大量的处理时间。同时,Nginx 还可以作为防火墙对 Web 应用进行安全检测和防范,防止 SQL 注入、XSS 漏洞、文件上传漏洞等攻击。综上所述,Nginx 在大规模 Web 安全防御中的应用非常广泛,其集群化、反向代理、负载均衡、WAF 和缓存等功能可以有效地提高 Web 安全和性能。

六、NGINX 防火墙配置

  1. 安装准备,包括 gcc 环境、第三方开发包(PCRE、zlib、openssl)等。
在安装 NGINX 防火墙之前,需要进行一些安装准备工作。首先,要确保系统具备 gcc 环境,可以通过执行命令yum install gcc-c++来安装。同时,还需要安装一些第三方开发包,如 PCRE、zlib 和 openssl。对于 PCRE,可以执行yum install -y pcre pcre-devel来安装;对于 zlib,执行yum install -y zlib zlib-devel;对于 openssl,执行yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel。这些开发包对于 NGINX 的正常运行和功能发挥至关重要。
  1. 编译安装 Nginx,通过配置 makeFile 文件,指定安装目录和各种参数。
编译安装 Nginx 需要通过配置 makeFile 文件来指定安装目录和各种参数。首先,从 NGINX 官网下载最新的稳定版,例如选择版本 1.20.2,下载地址为http://nginx.org/en/download.html。然后,通过远程连接工具将压缩包放置到指定目录下并解压。接着,进入解压文件夹下,使用./configure命令创建一个 makeFile 文件,例如./configure --prefix=/opt/decade/nginx --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --with-http_gzip_static_module --http-client-body-temp-path=/var/temp/nginx/client --http-proxy-temp-path=/var/temp/nginx/proxy --http-fastcgi-temp-path=/var/temp/nginx/fastcgi --http-uwsgi-temp-path=/var/temp/nginx/uwsgi --http-scgi-temp-path=/var/temp/nginx/scgi --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module。反斜杠表示换行,命令未结束。第一行表示将 NGINX 安装到指定目录,可根据实际情况进行修改。配置完成后,创建一个临时文件目录,再执行make和make install命令进行安装。安装完成后,可以查看 NGINX 版本,并使用相应命令查看 NGINX 的停启状态。
  1. 防火墙配置,根据需求开放 Nginx 所需端口,如 http 默认端口号 80,以及在 Centos7 中配置 iptables,加入 Nginx 服务所需端口的访问权限。
为了使 NGINX 能够正常运行,需要进行防火墙配置,开放 NGINX 所需端口。例如,如果需要开放 http 默认端口号 80,可以执行以下命令加入开放端口号并重启防火墙:firewall-cmd --add-port=80/tcp --permanent,然后执行firewall-cmd --reload。在 Centos7 中,可以配置 iptables 来加入 NGINX 服务所需端口的访问权限。例如,可以打开/etc/sysconfig/iptables文件,编辑该文件,在文本中添加所需端口,如-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT。然后重新启动 iptables,执行service iptables restart。此外,还可以通过其他方式进行防火墙配置,如在 CentOS7 中安装并配置 NGINX 时,可以配置 iptables 规则,允许访问特定端口,如iptables -A INPUT -p tcp --dport 80 -j ACCEPT等。同时,也可以结合其他工具进行防火墙配置,如使用 firewalld 时,可以将 NGINX 服务添加到 firewalld 中,允许 HTTP 和 HTTPS 访问,或者手动开放特定端口,将 NGINX 所在服务器加入特定区域等。
 

墨者安全 防护盾

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

热门文章

X

7x24 小时

免费技术支持

15625276999


-->