Eu tenho, mais ou menos, a seguinte configuração na AWS:
Balanceador de carga elástico com 3 máquinas ou 3 zonas de disponibilidade diferentes. Meu grupo de segurança permite 0.0.0.0/0:80, pois é meu aplicativo de trilhos (nginx, unicorn).
Eu queria saber se há alguma maneira de negar o acesso ao meu aplicativo para um endereço IP público específico? Eu tenho lido a documentação da AWS, mas como os SGs "negam tudo", não há como negar apenas um endereço IP específico.
Alguma ideia? iptables nas 3 máquinas atrás do balanceador de carga?
Obrigado!
fonte
Na verdade, essa não é uma boa solução, pois o ip remoto (
$remote_addr
no Nginx) será do loadbalancer da Amazon. A proibição resultará na proibição de todo o tráfego encaminhado.Você terá que inspecionar os pacotes e encontrar o
X-Forwarded-For
cabeçalho HTTP , o IPtables não tem conhecimento de protocolo assim.Eu resolvi a seguinte solução para 2 IPs impertinentes no Nginx
Introduzindo uma variável
$client_ip
, apenas para que eu também pudesse testar isso localmente, onde não háhttp_x_forwarded_for
disponível.Ligeiramente offtopic, mas postando por conveniência, também adicionei o IP do cliente aos meus logs de acesso:
Não é bonito, mas espero que ajude
fonte