nginx 作为 WebSocket 代理:检查并阻止某些请求

nginx 作为 WebSocket 代理:检查并阻止某些请求

我运行 NodeJS 作为一种 Web 应用服务器,为 AngularJS 前端提供服务。它们仅通过 WebSockets 进行通信,使用 Socket.IO 的 SailsJS 实现。在前端(客户端)和 NodeJS 后端之间,有一个 nginx 作为代理,配置如下:

server {
    listen 1337 ssl;
    location /socket.io/ {
       proxy_pass https://localhost:1338;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       proxy_http_version 1.1;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

到目前为止一切顺利。我现在想要监控和保护 Websocket 连接。特别是,我想防止 XSS 攻击并排除试图强行登录我的应用程序的 IP。我对这些东西还很陌生,但经过一番研究,我发现了 fail2ban 和 nginx-naxsi,它们可能正是我需要的。但是,我不知道如何让它们与我的设置一起工作。

这有可能吗?我能以某种方式拦截通过代理(nginx)中的 Websocket 隧道传输的流量吗?

答案1

我个人没有使用过 fail2ban 或 nginx-naxsi,但我知道ModSecurity 自 2012 年起可用于 nginx并且能够轻松处理您的请求。它也是开源的,因此可以根据您的需求进行定制。

ModSecurity 包含 base_rulesets 和optional_rulesets,其中包含已准备好且可立即使用的XSS 和 DOS 规则来保护您的服务器。

它肯定会对你的性能造成轻微的影响(取决于你使用的规则数量和你处理的流量大小),但确实功能强大的工具

这里有一个教程关于如何为 nginx 设置它。也许你会喜欢它 :)

答案2

naxsi 和 fail2ban 不同 naxsi 是一种 WAF(Web 应用程序防火墙),这意味着所有请求首先经过 naxsi,然后您将设置一些规则来检查每个请求,以防客户端向您不想授予访问权限的资源发出请求,那么 naxsi 将阻止该请求

fail2ban 是一个 IDS(入侵检测系统),fail2ban 的作用是监控你的nginx logs(或任何与此相关的日志),并根据一些正则表达式,在一定次数尝试后阻止客户端。假设你有一个暴力攻击,客户端试图访问不存在的 URL,那么 fail2ban 会检测到该客户端有很多 404 响应,然后它会禁止该 IP

因此 naxsi 会拒绝恶意请求,而 fail2ban 只会在满足条件时才禁止

相关内容