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

Grazie all'amicone Raziel abbiamo tirato su un serverino Debian Linux
composto da n. 2 schede di rete (eth0= router in dhcp; eth1= su switch
di rete). Sono stati installati Samba, dhcp3-server e Squid.
Un aiutino per inserire delle regole per un ottimo firewall, tenendo
conto che allo swithc di rete (eth1) sono collegati PCWINZOZZ che
girano i seguenti programmi: msn, skype, navigazione internet e outlook
express)
Attualmente sono previste le seguenti righe:
#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Trasparent Proxy
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i
eth1 -p tcp --dport 3128
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED
-o eth0 -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i
eth0 -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -o
eth1 -p tcp --sport 80
Un aiutino per implementarle da riportare con un copia ed incolla visto
che non sono molto bravo di Linux (a proposito: ho appena intrapreso un
corso per l'approfondimento). Grazie

 corso per l'approfondimento). Grazie
Non si siamo: meglio studiare ancora. :-) In alternativa, a Raziel avevo
postato il mio script generico: non e' certo il non-plus-ultra, ma penso
che per partire sia un po' meglio... ma anche quello e' poco utile se
non son chiari i principi che ci stanno dietro.  ;-)
bye G.L.

 cima alla catena, per tutte le connessioni, cioe':
 > iptables -A INPUT -j ACCEPT -m state --state NEW -i eth1 -p tcp \
 > --dport 3128
Errata corrige:
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i \
eth1 -p tcp --dport 3128
bye G.L.

 --dport 3128
Errata corrige:
iptables -A INPUT -j ACCEPT -m state --state NEW -i eth1
bye G.L.

Grazie Renaissance, comunque lo Squid funzionava con quelle 5 regole.
Tu mi consigli di metterne una sola cioè: iptables -A INPUT -j ACCEPT
-m state --state NEW -i eth1  al posto di quelle cinque del trasparent
proxy.
Puoi suggerirmi delle regole per l'attivazione del firewal per il
bloccaggio dall'esterno di eventuali intrusioni. Grazie.
Aspetto, la tua risposta.

scusa RENEISSANCE siccome sono nuovo anche qui dei newsgroup ho fatto
una stampa e ho capito, penna in mano, i tuoi suggerimenti. Li metto in
atto. Nel frattempo puoi darmi un consiglio scrivendomi alcune regole
di iptables al fine di attivare un buon firewall ?

 di iptables al fine di attivare un buon firewall ?
Ti consiglio di scaricarti ed utilizzare shorewall
(
http://shorewall.net/
) che genera regole fatte molto bene. Se poi vuoi
imparare a scriverle di tuo pugno, leggendo quello che viene fatto da
shorewall hai un ottimo testo di studio.
-- 
Flavio Visentin
Membro del CICAP
Comitato Italiano per il Controllo delle Affermazioni di P4

 -o eth0 -p tcp --dport 80
Come sopra: solo NEW,
In definitiva adesso le regole del proxy trasparente sono:
# Trasparent Proxy
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
iptables -A INPUT -j ACCEPT -m state --state NEW -i eth1
iptables -A OUTPUT -j ACCEPT -m state --state NEW -o eth0
Sembra funzionare bene. Sono giuste?
Oppure devo aggiunge ad -A OUTPUT dopo eth0 -p tcp --dport 80 ????
(cioè iptables -A OUTPUT -j ACCEPT -m state --state NEW -o eth0 -p tcp
--dport 80 )?????
Grazie.

 iptables -A INPUT -j ACCEPT -m state --state NEW -i eth1
Ri-corrige:
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
bye G.L.

 iptables -A OUTPUT -j ACCEPT -m state --state NEW -o eth0
Io non mi faccio particolari paranoie, pertanto spesso lascio
l'output completamente aperto. Di solito quando lo si apre
selettivamente, e l'unico motivo che mi viene in mente e' che se ti
hanno hackerizzato il firewall ma ancora non sono riusciti a fare root
escalation, limiti le possibilita' che lo usino per connettersi
all'esterno.
Se vuoi adottare una apertura selettiva dell'output, leggi il file di
configurazione di squid, e apri una ad una le porte e/o gli intervalli
di porte con cui e' configurato squid. Minimo, si deve aprire http e
https.
bye G.L.

Renaissance ha scritto:

Ri-corrige:

alla fine della tua errata corrige devo aggiungere eth1 -p tcp \
--dport 3128  giusto?
cioè la stringa corretta sarebbe: iptables -A INPUT -j ACCEPT -m state
--state ESTABLISHED,RELATED eth1 -p tcp \
--dport 3128 al posto di  iptables -A INPUT -j ACCEPT -m state --state
NEW -i eth1 
Giusto ?

 Giusto ?
O santiddio, NO! Ho gia' detto (leggi con piu' attenzione...) che ne
basta una PER TUTTE LE CONNESSIONI, in cima alla catena. Poi, "liberi"
quello che vuoi in regole di accettazione con --state NEW -p tcp/udp
--dport <porta>.
bye G.L.

 basta una PER TUTTE LE CONNESSIONI,
Se non fossi stato chiaro, in altre parole: UNA SOLA REGOLA, valida
per TUTTO il traffico gia' stabilito e/o relativo. UNA SOLA, IN
ASSOLUTO.
bye G.L.

 ASSOLUTO.
Si ma una sola in assoluto, vero, per ogni catena, in out e fw.
Comunque, siamo sempre alle solite.
Se uno NON si legge l'howto e non capisce che cosa è la stateful inspection,
potrai ripetere le stese cose per anni..
Io rimando al solito tuttologo (o tuttogooglogo) per i relativi documenti.
Max

Scusatemi tanto se faccio fatica a comprendere ma sono un principiante.
Mi sono confuso con gli errata corrige caro Renaissance.
Grazie per la comprensione e l'aiuto.
Per finire il proxy l'ho così configurato:
# Trasparent Proxy
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT
--to-port 3128
iptables -A INPUT -j ACCEPT -m state --state NEW -i eth1 -p tcp -dport
3128
iptables -A OUTPUT -j ACCEPT -m state --state NEW -o eth0
Spero tanto che sia giusto e scusatemi di nuovo.
Ciao

 Io rimando al solito tuttologo (o tuttogooglogo) per i relativi documenti.
Vabbe', concordo, ma io sono cocciuto, e spero che il mio contributo
aiuti a capire. Poi, piu' che discutere, invitare a leggersi la
documentazione, SOPRATTUTTO avere PRIMA le idee MOLTO chiare sul tcp/ip,
che e' indispensabile, e postare uno script di esempio col quale fare
esperimenti...
bye G.L.

 Spero tanto che sia giusto e scusatemi di nuovo.
Cosi' direi che va bene. A patto naturalmente che le policy siano tutte
di default in DROP, e la famosa regoletta per established e related in
cima ad ogni catena input, output, forward. Nonche' in cima allo script
ci sia il flush (...repulisti) di tutto, in modo che quando rilanci lo
script le regole non si accumulino, chiedendoti poi perche' non funga un
piffero dopo le modifiche...
bye G.L.

ho messo il tuo script in un file e l'ho stampato. Spero che con
l'aiuto di Raziel possiamo adattarlo al mio serverino.
Ti ringrazio davvero per la Santa Pazienza. Sei un amicone. Buon fine
settimana.
P.S.: mi sono permesso di inviarti una email. Ti chiedo perdono se
chiedo troppo nella email.
Ciaoo

Grazie The_Zipman per il tuo consiglio di utilizzare shorewall ma per
il momento preferisco il testuale per capire al cuore il funzionamento
degli applicativi. Ciao