Bonjour à tous.
J’ai besoin d’une petite aide SVP.
Je suis en train de configurer un VPS pour pouvoir faire tourner un Websercice qui a été développé en Node JS. Et je souhaite faire ceci avec Nginx configuré en reverse proxy. J’ai réussi à configuré ceci, mais quand j’installe Iptables, ça ne fonctionne plus vraiment.
Ce n’est que la 2è fois que je conf Nginx en reverse proxy, et c’est surtout la 1ère fois que je veux le faire cohabiter avec Iptables.
Les technos : iptables-persistent / Nginx 1.18 / Node JS 14
Je fais des curl pour tester. Et quand Iptables est allumé, au bout du 3ème curl, ça se met à ramer et Nginx me retourne une erreur (voir le log de l’erreur plus bas)… Et quand je désactive Iptables, tout fonctionne nickel.
SVP, Y a t-il une règle Iptables particulière à mettre ? Ou une conf Nginx ou Node JS à metttre ?
Voici mes configurations actuelles :
Voici mon Vhost (qui fonctionne si Iptables est désactivé) :
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name exemple.fr;
#### SSL
ssl_certificate /etc/letsencrypt/live/exemple.fr/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/exemple.fr/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/exemple.fr/fullchain.pem;
include includes/ssl.conf;
location / {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
}
Voici ma conf de iptables (fichier "/etc/iptables/rules.v4") :
### Réinitialiser les règles
*filter
### Restrictions
# Bloquer toutes les connexions entrentes
:INPUT DROP [0:0]
# Bloquer toutes les connexions qui sont redirigées
:FORWARD DROP [0:0]
# Bloquer toutes les connexions sortantes
:OUTPUT DROP [0:0]
### Autorise les connexions déjà établies
# On va essayer d écouter le status, et pour les éléments qui ont le status RELATED ou ESTABLISHED on accepte.
# Nous indiquons avec les paramètres "-m" et "--ctstate" de ne pas fermer les connexions qui sont déjà établies.
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
### Autoriser le LoopBack (localhost)
# Autoriser les éléments à communiquer les uns avec les autres au sein de notre serveur
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
### Autoriser le ping (requêtes ICMP)
# Autoriser toutes les requetes ping
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT
### SSH
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT
### DNS (permet entres autre les téléchargements de paquets debian)
-A INPUT -p tcp --dport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p tcp --dport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT
### HTTP + HTTPS
-A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
### Mysql
#-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
### NTP (horloge du serveur)
-A OUTPUT -p udp --dport 123 -j ACCEPT
### Supprimez les paquets non conformes, tels que les en-têtes mal formés, etc.
-A INPUT -m conntrack --ctstate INVALID -j DROP
### Pour Webservice (normalement pas besoin, car ces ports sont appelés uniquement en localhost)
-A INPUT -p tcp -m multiport --dports 3000,3001 -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 3000,3001 -j ACCEPT
COMMIT
Voici l’erreur nginx (dans le fichier "/var/log/nginx/error.log") que ça me provoque (quand Iptables est activé) :
2020/10/05 17:25:13 [warn] 485#485: *1 upstream server temporarily disabled while connecting to upstream, client: IP, server: EXEMPLE.fr, request: "POST /login HTTP/2.0", upstream: "http://[::1]:3000/login", host: "EXEMPLE.fr"
2020/10/05 17:28:27 [error] 461#461: *1 connect() failed (111: Connection refused) while connecting to upstream, client: IP, server: EXEMPLE.fr, request: "POST /login HTTP/2.0", upstream: "http://[::1]:3000/login", host: "EXEMPLE.fr"
Merci d’avance.