J'ai une boîte Linux configurée avec 2 cartes réseau pour inspecter le trafic passant par le port 80. Une carte est utilisée pour sortir sur Internet, l'autre est connectée à un commutateur réseau. Le but est de pouvoir inspecter tout le trafic HTTP et HTTPS sur les appareils connectés à ce commutateur à des fins de débogage.
J'ai écrit les règles suivantes pour iptables:
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
Sur 192.168.2.1:1337, j'ai un proxy http transparent utilisant Charles ( http://www.charlesproxy.com/ ) pour l'enregistrement.
Tout va bien pour le port 80, mais lorsque j'ajoute des règles similaires pour le port 443 (SSL) pointant vers le port 1337, j'obtiens une erreur concernant un message invalide via Charles.
J'ai déjà utilisé le proxy SSL sur le même ordinateur avec Charles ( http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ ), mais je n'ai pas réussi à le faire de manière transparente pour une raison quelconque. Certaines ressources que j'ai googlé disent que ce n'est pas possible - je suis prêt à accepter cela comme une réponse si quelqu'un peut expliquer pourquoi.
Comme note, j'ai un accès complet à la configuration décrite, y compris tous les clients connectés au sous-réseau - donc je peux accepter les certificats auto-signés par Charles. La solution n'a pas besoin d'être spécifique à Charles car en théorie, n'importe quel proxy transparent fera l'affaire.
Merci!
Edit: Après avoir joué avec un peu, j'ai pu le faire fonctionner pour un hôte spécifique. Lorsque je modifie mes iptables comme suit (et ouvre 1338 dans charles pour le proxy inverse):
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:1338
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 1338
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
Je peux obtenir une réponse, mais sans hôte de destination. Dans le proxy inverse, si je spécifie simplement que tout, à partir de 1338, va à un hôte spécifique que je voulais frapper, il effectue correctement le tremblement de la main et je peux activer le proxy SSL pour inspecter la communication.
La configuration est loin d'être idéale parce que je ne veux pas supposer que tout à partir de 1338 va à cet hôte - une idée pourquoi l'hôte de destination est supprimé?
Merci encore