[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: problema regole iptables firewall di una lan



On Thu, Jan 1, 2009 at 23:43, itom <itom_bo@yahoo.it> wrote:
> ciao a tutti
> con iptables ho creato il seguente script per "la situazione" descritta da
> questa immagine:
>  . http://img33.picoodle.com/img/img33/3/1/1/f_lanm_1233f0a.jpg
>
> dove ho 2 sottoreti collegate dalle interfacce eth1 e eth2 dove:
> . eth1 abilitata alla navigazione diretta e possibilità di accesso remoto ad
> alcuni servizi (come mail, etc.. vedi porte aperte)
> . eth2 abilitata solamente alla navigazione tramite proxy impostato nel
> browser sulla porta 8080
>
> lo script lo potete trovare qui: http://pastebin.com/m416d8f6d
>
> Mentre per eth2 tutto funziona come vorrei (si naviga solo se si mette il
> proxy) per eth1 nonostante ho aperto le porte 80 443 etc.. e riesco solo a
> navigare via proxy (mentre io vorrei in questo caso un accesso diretto); in
> più non riesco a pingare il gateway .254
>
> Ovviamente c'è un errore ben piu' grave e per questo chiedo il vostro aiuto.
> Mi interessa in pratica solamente "uscire" e per adesso dall'interno della
> sottorete, in eth1 direttamente e in eth2 solo via proxy.
> grazie per l'attenzione

Allora, allora... Vedendo lo script ho visto alcuni "errori"; regole
che secondo me non fanno quello che dici te. Allora, la prima:

iptables -A FORWARD -i eth0 -o eth1 -m state --state
ESTABLISHED,RELATED -j ACCEPT
Questa permette il transito di pacchetti inerenti a connessioni già
stabilite da internet alla rete locale "libera". Però non permette il
contrario. Se io mi connetto ad un server HTTP, quando invio una
richiesta HTTP, questa non viene accettata dal firewall perché è sì
inerente alla connessione, ma va nel senso opposto. Per ottenere
quello che vuoi te devi aggiungerne un'altra che fa il contrario,
come:
iptables -A FORWARD -i eth1 -o eth0 -m state --state
ESTABLISHED,RELATED -j ACCEPT

Andando avanti, ho visto che non c'è nessuna regola in FORWARD, ma
tutte in input. Per esempio:
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 110 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 115 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --dport 995 -j ACCEPT
Queste regole permettono ai client in eth1 di collegarsi SOLO AL
FIREWALL su quelle porte, ma non consentono il transito di pacchetti
ad altri computer con destinatari quelle porte. A meno che tu non
abbia installato sul firewall un software che fa il redirect di queste
porte (però per quello devi inserire anche delle regole di DNAT).

Quindi, per fare funzionare tutto, devi sì aprire le porte del
firewall per esempio per SSH, per il proxy,... insomma, per i servizi
che ti servono, e poi aprire le porte per il transito di pacchetti.
Quindi puoi aggiungere una regola tipo
iptables -A FORWARD -i eth1 -p tcp -m multiport --dports
22,80,443,25,110,115,995 -j ACCEPT

E così dovrebbe funzionare tutto.

Spero di essere stato chiaro :-)
-- 
Dario Pilori
-Linux registered user #406515
-Debian GNU/Linux user

Reply to: