Autoriser les connexions à seulement une URL spécifique via HTTPS avec iptables, -m chaîne récente et -m (potentiellement) (sans aucun doute)

StackOverflow https://stackoverflow.com/questions/4628157

Question

Soit s dire que, par exemple, je veux autoriser les connexions uniquement à subdomain.mydomain.com; Je l'ai travail partiellement, mais il se laisse parfois dans une boucle Freaky avec l'échange de clé client une fois que le client est autorisé Bonjour. Ah, pour le rendre encore plus ennuyeux, il est un certificat auto-signé et la page nécessite une authentification, et HTTPS est à l'écoute sur un port non standard ... Ainsi, l'expérience Handshake SSL TCP / sera très différente pour de nombreux utilisateurs.

est -m récente la bonne voie? Y at-il une méthode plus élégante pour permettre au flux complet TCP une fois que la chaîne est vu?

Voici ce que j'ai à ce jour:

#iptables -N SSL
#iptables -A INPUT -i eth0 -p tcp -j SSL
#iptables -A SSL -m recent --set -p tcp --syn --dport 400
#iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK SYN,ACK --sport 400
#iptables -A SSL -m recent --update -p tcp --tcp-flags PSH,SYN,ACK ACK --dport 400
#iptables -A SSL -m recent --remove -p tcp --tcp-flags PSH,ACK PSH,ACK --dport 400 -m string --algo kmp --string "subdomain.mydomain.com" -j ACCEPT

Oui, je l'ai essayé de contourner cela avec quelques réglages nginx, mais je ne peux pas nginx retourner un 444 avant que le client bonjour, si vous pouvez penser à un moyen d'y parvenir à la place, je suis toutes les oreilles, err, les yeux.

Était-ce utile?

La solution

Comme je l'ai mentionné sur serverfault , j'ai trouvé une solution:

iptables -A INPUT -p tcp --tcp-flags FIN,PSH,ACK PSH,ACK --dport 400 -m connbytes --connbytes 0:512 --connbytes-dir original --connbytes-mode bytes -m string --algo bm ! --string "subdomain.mydomain.com" -j REJECT --reject-with tcp-reset
iptables -A INPUT -i eth0 -p tcp --dport 400 -j ACCEPT
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top