NginxWAF(Web Application Firewall)是一种基于Nginx的Web应用防火墙,用于保护Web应用程序免受各种网络攻击,如SQL注入、跨站脚本(XSS)、文件包含、恶意文件上传等。NginxWAF通常通过分析HTTP/HTTPS请求,检测并阻止恶意流量,从而增强Web应用的安全性。

NginxWAF的主要功能

  1. SQL注入防护:检测并阻止SQL注入攻击,防止攻击者通过恶意SQL语句窃取或篡改数据库数据。
  2. 跨站脚本(XSS)防护:检测并阻止跨站脚本攻击,防止攻击者在用户浏览器中执行恶意脚本。
  3. 文件包含防护:防止攻击者通过文件包含漏洞执行恶意代码。
  4. 恶意文件上传防护:检测并阻止恶意文件上传,防止攻击者上传恶意文件到服务器。
  5. CC攻击防护:防止攻击者通过大量请求耗尽服务器资源(DDoS攻击的一种)。
  6. 敏感信息泄露防护:防止敏感信息(如数据库密码、API密钥等)通过HTTP响应泄露。
  7. 自定义规则:支持用户自定义安全规则,根据具体需求灵活配置防护策略。

    ModSecurity 是什么?

ModSecurity 是一个开源的 Web 应用防火墙(WAF),用于保护 Web 应用程序免受各种攻击,如 SQL 注入、跨站脚本(XSS)、文件包含等。它可作为 Apache、Nginx 和 IIS 的模块,监控、记录并过滤 HTTP 流量,帮助识别和阻止恶意请求。

Github
https://github.com/SpiderLabs/ModSecurity

主要功能

  1. 实时监控和过滤:分析 HTTP 请求和响应,实时阻止恶意流量。
  2. 规则引擎:支持自定义规则,使用正则表达式、逻辑运算符等定义安全策略。
  3. 日志记录:详细记录 HTTP 流量,便于审计和取证。
  4. 虚拟补丁:在不修改应用代码的情况下,通过规则修复漏洞。
  5. 集成 OWASP CRS:提供核心规则集(CRS),防御常见 Web 攻击。

如何使用 ModSecurity

1. 安装

  • Apache

    sudo apt-get install libapache2-mod-security2
    sudo a2enmod security2
    sudo systemctl restart apache2
  • Nginx

    sudo apt-get install libnginx-mod-http-modsecurity
    sudo systemctl restart nginx

