Rafforzare il firewall del router. Impedire a XP di fare danni.

9 risposte [Ultimo messaggio]
Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

Dunque. Probabilmente questo thread potebbe essere unito a quello sulla "preparazione del server casalingo".. Ho una piccola rete con un gateway linux (dove ho il firewall) e due client (linux e winXP) che accedono attraverso il gateway. Fin'ora il mio firewall ha semplicemente bloccato (con iptables) la catena di INPUT e accettato solo le connessioni "related" e "established" nella catena FORWARD con sorgente nella rete locale.

Tuttavia, nessuna regola nella catena OUTPUT. Avendo un client con winXP, e un utente-utonto che lo utilizza e osservando le migliaia di chiamate sulle porte windowsiane bloccate in input dal mio firewall, mi chiedo se non sarebbe il caso di regolare anche l'USCITA del firewall.

Prima domanda.

Spulciando i vari how-to di iptables mi è sembrato di capire che per bloccare l'uscita di pacchetti indesiderati non dovrei agire sulla catena OUTPUT (almeno, non solo), ma soprattutto sulla catena FORWARD (che gestisce i pacchetti che passano ma NON si fermano nel gateway). Ho capito bene?

E in questo caso, come agire? potrebbe andare bene una regola del tipo:

iptables -A FORWARD -s ip.di.win -o ppp0 -p {tcp|udp} --dport numeroporta

E in particolare..Cosa bloccare (o meglio.. Cosa abilitare.. Visto che pensandoci bene sarebbe meglio disabilitare TUTTO ..ma con che comando?!? e abilitare solo alcuni porte specifiche..)?

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16

Ritratto di Madman
Madman
(Guru)
Offline
Guru
Iscritto: 19/12/2004
Messaggi: 2016

Premetto che la mia conoscenza di iptables è molto limitata poichè per la sua configurazione mi appoggio a Shorewall e che non so cosa significa la maggior parte della regola che tu hai proposto (come premesse non c'è male Thinking :-P), però penso che tu debba innanzitutto droppare o rifiutare su tutte le catene del server (lo so è un po' drastico Thinking) e poi aprire tutto pian pianino, forse andrebbe bene una cosa del genere (spero non ci siano errori grossolani Thinking):

iptables -A OUTPUT -P REJECT -v<br />iptables -A INPUT -P DROP<br />iptables -A FORWARD -P REJECT<br />iptables -A OUTPUT -j ACCEPT -o ppp0 -p tcp --dport 80/21/22/123/8118/9050/etc/etc<br />iptables -A INPUT -j ACCEPT -i ppp0 -p tcp --dport 80/21/22/123/8118/9050/etc/etc<br />iptables -A FORWARD -j ACCEPT -s $indirizzo_win -i eth0 -o ppp0 -p {tcp|udp} --dport 80/21/22/123/8118/9050/etc/etc

Link consigliato:
http://openskills.info/search.php?search=iptables

Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

Grazie Madman, sempre puntuale!

dunque.. Facciamo un po' le pulci alle tue regole Wink

Quote:

iptables -A OUTPUT -P REJECT -v
iptables -A INPUT -P DROP
iptables -A FORWARD -P REJECT

Domanda 1. C'e' una ragione per non mettere DROP al posto di reject? il "verbose" mode lo inserisci per vedere nel log i messaggi di "rifuto" delle porte? funziona così?

Grazie anche per il link, mi sembra davvero interessante!!

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16

Ritratto di Madman
Madman
(Guru)
Offline
Guru
Iscritto: 19/12/2004
Messaggi: 2016

Allora vediamo un po'...

Risposta 1: Io nella catena OUTPUT metto sempre REJECT per il semplice fatto che se un client tenta di accedere ad una porta bloccata riceve un messaggio che gli comunica l'impossibilità di compiere tale azione; per questo lo uso per OUTPUT per il quale le richieste partono da me. Wink

Invece nella catena INPUT e FORWARD, dove le richieste potrebbero non provenire da me, metto DROP che indica che la connessione viene semplicemente impedita senza alcuna notifica al richiedente della connessione, se mettessi REJECT ad INPUT e FORWARD le porte sarebbero pingabili ed il sistema sarebbe visibile in rete mentre con DROP si ottiene un certo grado di mascheramento.

Per quanto riguarda invece la flag -v l'ho aggiunta per il semplice fatto che io preferisco sapere TUTTO quello che fa il mio firewall ed avere un log prolisso. Wink

Spero di essere stato esauriente. Wink

P.S. Mi son accorto ora che ho messo REJECT a FORWARD che va quindi cambiato in DROP per i motivi di cui sopra. Wink

Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

Sembra che al tuo link i contenuti più succosi siano riservati a non meglio specificati "super user".. Alla faccia delle "open skills" Thinking

