3 votes

UFW bloque le port 80 alors qu'il ne le devrait pas

J'ai ces règles dans UFW (default deny) :

80                         ALLOW       10.0.0.0/8
443                        ALLOW       10.0.0.0/8
80                         DENY        Anywhere
443                        DENY        Anywhere

Je me connecte depuis une machine sur 10.0.0.0/8 à Apache qui écoute sur le port 80. Nous avons remarqué que nginx fonctionnant sur une autre machine (un équilibreur de charge en face de cette machine Apache) envoyait occasionnellement des erreurs "connect timeout". Je suis en mesure de recréer le délai d'attente en exécutant simplement un boucle for dans un boucle for bash qui accède au port 80 à partir de cette machine nginx. J'obtiens peut-être 3 ou 4 dépassements de délai dans un lot de 1000 tests.

Dans /var/log/messages, je vois ceci lorsque les délais sont dépassés :

Dec 1 01:01:01 webserver.mydomain.com kernel : [UFW BLOCK] IN=eth0 OUT= MAC=00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd SRC=10.0.0.5 DST=10.0.0.2 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=16923 DF PROTO=TCP SPT=60064 DPT=80 WINDOW=5792 RES=0x00 SYN URGP=0

Pourquoi l'UFW les bloquerait-il ? Si je désactive l'UFW, ces délais de connexion disparaissent complètement et tout fonctionne comme prévu. D'autres ports (comme le 22) n'ont pas ce problème, je peux exécuter des scripts qui les martèlent sans fin sans aucun problème, même avec ufw activé.

5voto

gtuhl Points 181

J'ai passé beaucoup de temps à essayer de résoudre ce problème. L'implication de l'UFW était un symptôme du vrai problème et non la cause. J'ai trouvé une solution et je ne voulais pas laisser la question sans réponse.

J'ai découvert que pour une raison que je ne peux pas encore expliquer, les syncookies étaient désactivés sur les serveurs Apache derrière l'équilibreur de charge :

# sysctl -a | grep syncookies
net.ipv4.tcp_syncookies = 0

La raison pour laquelle je ne peux pas l'expliquer est qu'il est défini à 1 dans le fichier /etc/sysctl.conf par défaut de Centos6. Il s'agit d'un problème distinct que je dois résoudre.

Pour en savoir plus sur les cookies, cliquez ici :

http://en.wikipedia.org/wiki/SYN_cookies

Il s'agit de serveurs relativement occupés qui traitent un grand nombre de connexions. Je pense que l'activation d'UFW (et donc d'iptables) a ralenti les choses juste assez pour que la file d'attente de synchro se remplisse et que les connexions soient refusées sans synchro.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X