J'ai, plus ou moins, après la configuration sur AWS:
Équilibreur de charge élastique avec 3 machines O 3 Zones de disponibilité différentes. Mon groupe de sécurité permet de 0.0.0.0/0:80 comme c'est mon Rails Application (Nginx, Licorne).
Je me demandais s'il y a un moyen de refuser l'accès à mon application à une adresse IP publique spécifique? J'ai lu une documentation AWS, mais comme SG's's's's "nier tout", il n'y a aucun moyen de nier juste une adresse IP spécifique.
Des idées? iptables sur les 3 machines derrière l'équilibreur de charge?
Merci!
Une solution à terme simplifiée consiste à utiliser une règle entrante du réseau VPC. Cela ne fonctionne que si votre ELB est dans un VPC, mais si vous l'avez créé au cours des dernières années, cela devrait être par défaut.
Pour interdire 1.2.3.4, par exemple, procédez comme suit:
VPC
.Network ACLs
Dans le menu de gauche.Inbound Rules
onglet.Edit
et ajoutez une nouvelle règle avec les attributs suivants: [.____]Il y a une tasse de plus d'informations sur les ACL de réseau ici: http://docs.aws.amazon.com/amazonvpc/latest/userguide/vpc_acls.html
Pour cela, la meilleure solution est, comme vous l'avez dit, iptables sur les 3 machines différentes.
En fait, ce n'est pas une bonne solution que l'IP distante ($remote_addr
à NGinx) sera de l'albancier d'Amazon. L'interdiction qui aboutira à tout le trafic transmis à être banni.
Vous devrez inspecter les paquets et trouver le HTTP X-Forwarded-For
En-tête, IPtables n'est pas conscient du protocole comme ça.
Je me suis installé pour la solution suivante à 2 ips coquine à Nginx
set $client_ip $remote_addr;
if ($http_x_forwarded_for) {
set $client_ip $http_x_forwarded_for;
}
if ($client_ip = "123.123.123.123") {
return 403;
}
if ($client_ip = "123.123.123.234") {
return 403;
}
Introduire une variable $client_ip
, pour que je puisse aussi tester cela localement, où il n'y a pas http_x_forwarded_for
disponible..
Légèrement offtopic mais postant pour plus de commodité, j'ai également ajouté que le client IP à mes journaux d'accès:
log_format main "\$client_ip - \$remote_user [\$time_local] \"\$request\" \$status \$body_bytes_sent \"\$http_referer\" \"\$http_user_agent\"";
access_log /var/log/nginx.access.log main;
Ce n'est pas joli, mais j'espère que cela aide
Non, il n'y a pas d'option pour bloquer IPS avec groupe de sécurité.
Le groupe de sécurité est essentiellement une liste blanche, au lieu de la liste noire.
Tout est refusé par défaut et vous pouvez ouvrir sélectivement les ports en fonction de vos besoins, mais vous ne pouvez bloquer aucune personne/adresse IP spécifique.
Pour cela, la meilleure solution est, comme vous l'avez dit, iptables sur les 3 machines différentes.
Je suis sûr que des groupes de sécurité AWS auront également cette fonctionnalité, mais pas à ce jour.