Newsgroup: it.comp.os.linux.iniziare
Titolo: [DEBIAN]Iptables: qualche dilemma...

Ciao a tutti.
Ho bisogno di qualche delucidazioni.
Ecco qui un piccolo script che raccoglie la maggior parte delle regole 
di un firewall che dovrò amministrare.
Il mio compito è di apportare modifiche necessarie per adattarlo 
all'infrastruttura di rete.
EXT_INTERFACE="eth0"
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_ftp_nat
iptables -I INPUT -p tcp -i $EXT_INTERFACE -m state -s 0/0 --dport 
1:65535 --state INVELID,NEW -j DROP
iptables -I INPUT -p icmp -i $EXT_INTERFACE -m state -s 0/0 --state 
INVALID,NEW -j DROP
iptables -I INPUT -p udp -i $EXT_INTERFACE -m state -s 0/0 --state 
INVALID,NEW -j DROP
iptables -A POSTROUTING -t nat -s 
192.168.0.0/24
 -j MASQUERADE
ipatbles -t nat -A PREROTING -p tcp -m multiport -s 192.168.0.0./24 
-dports 20,21,22,25,80,110,443 -j ACCEPT
ipatbles -t nat -A PREROTING -p udp -s 
192.168.0.0/24
 -dport 53 -j ACCEPT
ipatbles -t nat -A PREROTING -s 
192.168.0.0/24
 -j DROP
Il mio problema è che nella LAN ho MAIL SERVER che scarica le mail e le 
invia e un WEB SERVER che deve essere visualizzabile in Internet.
Che regola devo aggiungere o modificare per far funzionare i due Server?
Grazie a tutti.

 Che regola devo aggiungere o modificare per far funzionare i due Server?
Devi fare un port forwarding:
iptables -t nat -A PREROUTING -i $EXT_INTERFACE -p tcp --destination-port 25
-j DNAT --to-destination $IP_MAIL_SERVER
Questo per permettere al flusso di mail in entrata dall'esterno di giungere
al tuo mail server (quelle del flusso in uscita già possono uscire
dall'accept sulla catena forward data prima)
iptables -t nat -A PREROUTING -i $EXT_INTERFACE -p tcp --destination-port 80
-j DNAT --to-destination $IP_WEB_SERVER
Questo per permettere connessioni in entrata al server web
A questo punto manca ancora qualcosa: avendo impostato a DROP la catena di
forward, dovremo mettere una riga come:
iptables -t filter -A FORWARD -i $EXT_INTERFACE -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT
altrimenti i pacchetti trattati in prerouting si bloccano nella catena di
forward e non arriveranno mai ai server (NEW,RELATED,ESTABLISHED), oltre al
fatto che ai client di rete non arriveranno mai le risposte alle loro
connessioni (RELATED,ESTABLISHED).
Ed inoltre:
iptables -t filter -A FORWARD -s $IP_WEB_SERVER -m state --state
RELATED,ESTABLISHED -j ACCEPT
altrimenti il server web ricevera' i pacchetti, ma non potra' rispondere
(perché la porta random che ha come destinazione il client connesso non è
tra quelle bypassate precedentemente).
Totale: prima di tutto studiarsi bene sto documento:
http://iptables-tutorial.frozentux.net/iptables-tutorial.html
e poi mettere uno script di questo genere:
EXT_INTERFACE="ppp0"
INT_INTERFACE=...
IP_WEB_SERVER=...
IP_MAIL_SERVER=...
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_ftp_nat
iptables -t filter -F
iptables -t nat -F
iptables -t mangle -F
iptables -t filter -X
iptables -t nat -X
iptables -t mangle -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT  #sono le connessioni in uscita che partono
esclusivamente dal firewall
iptables -t nat -A PREROUTING -i $EXT_INTERFACE -p tcp --destination-port 25
-j DNAT --to-destination $IP_MAIL_SERVER
iptables -t nat -A PREROUTING -i $EXT_INTERFACE -p tcp --destination-port 80
-j DNAT --to-destination $IP_WEB_SERVER
iptables -t filter -A INPUT -i $INT_INTERFACE -j ACCEPT
iptables -t filter -A INPUT -i $EXT_INTERFACE -m state --state
RELATED,ESTABLISHED -j ACCEPT
ipatbles -t filter -A FORWARD -p tcp -m multiport -s 192.168.0.0./24 -dports
20,21,22,25,80,110,443 -j ACCEPT
ipatbles -t filter -A FORWARD -p udp -s 
192.168.0.0/24
 -dport 53 -j ACCEPT
ipatbles -t filter -A FORWARD -p icmp -s 
192.168.0.0/24
 -j ACCEPT
iptables -t filter -A FORWARD -i $EXT_INTERFACE -m state --state
NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -s $IP_WEB_SERVER -m state --state
RELATED,ESTABLISHED -j ACCEPT
iptables -A POSTROUTING -t nat -o $EXT_INTERFACE -j MASQUERADE #Questa per
ultima così attiviamo la connettività solo quando tutte le regole sono già
caricate.
Ciao, GenTLe
PS: ricontrolla tutto, mi raccomando! Visto l'ora sia mai che abbia perso
via qualcosa di importante.
-- 
GenTLe ...di Varese, provincia.
TL1000S + Mito 125 per la pista
La mia HP: 
http://digilander.iol.it/thegentle/index.htm
The security business can be scary. If you are the firewall manager, watch
your back.


Grazie per la tua cordiale attenzione.
Non riesco a capire perchè la chain di PREROUTING non va bene.
Tu pensi che lo script che è stato creato da un utente che ha 
abbandonato il firewall non è corretto?
Questo firewall è dietro un Router di Fastweb quindi ha un ip statico 
forwardato da loro per essere visibile su internet con un ip pubblico.
Poi non riesco a capire perchè hai preso in considerazione 
"filter","mangle".....???!!!!!!****
Io adesso provo a copiarmi questo script e vedo se funziona.
Ma su Debian dove lo devo inserire perchè parta al boot?
Adesso mi vado a studiare iptables per fare modifiche future.
Grazie 1000.

 Grazie 1000.
Niente, ciao, Alex


 risponda ;-)
Ma scusa se nello script determino le schede di rete in questo modo:
EXT_INTERFACE="eth0"
INT_INTERFACE="eth1"
il comando che posso impostare è il seguente:
iptables -i $EXT_INTERFACE -P INPUT DROP
lascierei l'interfaccia eth1 libera di attraversare il firewall?
Mi hai mandato in confusione.
Ciao

 lascierei l'interfaccia eth1 libera di attraversare il firewall?
Non puoi impostare dei match in fase di dichiarazione delle politiche di una
catena. Per fare quello che hai scritto sopra in maniera corretta devi dare
due comandi:
iptables -P INPUT DROP #blocca tutto il traffico diretto in ingresso al
firewall
iptables -t filter -A INPUT -i $INT_INTERFACE -j ACCEPT #accetta tutti i
pacchetti in arrivo al firewall dalla interfaccia interna.
