glug:firewall: questo rompicapo

Paolo Gaggini glug@genova.linux.it
Sat, 26 Apr 2003 22:07:55 +0200


Giocando con iptables mi sono crollate delle certezze.
Ecco la situazione: Domuegressio è collegato al modem ADSL e quindi a 
Internet, inoltre tramite un'altra scheda di rete alla LAN interna e 
funziona da gateway.
Ho impostato il forwarding per il masquerading dei client e il port 
forwarding per i vari servizi su Sempervirens. Fin qui ok.
Il problema è quando cerco di costruirmi da solo il firewall.
Ho provato a impostare la catena INPUT a DROP, con l'effetto che 
Domuegressio diventa totalmente irraggiungibile. Il forwarding e il 
port forwarding invece continuano a funzionare bene. Perfetto. Il passo 
successivo è aprire le porte ssh e sunrpc, che uso per collegarmi al 
server in remoto. Il comando:
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
per esempio, dovrebbe aprirmi la porta ssh MA invece non funziona, 
sebbene con il comando iptables -L la regola sembra essere stata 
recepita correttamente.
Ho provato allora a impostare di nuovo la policy di INPUT ad ACCEPT e ad 
aggiungere il comando:
iptables -A INPUT -p tcp -j REJECT
In questo modo la policy è ACCEPT, ma di fatto con quel filtro non passa 
nulla sul solo tcp. I ping, infatti, funzionano.
La porta 22, comunque, rimane totalmente chiusa. Ho provato anche a 
invertire l'ordine delle regole: prima ho messo la regola di apertura 
di ssh, poi la chiusura di tutto il tcp. E viceversa. Ma la porta 22 
rimane sempre e comunque chiusa. 

Impostando la policy ad ACCEPT potrei chiudere tutte le porte tranne la 
22 con un paio di comandi, ma a parte che un lavoro del genere non mi 
pare molto furbo, mi chiedo allora a cosa serva la "policy". Leggendo 
l'iptables-howto è scritto chiaramente che prima vengono valutate le 
regole di filtro, poi se nessuna matcha allora il pacchetto fa la fine 
indicata dalla policy. Ovvero: impostando INPUT a DROP, tutti i 
pacchetti sono scartati a meno che una regola di filtro non dica il 
contrario. Che è proprio quello che volevo fare con la porta 22. 

Com'è la faccenda?

Altro aspetto didatticamente interessante: il classico filtro su 
microsoft.com. 

Situazione: regola di iptables su Domuegressio, mentre io navigo con 
Cerebellum (la mia workstation, che accede a internet tramite 
Domuegressio).
Se filtro microsoft.com sulla catena di INPUT non ho alcun effetto, 
mentre se lo filtro sulla catena di FORWARD funziona. E' suggestivo 
impostare e cancellare la regola relativa di REJECT durante la 
navigazione: con un comando da console riesco a bloccare o permettere 
la navigazione sui siti Microsoft in diretta!!

Però, mi chiedo: poichè i pacchetti tcp:80 che arrivano da microsoft.com 
sono in ingresso, cioè in INPUT, perchè il filtro su INPUT non funziona 
mentre su FORWARD si?? Ho letto sull'iptables-howto che i pacchetti in 
forward comunque passano prima da INPUT (o forse ho capito male?)

Più che la catena di INPUT, nel caso microsoft, comunque credo mi 
convenga filtrare quella di OUTPUT..... soprattutto usando client 
windows, o sbaglio? ;-) Domandona: se da un mio pc nella lan parte un 
pacchetto verso microsoft questo viene visto come OUTPUT o come 
FORWARD? 

(ma perchè non c'è un bel sole caloroso così oggi facevo il barbecue 
invece di torturarmi così??? :))))))

----------
Paolo Gaggini
gse@libero.it  --   email pubblica
http://www.gseserver.net  -- GSE Network
http://www.biologiafacile.net -- Portale Universitario
http://www.linux-at-home.net   -- LINUX@HOME

#220216 Linux Registered User