我将NodeJS作为一种服务于AngularJS前端的Web应用程序服务器来运行。 他们仅通过WebSockets进行通信,使用Socket.IO的SailsJS实现。 在前端(客户端)和NodeJS后端之间,nginx作为代理,像这样configuration:
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攻击,并排除试图暴力login到我的应用程序的IP。 我很新的东西,但经过一些研究,我遇到了fail2ban和nginx-naxsi这可能正是我所需要的。 但是,我不知道如何使他们与我的设置工作。
这甚至有可能吗? 我可以以某种方式拦截通过在代理中的WebSocket(是Nginx)隧道通信?
就我个人而言,我对fail2ban或nginx-naxsi没有任何经验,但是我知道自2012年起ModSecurity可用于nginx,并且很容易处理您的请求。 它也是开源的,因此可以根据您的需求进行定制。
ModSecurity包括base_ruleset和optional_rulesets,它们已经准备好了,准备使用的XSS和DOS规则来保护你的服务器。
它肯定会导致你的performance有轻微的波动(取决于你使用多less规则和你处理多lessstream量),但它是一个非常强大的工具 。
这里是一个关于如何设置nginx的教程 。 也许你会喜欢那:)
naxsi和fail2ban是不同的naxsi是一个WAF(networking应用程序防火墙),这意味着所有的请求首先通过naxsi,然后你将有一些规则设置来检查每个请求,如果客户端请求一个资源, t想要授予访问权限,那么naxsi将阻止该请求
fail2ban是一个IDS(入侵检测系统),fail2ban做的是监控你的nginx logs (或者任何日志),并且根据某些REGEX你可以在某些尝试后阻塞客户端。 所以假设你有一个蛮力攻击,客户端试图到达未知的URLS,然后fail2ban将检测到,该客户端有很多404响应,然后它将禁止IP
所以naxsi拒绝恶意请求,fail2ban只是在条件满足的情况下禁止