nginx como proxy para WebSocket: inspecione e bloqueie certas solicitações

2

Eu executei o NodeJS como uma espécie de servidor de aplicações Web que serve um frontend do AngularJS. Eles se comunicam apenas sobre WebSockets, usando a implementação SailsJS do Socket.IO. Entre o frontend (cliente) e o backend do NodeJS, fica o nginx como proxy, configurado da seguinte forma:

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;
    }
}

Até agora, tudo bem. Agora quero monitorar e proteger a conexão do Websocket. Em particular, eu quero evitar ataques XSS e excluir IPs que tentam forçar o login no meu aplicativo. Eu sou muito novo para essas coisas, mas depois de alguma pesquisa me deparei com fail2ban e nginx-naxsi que pode ser exatamente o que eu preciso. No entanto, não tenho ideia de como posso fazê-los funcionar com a minha configuração.

Isso é possível? Posso de alguma forma interceptar o tráfego tunelado através de um Websocket no proxy (sendo nginx)?

    
por cis 24.03.2017 / 12:56

2 respostas

0

Pessoalmente, não tenho nenhuma experiência com o fail2ban ou o nginx-naxsi, mas sei que o ModSecurity está disponível para o nginx desde 2012 e é facilmente capaz de lidar com suas solicitações. É de código aberto e pode ser personalizado para as suas necessidades.

ModSecurity inclui base_rulesets e optional_rulesets com o & preparado & regras XSS e DOS prontas para usar para proteger seu servidor.

Isso definitivamente causa um ligeiro aumento em seu desempenho (dependendo de quantas regras você usa e quanto de tráfego você manipula), mas é uma ferramenta muito poderosa .

Aqui está um tutorial sobre como configurar o nginx. Talvez você goste disso:)

    
por 28.03.2017 / 23:25
0

naxsi e fail2ban são diferentes naxsi é um WAF (web application firewall), isso significa que todos os pedidos passam pela primeira vez naxsi, então você terá algumas regras definidas para verificar cada solicitação, caso o cliente tenha feito uma solicitação para um recurso que você não deseja conceder acesso , então naxsi irá bloquear esse pedido

o fail2ban é um IDS (sistema de detecção de intrusão), o que o fail2ban faz é monitorar seu nginx logs (ou qualquer log quanto ao assunto) e, com base em algum REGEX, você pode bloquear clientes após certas tentativas. então vamos dizer que você tem um ataque de força bruta onde o cliente está tentando alcançar URLs inexistentes, então o fail2ban detectará que aquele cliente tem um monte de 404 responsabilizados, então ele banirá o ip

então naxsi nega solicitações maliciosas e o fail2ban apenas proíbe caso uma condição seja atendida

    
por 31.03.2017 / 21:19