J'utilise un réseau privé sur Digital Ocean entre un équilibreur de charge et un serveur Web (nginx/node). Je souhaite que le serveur Web bloque tout le trafic entrant sur tous les ports, à l'exception de deux choses:
J'ai essayé d'y parvenir avec les commandes ufw suivantes:
ufw enable
ufw default deny
ufw deny http
ufw deny https
ufw allow ssh
ufw allow from loadbalancer.private.ip to any port 80
ufw allow from loadbalancer.public.ip to any port 80
Le résultat du statut prolifique d'ufw montre ceci:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
80 DENY IN Anywhere
443 DENY IN Anywhere
22 ALLOW IN Anywhere
80 ALLOW IN loadbalancer.private.ip
80 ALLOW IN loadbalancer.public.ip
80 (v6) DENY IN Anywhere (v6)
443 (v6) DENY IN Anywhere (v6)
22 (v6) ALLOW IN Anywhere (v6)
Le site Web ne répond pas et affiche uniquement le délai d'expiration de la passerelle nginx 504. Si je tape ufw allow http, le site est disponible. Donc, ma configuration ci-dessus doit bloquer l’équilibreur de charge. Qu'est-ce qui ne va pas?
Les règles de pare-feu sont d'abord corrélées en termes de traitement. Si le refus vient avant le permis, cela ne fonctionnera pas correctement.
Vos règles ALLOW doivent précéder les règles DENY. Sinon, les premières règles correspondantes sont les règles DENY et vous ne pouvez pas vous connecter comme vous le souhaitez.
Vieille question, mais vous n'avez pas à nier spécifiquement les choses dans UFW, c'est nier par défaut.
Dans ce cas, il vous suffira d'ajouter la règle d'autorisation spécifique pour ladite adresse IP. Et c'est tout. Rien d'autre.