Sapete per caso quali --dport abilitare per una navigazione decente oltre a:
udp 53
tcp 80,443,25,110,21

Grazie ancora.

<EDIT>

dimenticavo, per ora le regole FORWARD risultano quindi:

Quote:

iptables -P FORWARD DROP # assing the default policy to drop for FORWARD chain
iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # accept all which come from your net and go to other net (like internet)
iptables -A FORWARD -s 192.168.0.99 -o ppp0 -j REJECT -v
iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p tcp --dport 80/443/25/110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # allow all established related packets.

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16

Ritratto di Madman
Madman
(Guru)
Offline
Guru
Iscritto: 19/12/2004
Messaggi: 2016

Lo so purtroppo è così e non so cosa farci anche perchè non ho capito neanche come "passare di livello". Thinking

Tornando a noi...

Non ho capito l'utilità della penultima regola. (Quante reti hai a casa? Thinking)

E non ho capito a cosa serve l'ultima. :-P

Riguardo alle porte da aprire riguardo le porte da aprire ho solo una curiosità, io DNS l'ho abilitato anche su TCP oltre che su UDP ho fatto male? Thinking

Forse questa regola qua potrebbe essere un po' "compromettente":

Quote:

iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # accept all which come from your net and go to other net (like internet)

Perchè devi ricordarti di settare minuziosamente le regole per ogni client. Wink

Ricordati di abilitare il protocollo ICMP (ping) poichè con quel tipo di policy su tutte le catene blocchi QUALUNQUE cosa vada verso qualunque cosa, quindi devi sbloccare il tutto manualmente, purtroppo non mi viene in mente nessuna regola che abiliti il ping da tutti gli host in una botta sola, forse...

Quote:

iptables -A OUTPUT -p ICMP -j ACCEPT
iptables -A FORWARD -p ICMP -o ppp0 -j ACCEPT #Quest'ultim però mi sembra che lasci la possibilità ad host locali e remoti di pingare i client e noi non vogliamo essere pingabili da remoto (a me da fastidio :-P)

Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

Dunque. Ecco il risultato finale (come sopra non andava, mancava la regola per settare le "multiport"):
<br />iptables -P FORWARD DROP # assing the default policy to drop for FORWARD chain<br />iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # accept all which come from your net and go to other net (like internet)<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -j REJECT -v<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p tcp -m multiport --dports 80,443,25,110,21 -j ACCEPT<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p udp --dport 53 -j ACCEPT<br />iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT<br />iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # allow all established related packets.

Per quanto riguarda il DNS mi sembra che sia solo UDP.. Se non XP non naviga so perché Wink

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16

Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

mmmm... Ho inserito anche la regola:

ptables -A FORWARD -j LOG --log-prefix &quot;forward drop:&quot;

ma non sono sicuro se fa quel che deve fare.. Forse dovrei cambiare la regola di policy.. Ora ci lavoro.

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16

Ritratto di Madman
Madman
(Guru)
Offline
Guru
Iscritto: 19/12/2004
Messaggi: 2016

Così però logghi tutto quello che passa per la catena FORWARD e non solo ciò che viene droppato forse la regola "corretta" è questa, quando vai a definire la catena:

iptables -A FORWARD -P DROP -j LOG --log-prefix &quot;forward drop:&quot;

Anche se molto probabilmente non si possono definire un jump e una policy nella stessa regola contemporaneamente. Thinking

EDIT: Io darei un'occhiata a ULOG che se non sbaglio permette di gestire i log di iptables tramite PHP e MySQL. Wink

http://www.sistemistiindipendenti.org/modules/news/article.php?storyid=160

Ritratto di Pinguino
Pinguino
(Guru)
Offline
Guru
Iscritto: 14/09/2004
Messaggi: 2918

Dunque.. Elaborando ho ottenuto questo:

# if u want to share your internet securely. u must do that by FORWARD chain.<br />iptables -P FORWARD DROP # assing the default policy to drop for FORWARD chain<br />iptables -A FORWARD -s! 192.168.0.99 -j ACCEPT # accept all which come from your net and go to other net (like internet)<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p tcp -m multiport --dports 80,443,25,110,21 -j ACCEPT<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p udp --dport 53 -j ACCEPT<br />iptables -A FORWARD -s 192.168.0.99 -o ppp0 -p ICMP -j ACCEPT<br />iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT<br />iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # allow all established related packets.

e concludo con:

iptables -A FORWARD -s 192.168.0.99 -o ppp0 -j LOG --log-prefix &quot;forward drop:&quot;<br />iptables -A FORWARD -s 192.168.0.99 -j DROP

L'ultima regola è una "norma di chiusura" per evitare che scappi qualcosa..

iptables -A FORWARD -s! 192.168.0.99 -j ACCEPT Mi domando se quel "-s!" è giusto.. Tu che dici.

PS> Sei una miniera di link 8-)

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16