Ho un box Linux impostato con 2 schede di rete per ispezionare il traffico che passa attraverso la porta 80. Una scheda viene utilizzata per uscire su Internet, l'altra è collegata a uno switch di rete. Il punto è poter ispezionare tutto il traffico HTTP e HTTPS sui dispositivi collegati a tale switch per scopi di debug.
Ho scritto le seguenti regole per 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
Il 192.168.2.1:1337, ho un proxy http trasparente che utilizza Charles ( http://www.charlesproxy.com/ ) per la registrazione.
Va tutto bene per la porta 80, ma quando aggiungo regole simili per la porta 443 (SSL) che punta alla porta 1337, ricevo un errore sul messaggio non valido tramite Charles.
Ho usato il proxy SSL sullo stesso computer prima con Charles ( http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ ), ma per qualche motivo non ho avuto successo nel farlo in modo trasparente. Alcune risorse che ho cercato su Google dicono che non è possibile - sono disposto ad accettarlo come risposta se qualcuno può spiegare il perché.
Come nota, ho pieno accesso alla configurazione descritta, compresi tutti i client collegati alla sottorete, quindi posso accettare certificati autofirmati da Charles. La soluzione non deve essere specifica per Charles poiché, in teoria, qualsiasi proxy trasparente lo farà.
Grazie!
Modifica: dopo averci giocato un po ', sono stato in grado di farlo funzionare per un host specifico. Quando modifico il mio iptables nel modo seguente (e apro 1338 in Charles per proxy inverso):
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
Sono in grado di ottenere una risposta, ma senza host di destinazione. Nel proxy inverso, se ho appena specificato che tutto dal 1338 va a un host specifico che volevo colpire, esegue correttamente la stretta di mano e posso attivare il proxy SSL per ispezionare la comunicazione.
L'impostazione è tutt'altro che ideale perché non voglio supporre che tutto dal 1338 vada a quell'host - hai idea del perché l'host di destinazione è stato rimosso?
Grazie ancora