2. 配置

  • Apache
    配置文件通常位于 /etc/apache2/mods-enabled/security2.conf,启用 ModSecurity 并加载规则集:

    <IfModule security2_module>
        SecRuleEngine On
        Include /path/to/modsecurity.conf
        Include /path/to/owasp-crs/crs-setup.conf
        Include /path/to/owasp-crs/rules/*.conf
    </IfModule>
  • Nginx
    配置文件通常位于 /etc/nginx/nginx.conf,启用 ModSecurity 并加载规则集:

    load_module modules/ngx_http_modsecurity_module.so;
    http {
        modsecurity on;
        modsecurity_rules_file /path/to/modsecurity.conf;
        modsecurity_rules_file /path/to/owasp-crs/crs-setup.conf;
        modsecurity_rules_file /path/to/owasp-crs/rules/*.conf;
    }

3. 使用 OWASP CRS

OWASP CRS 是 ModSecurity 的常用规则集,可从 GitHub 下载并配置:

git clone https://github.com/SpiderLabs/owasp-modsecurity-crs.git

将规则集路径添加到 ModSecurity 配置文件中。

4. 自定义规则

根据需要自定义规则,例如阻止特定 User-Agent:

SecRule REQUEST_HEADERS:User-Agent "bad-bot" "deny,status:403,id:1001"

5. 测试和验证

配置完成后,测试 Web 应用,确保 ModSecurity 正常工作且不影响正常流量。使用工具如 curl 发送测试请求:

curl -I http://your-website.com/?test=../etc/passwd

检查日志文件(通常位于 /var/log/modsec_audit.log)确认拦截情况。

总结

ModSecurity 是一个强大的 WAF,通过安装、配置规则集和自定义规则,可以有效防御多种 Web 攻击。定期更新规则和测试配置是确保其有效性的关键。

NAXSI 是什么?

NAXSI(Nginx Anti XSS & SQL Injection)是一个开源的 Web 应用防火墙(WAF),专为 Nginx 设计。它通过检测和阻止恶意 HTTP 请求来保护 Web 应用免受常见攻击,如 SQL 注入、跨站脚本(XSS)、文件包含等。NAXSI 的核心特点是轻量级、高性能,且易于集成到 Nginx 中。

Github
 https://github.com/nbs-system/naxsi


NAXSI 的主要功能

  1. 实时请求过滤:分析 HTTP 请求,检测并阻止恶意流量。
  2. 基于规则的学习模式:支持学习模式,帮助生成白名单规则。
  3. 轻量级设计:对 Nginx 性能影响小,适合高流量环境。
  4. 灵活的配置:支持自定义规则和白名单,适应不同应用需求。
  5. 日志记录:详细记录拦截的请求,便于审计和分析。

如何使用 NAXSI

1. 安装 NAXSI

NAXSI 可以作为 Nginx 的模块编译安装,也可以通过包管理器安装。

  • 从源码编译安装

    1. 下载 Nginx 和 NAXSI 源码:

      wget http://nginx.org/download/nginx-1.20.1.tar.gz
      wget https://github.com/nbs-system/naxsi/archive/refs/tags/1.3.tar.gz -O naxsi-1.3.tar.gz
    2. 解压并编译:

      tar -xzvf nginx-1.20.1.tar.gz
      tar -xzvf naxsi-1.3.tar.gz
      cd nginx-1.20.1
      ./configure --add-module=../naxsi-1.3/naxsi_src
      make
      sudo make install
  • 使用包管理器安装

    对于某些 Linux 发行版(如 Debian/Ubuntu),可以直接安装:

    sudo apt-get install nginx-naxsi

2. 配置 NAXSI

NAXSI 的配置文件通常包括两部分:

  • 核心规则文件:定义检测规则。
  • 白名单文件:定义允许的请求模式。
  • 启用 NAXSI
    在 Nginx 配置文件中加载 NAXSI 模块:

    load_module modules/ngx_http_naxsi_module.so;
  • 配置核心规则
    在 Nginx 配置文件中引入 NAXSI 核心规则文件(通常为 naxsi_core.rules):

    http {
        include /path/to/naxsi_core.rules;
        server {
            listen 80;
            server_name your-website.com;
    
            location / {
                # 启用 NAXSI
                SecRulesEnabled;
                # 定义规则检查模式(动态或静态)
                DeniedUrl "/50x.html"; # 拒绝请求时返回的页面
                CheckRule "$SQL >= 8" BLOCK;
                CheckRule "$RFI >= 8" BLOCK;
                CheckRule "$TRAVERSAL >= 4" BLOCK;
                CheckRule "$EVADE >= 4" BLOCK;
                CheckRule "$XSS >= 8" BLOCK;
    
                # 白名单文件
                include /path/to/naxsi_whitelist.rules;
    
                proxy_pass http://backend;
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                root /usr/share/nginx/html;
            }
        }
    }
  • 配置白名单
    白名单文件(如 naxsi_whitelist.rules)用于定义允许的请求模式。例如:

    BasicRule wl:1010 "mz:$URL:/login|$BODY_VAR:username";
    BasicRule wl:1011 "mz:$URL:/login|$BODY_VAR:password";

3. 学习模式

NAXSI 支持学习模式,用于生成白名单规则:

  1. 启用学习模式:

    LearningMode;
  2. 运行应用并记录日志。
  3. 根据日志生成白名单规则,然后禁用学习模式。

4. 测试和验证

配置完成后,测试 NAXSI 是否正常工作:

  • 发送恶意请求,例如:

    curl "http://your-website.com/?id=1' OR '1'='1"
  • 检查 Nginx 日志文件(通常位于 /var/log/nginx/error.log),确认请求是否被拦截。

5. 优化和调整

根据应用需求调整规则和白名单,确保 NAXSI 不会误拦截合法请求。


总结

NAXSI 是一个轻量级、高性能的 WAF,适合与 Nginx 集成。通过安装、配置规则和白名单,可以有效防御常见 Web 攻击。学习模式和灵活的配置使其易于适应不同应用场景。定期更新规则和测试配置是确保其有效性的关键。

BunkerWeb 是什么?

BunkerWeb 是一个开源的 Web 应用防火墙(WAF),旨在保护 Web 服务器免受各种网络攻击,如 SQL 注入、XSS、DDoS 等。它基于 Nginx,并集成了 ModSecurity 和其他安全模块,提供多层次的安全防护。

官网地址:
https://www.bunkerweb.io/

Open-source and next-generation Web Application Firewall (WAF)
https://github.com/bunkerity/bunkerweb

主要功能

  1. Web 应用防火墙(WAF):防御常见 Web 攻击。
  2. DDoS 防护:缓解分布式拒绝服务攻击。
  3. SSL/TLS 加密:支持 HTTPS,确保数据传输安全。
  4. 速率限制:防止滥用和暴力破解。
  5. IP 黑名单/白名单:控制访问权限。
  6. 日志记录与监控:提供详细的日志和监控功能。

如何使用 BunkerWeb

1. 安装

BunkerWeb 可以通过 Docker 或直接安装在 Linux 系统上。

Docker 安装:

docker pull bunkerity/bunkerweb:latest
docker run -d -p 80:80 -p 443:443 bunkerity/bunkerweb:latest

Linux 安装:

sudo apt-get update
sudo apt-get install bunkerweb

2. 配置

配置文件通常位于 /etc/bunkerweb/usr/local/bunkerweb

主要配置文件:

  • nginx.conf:Nginx 主配置文件。
  • modsecurity.conf:ModSecurity 配置文件。
  • bunkerweb.conf:BunkerWeb 特定配置。

示例配置:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_server;
        include /etc/bunkerweb/conf.d/waf.conf;
    }
}

3. 启动服务

Docker:

docker start bunkerweb

Linux:

sudo systemctl start bunkerweb

4. 监控与日志

日志文件通常位于 /var/log/bunkerweb

查看日志:

tail -f /var/log/bunkerweb/access.log
tail -f /var/log/bunkerweb/error.log

5. 更新与维护

定期更新 BunkerWeb 以获取最新的安全补丁。

Docker 更新:

docker pull bunkerity/bunkerweb:latest
docker stop bunkerweb
docker rm bunkerweb
docker run -d -p 80:80 -p 443:443 bunkerity/bunkerweb:latest

Linux 更新:

sudo apt-get update
sudo apt-get upgrade bunkerweb

总结

BunkerWeb 是一个功能强大的 Web 应用防火墙,适合需要高安全性的 Web 服务器。通过 Docker 或直接安装,配置简单,且提供全面的安全防护和监控功能。定期更新和维护是确保其有效性的关键。

Coraza WAF

Coraza 是一个开源的 Web 应用防火墙(WAF),旨在为现代 Web 应用提供高性能的安全防护。它是 ModSecurity 的继任者,完全兼容 ModSecurity 的规则语法,同时提供了更好的性能和更现代化的架构。Coraza 支持多种部署方式,包括作为 Go 库集成到应用中,或者作为独立的 WAF 服务运行。

Github
https://github.com/corazawaf/coraza

Website
https://coraza.io/
https://coreruleset.org/


Coraza 的主要特点

  1. 高性能:基于 Go 语言开发,性能优于传统的 ModSecurity。
  2. 兼容 ModSecurity 规则:支持现有的 ModSecurity 规则集(如 OWASP CRS)。
  3. 灵活的部署方式:可以作为库集成到应用中,也可以作为独立服务运行。
  4. 现代化架构:支持多核、并发处理,适合高流量环境。
  5. 易于扩展:通过 Go 语言插件机制,可以轻松扩展功能。

如何使用 Coraza WAF

1. 安装 Coraza

Coraza 可以通过 Go 的包管理器安装:

go get github.com/corazawaf/coraza/v3

或者从 GitHub 克隆源码:

git clone https://github.com/corazawaf/coraza.git
cd coraza
go build

2. 基本配置

Coraza 的配置文件通常是一个 YAML 或 JSON 文件,用于定义规则和设置。以下是一个简单的配置示例:

rules:
  - id: 1001
    msg: "SQL Injection Attempt"
    severity: "CRITICAL"
    data: ".*[';].*"
    action: "deny"
  - id: 1002
    msg: "XSS Attempt"
    severity: "CRITICAL"
    data: "<script>"
    action: "deny"

3. 集成到应用中

Coraza 可以作为库集成到 Go 应用中。以下是一个简单的示例:

package main

import (
    "fmt"
    "github.com/corazawaf/coraza/v3"
    "net/http"
)

func main() {
    // 初始化 Coraza
    waf, err := corazawaf.NewWAF()
    if err != nil {
        panic(err)
    }

    // 加载规则
    if err := waf.LoadRulesFromFile("rules.yaml"); err != nil {
        panic(err)
    }

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        // 创建事务
        tx := waf.NewTransaction()
        defer tx.Close()

        // 处理请求
        if err := tx.ProcessRequest(r); err != nil {
            http.Error(w, "Forbidden", http.StatusForbidden)
            return
        }

        // 处理响应
        if err := tx.ProcessResponse(w); err != nil {
            http.Error(w, "Forbidden", http.StatusForbidden)
            return
        }

        fmt.Fprintf(w, "Hello, World!")
    })

    http.ListenAndServe(":8080", nil)
}

4. 使用 OWASP CRS

Coraza 完全兼容 OWASP 核心规则集(CRS)。可以从 GitHub 下载 CRS 并加载到 Coraza 中:

git clone https://github.com/coreruleset/coreruleset.git

在代码中加载 CRS:

if err := waf.LoadRulesFromFile("coreruleset/crs-setup.conf"); err != nil {
    panic(err)
}
if err := waf.LoadRulesFromFile("coreruleset/rules/*.conf"); err != nil {
    panic(err)
}

5. 测试和验证

启动应用并发送测试请求,例如:

curl "http://localhost:8080/?id=1' OR '1'='1"

检查应用的日志输出,确认请求是否被拦截。

6. 优化和调整

根据应用需求调整规则和配置,确保 Coraza 不会误拦截合法请求。可以通过以下方式优化:

  • 调整规则:根据实际流量模式优化规则。
  • 启用日志记录:记录拦截的请求,便于分析和调整。
  • 监控性能:定期检查 WAF 的性能,确保其不影响应用的响应时间。

总结

Coraza 是一个高性能、现代化的 Web 应用防火墙,完全兼容 ModSecurity 规则,适合集成到 Go 应用中。通过安装 Coraza、配置规则并集成到应用中,可以有效防御常见 Web 攻击。其灵活的部署方式和强大的扩展能力使其非常适合高流量环境。定期优化规则和监控日志是确保其有效性的关键。

OWASP Core Rule Set (CRS)

Github
https://github.com/coreruleset/coreruleset

OWASP Core Rule Set (CRS) 是一个开源的 Web 应用防火墙(WAF)规则集,由 OWASP(Open Web Application Security Project)维护。

它提供了一套通用的规则,用于防御常见的 Web 应用攻击,如 SQL 注入、跨站脚本(XSS)、文件包含、命令注入等。CRS 是 ModSecurity 和其他兼容 WAF 的默认规则集,广泛应用于保护 Web 应用。


CRS 的主要特点

  1. 全面覆盖:提供针对多种 Web 攻击的防御规则。
  2. 高度可配置:支持通过配置文件调整规则行为。
  3. 持续更新:由社区维护,定期更新以应对新威胁。
  4. 兼容性强:支持 ModSecurity、Coraza 等主流 WAF。
  5. 学习模式:支持学习模式,帮助生成白名单规则。

如何使用 OWASP CRS

1. 下载 CRS

可以从 GitHub 下载最新的 CRS 版本:

git clone https://github.com/coreruleset/coreruleset.git

下载后,CRS 的目录结构如下:

  • crs-setup.conf:配置文件,用于调整 CRS 的行为。
  • rules/:包含所有规则文件。
  • util/:包含工具脚本,如学习模式生成器。

2. 配置 CRS

将 CRS 集成到 WAF 中(以 ModSecurity 为例):

  1. 复制 CRS 文件
    将 CRS 文件复制到 ModSecurity 的规则目录中,例如:

    sudo cp -r coreruleset/rules/ /etc/modsecurity/
    sudo cp coreruleset/crs-setup.conf /etc/modsecurity/
  2. 修改 ModSecurity 配置文件
    在 ModSecurity 的配置文件中加载 CRS:

    <IfModule security2_module>
        SecRuleEngine On
        Include /etc/modsecurity/crs-setup.conf
        Include /etc/modsecurity/rules/*.conf
    </IfModule>
  3. 调整 CRS 配置
    编辑 crs-setup.conf,根据需求调整规则行为。例如:

    • 设置规则引擎模式:

      SecDefaultAction "phase:1,log,auditlog,pass"
      SecDefaultAction "phase:2,log,auditlog,pass"
    • 启用或禁用特定规则:

      SecRuleRemoveById 941100  # 禁用特定规则 ID

3. 使用学习模式

CRS 支持学习模式,用于生成白名单规则:

  1. 启用学习模式:
    crs-setup.conf 中设置:

    SecRuleEngine DetectionOnly
  2. 运行应用并记录日志。
  3. 使用 CRS 提供的工具生成白名单规则:

    cd coreruleset/util
    ./learn-mode-generator.py /path/to/modsecurity_audit.log
  4. 将生成的白名单规则添加到配置文件中。

4. 测试和验证

配置完成后,测试 CRS 是否正常工作:

  • 发送测试请求,例如:

    curl "http://your-website.com/?id=1' OR '1'='1"
  • 检查 WAF 的日志文件(如 /var/log/modsec_audit.log),确认请求是否被拦截。

5. 优化和调整

根据应用需求调整 CRS 配置,确保其不会误拦截合法请求。可以通过以下方式优化:

  • 调整规则敏感度:修改 crs-setup.conf 中的 paranoia level(范围 1-4,默认 1)。
  • 自定义白名单:根据学习模式生成的白名单规则,进一步优化。
  • 监控日志:定期检查日志,分析拦截记录。

总结

OWASP CRS 是一个强大且灵活的 WAF 规则集,适用于防御多种 Web 攻击。通过下载、配置和优化 CRS,可以有效保护 Web 应用。其学习模式和高度可配置性使其非常适合不同场景。定期更新规则和监控日志是确保其有效性的关键。

其他WAF

Handy, High performance, ModSecurity compatible Nginx firewall module & 方便、高性能、兼容 ModSecurity 的 Nginx 防火墙模块
https://github.com/ADD-SP/ngx_waf
https://add-sp.github.io/ngx_waf-docs/

SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。
雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入XSS、 代码注入命令注入CRLF 注入ldap 注入xpath 注入RCEXXESSRF路径遍历后门暴力破解CC爬虫 等攻击。
https://github.com/chaitin/SafeLine

Nemesida WAF 是一个商业化的 Web 应用防火墙(WAF),旨在保护 Web 应用免受各种攻击,如 SQL 注入、跨站脚本(XSS)、文件包含、DDoS 攻击等。它结合了传统的基于规则的防护和机器学习技术,提供高效、智能的安全防护。Nemesida WAF 支持多种部署方式,包括云服务、硬件设备和虚拟设备。
https://nemesida-waf.com/
https://github.com/nemesida-waf/nemesida_waf_ce
https://mp.weixin.qq.com/s/GBT-NTe67ZxsKqoMRXMpVQ

A industry-leading free, high-performance, AI and semantic technology web application firewall and API security protection product - UUSEC WAF. 一款工业级免费、高性能、高扩展,支持AI和语义引擎的Web应用和API安全防护产品-南墙。Web应用防火墙、WAF、WAAP
https://waf.uusec.com/#/
https://github.com/Safe3/uuWAF

标签: Nginx

添加新评论