Newsgroup: it.comp.os.linux.sys
Titolo: HTTPS e Iptables

Ciao a tutti.
Su un firewall con chillispot ho un bizzarro problema che mi sta
facendo perdere la testa da alcuni giorni.
La navigazione, una volta autenticati, funziona perfettamente, eccetto
per l'HTTPS.
Qualunque sito, in HTTPS, non riesco a raggiungerlo. Ilbrowser carica
carica carica poi da timeout.
I sintomi sono gli stessi di quando si manda in drop con iptables.
Ho attivato il masquerade per alcune porte (tra cui
20,21,80,110,143,443) usando "-m multiport" quindi, teoricamente, se
funziona l'HTTP e l'SMTP dovrebbe funzionare anche l'HTTPS.
L'HTTP viene redirezionato verso squid, l'HTTPS invece esce diretto
allo stesso modo dell'SMTP.
Secondo voi, cosa può essere? Riesco a fare SMTP, FTP e tutto il resto
eccetto HTTPS, eppure la regola è uguale per tutti, è sempre la stessa
con multiport.
Che si debba attivare qualcosa di particolare?
Tnx.

 Vai di tcpdump e vedi se i pacchetti arrivano o no.
Già fatto.
Ma ero veramente a pezzi che dopo 40 secondi di tcpdump su ogni
interfaccia inimmaginabile
compreso quelle non presenti ed anche quelle del computer di fianco al
mio ho desistito dall'inc@zz@tura.
Mi pare di ricordare che non arrivasse un bel tubo, ne nella tun0 ne
nella eth2 connessa agli access point.

 arrivano il problema e' a monte.
tun0 è una p2p che crea chillispot.
Supponendo che il problema sia a monde (lo escluso), dove potrebbe
essere scusa?
A monte ho solo il mio portatile che naviga in wifi, zero firewall o
complicazioni simili.
Provato anche da altri computer, faccio tutto tranne HTTPS come se la
443 fosse in DROP o
non fosse sotto masquerade. Cosa non vera perchè la 443 è nella stessa
regola di iptables con
tutte le altre porte, quindi neanche dire che abbia sbagliato a
scrivere qualcosa.
Essendo una unica regola, non andrebbero nemmeno tutte le altre
porte....

 arrivano il problema e' a monte.
(Scusate il mio quoting nel messaggio precedente)
Allora io ho:
tun0 = interfaccia di chilli (e non ho mai capito quando viene usata)
eth1.10 = vlan associata al traffico wifi
Il firewall è composto da due 'fasi', la prima, globale, nega
praticamente tutto
eccetto le query dns e forza il redirect della porta 80 alla porta di
chilli per l'autenticazione.
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $WIFIIF -o $INTIF -j DROP
$IPTABLES -t nat -A PREROUTING -s 
10.254.254.0/24
 -d ! 
10.254.254.1/32
-p tcp --dport ! 443 -j DNAT --to 
10.254.254.1:3990
$IPTABLES -t nat -A PREROUTING -s 
10.254.254.0/24
 -d ! 
10.254.254.1/32
-p udp --dport ! 53 -j DNAT --to 
10.254.254.1:3990
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s $WIFILAN -d
$MIO_SERVER_DNS/32 -p udp --dport 53 -j MASQUERADE
(ho provato anche ad escludere la 443 dal redirect verso chilli, non
si sa mai, ma non è cambiato niente)
Notare che sono tutti -A quindi accodano.
Dopo aver effettuato l'autenticazione, chilli mi esegue questo script
di connup (notare che sono tutti -I quindi inseriscono in testa e
bypassano le altre regole generiche più restrittive)
# Apro squid (questa va)
$IPTABLES -I INPUT -i $DEV -s $FRAMED_IP_ADDRESS/32 -d $ADDR/32 -p tcp
-m multiport --dport 3128 --syn -j ACCEPT
# Forzo redirect a squid (questa va)
$IPTABLES -t nat -I PREROUTING -s $FRAMED_IP_ADDRESS/32 -d !
10.254.254.1/32
 -p tcp --dport 80 -j DNAT --to 
10.254.254.1:3128
# Faccio masquerade delle porte non proxabili con squid
$IPTABLES -t nat -I POSTROUTING -o $EXTIF -s $FRAMED_IP_ADDRESS/32 -p
tcp -m multiport --dport 20,21,25,110,143,443 -j MASQUERADE
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Questa sembra non funzionare.
Mi han detto (ma ci credo poco) che l'FTP e la posta pop3/imap
funzionano e che l'unico servizio a non andare è l'HTTPS...
Eppure la riga sembra corretta. Non basta fare il masquearade?
Ho provato anche ad aprire tutto in FORWARD ma niente.

 443 fosse in DROP o non fosse sotto masquerade.
Ma fare un po' di debugging?
cat /proc/net/ip_conntrack|grep 443
per cominciare.
E tcpdump sulle due (o N) interfacce attraversate nel FORWARD.
Altrimenti è difficile fare guessing, come dire...

Il Tue, 21 Oct 2008 01:06:13 -0700, Alessandro scrisse:
Allora, riorganizzo un attimo.
Mettiamoci nel caso in cui un client si sia autenticato.
La situazione dovrebbe essere la seguente:
Partiamo dalla prima catena attraversata, tabella di nat e PREROUTING.
$IPTABLES -t nat -A PREROUTING -s 
10.254.254.0/24
 -d ! 
10.254.254.1/32
 \
-p tcp --dport ! 443-j DNAT --to 
10.254.254.1:3990
E fin qui...suppongo che la 3990 sia una porta usata da chillispot.
$IPTABLES -t nat -A PREROUTING -s 
10.254.254.0/24
 -d ! 
10.254.254.1/32
 \
-p udp --dport ! 53 -j DNAT --to 
10.254.254.1:3990
Chillispot usa la stessa porta anche in udp?
Passaimo alla tabella filter, catena di FORWARD
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $WIFIIF -o $INTIF -j DROP
Ohibò, se le regole di FORWARD son solo queste, proprio non capisco
come possa passare alcunchè che sia NEW, ad esempio.
INPUT, tabella filter:
$IPTABLES -I INPUT -i $DEV -s $FRAMED_IP_ADDRESS/32 -d $ADDR/32 -p tcp
-m multiport --dport 3128 --syn -j ACCEPT
Qui vedo una regola che sembra scritta per consentire connessioni a squid, ma
non vedo alcuna regola di REDIRECT.
Impostano il proxy a mano?
Per finire, delle regole in POSTROUTING
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s $WIFILAN -d $MIO_SERVER_DNS/32 \
-p udp --dport 53 -j MASQUERADE
$IPTABLES -t nat -I POSTROUTING -o $EXTIF -s $FRAMED_IP_ADDRESS/32 -p
tcp -m multiport --dport 20,21,25,110,143,443 -j MASQUERADE
No, direi proprio che il ruleset non può essere solo questo.

 No, direi proprio che il ruleset non può essere solo questo.
In che senso non può essere solo questo?
Tralasciando input e output che non servono a niente in questo caso,
il ruleset è solo questo qui.
Concordo con il problema della FORWARD, che risolvo ora, ma (a
memoria) non ha funzionato nemmeno aprendo tutta la forward a tutto il
mondo.

 
Occhio che il multiport ha un limite massimo di 15 porte e solo per udp
e tcp, non so se risolvi qualcosa... ma non avendo letto per niente il
thread non mi pronuncio piu' di tanto.
Bye Zelo

 thread non mi pronuncio piu' di tanto.
15 porte?
Ecco, questo non lo sapevo, comunque non il mio caso. Ho solo 6 porte.