PDA

View Full Version : Nat


Pang
02-07-2003, 19:52
Ciao a tutti,

dopo essermi letto parecchia documentazione su netfilter non riesco a venire a capo di un piccolo dubbio.
Sulla macchina c'è installata Debian 3.0r1 che fà da firewall tra la lan e internet, con in mezzo un router di fastweb.
Questo è il file di configurazione di iptables (semplicissimo):

#!/bin/bash

# pulizia delle catene standard
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

# abilitazione del nat
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# se un pacchetto non si può associare a una regola, questo dev'essere buttato via
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# creazione di nuove catene
iptables -N laninet
iptables -N inetlan
iptables -N lanfw
iptables -N fwlan
iptables -N fwinet
iptables -N inetfw

# inserimento delle nuove catene in quelle principali, con la specificazione dell'interfaccia
iptables -A FORWARD -i eth0 -o eth1 -j inetlan
iptables -A FORWARD -i eth1 -o eth0 -j laninet
iptables -A INPUT -i eth1 -j lanfw
iptables -A OUTPUT -o eth1 -j fwlan
iptables -A INPUT -i eth0 -j inetfw
iptables -A OUTPUT -o eth0 -j fwinet

# dalla lan a internet
iptables -A laninet -p tcp --dport www -j ACCEPT
iptables -A laninet -p tcp --dport pop3 -j ACCEPT
iptables -A laninet -p tcp --dport smtp -j ACCEPT
iptables -A laninet -p tcp --dport ftp -j ACCEPT
iptables -A laninet -p tcp --dport 8383 -j ACCEPT
iptables -A laninet -p tcp --dport domain -j ACCEPT
iptables -A laninet -p udp --dport domain -j ACCEPT
iptables -A laninet -p tcp --dport domain -j ACCEPT
iptables -A laninet -p udp --dport domain -j ACCEPT
iptables -A laninet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A laninet -p tcp -j REJECT --reject-with tcp-reset
iptables -A laninet -p udp -j REJECT

# da internet alla lan
iptables -A inetlan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inetlan -p tcp -j REJECT --reject-with tcp-reset
iptables -A inetlan -p udp -j REJECT

# dalla lan al firewall
iptables -A lanfw -p tcp --dport ssh -j ACCEPT
iptables -A lanfw -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A lanfw -p tcp -j REJECT --reject-with tcp-reset
iptables -A lanfw -p ucp -j REJECT

# dal firewall alla lan
iptables -A fwlan -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A fwlan -p tcp -j REJECT --reject-with tcp-reset
iptables -A fwlan -p udp -j REJECT

# da internet al firewall
iptables -A inetfw -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A inetfw -p tcp -j REJECT --reject-with tcp-reset
iptables -A inetfw -p udp -j REJECT

# dal firewall a internet
iptables -A fwinet -p tcp --dport www -j ACCEPT
iptables -A fwinet -p tcp --dport domain -j ACCEPT
iptables -A fwinet -p udp --dport domain -j ACCEPT
iptables -A fwinet -p tcp --dport domain -j ACCEPT
iptables -A fwinet -p udp --dport domain -j ACCEPT
iptables -A fwinet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A fwinet -p tcp -j REJECT --reject-with tcp-reset
iptables -A fwinet -p udp -j REJECT

Vorrei riuscire ad aggiungere una regola nella catena inetlan in modo che dall'esterno verso l'interno io possa collegarmi a una macchina della rete con ssh. Aggiungendo una regola del tipo iptables -A inetlan -p tcp --dport ssh -j ACCEPT, linux dovrebbe far passare tutte le richieste che da internet vanno alla lan sulla porta 22 tcp, e in questo caso dovrei farmi nattare da fastweb l'ip interno di quella macchina con uno pubblico?

malanaz
02-07-2003, 22:15
Non conosco bene la configurazione del firewall ma cmq essendo invisibile dall'esterno di fw non puoi essere accessibile. Io ho lo stesso problema (ma non ho un firewall).

Pang
03-07-2003, 07:49
Originally posted by "malanaz"

essendo invisibile dall'esterno di fw non puoi essere accessibile

E' proprio questo il punto :) , per questo chiedevo se nattando l'indirizzo ip della macchina interna (da privato a pubblico) e mettendo una regola per cui le richieste di passare sulla porta 22 devono essere accettate, poteva funzionare.
Teoricamente dovrebbe funzionare, però per sicurezza volevo una conferma da voi.

Ciao

r3nzo
03-07-2003, 08:34
non so come funzioni il discorso di fastweb pero' se sei nattato non credo tu sia accessibile dall'esterno della rete di fastweb..
in secondo luogo se tu natti una tua macchina interno poi il redirect dall'esterno verso l'interno lo devi fare indicandogli l'indirizzo privato della macchina che ha sshd. Senno come fa a sapere iptables quale macchina ha sshd ?
sempre che ho capito bene.

kingv
03-07-2003, 08:42
Originally posted by "Pang"

Ciao a tutti,


Vorrei riuscire ad aggiungere una regola nella catena inetlan in modo che dall'esterno verso l'interno io possa collegarmi a una macchina della rete con ssh. Aggiungendo una regola del tipo iptables -A inetlan -p tcp --dport ssh -j ACCEPT, linux dovrebbe far passare tutte le richieste che da internet vanno alla lan sulla porta 22 tcp, e in questo caso dovrei farmi nattare da fastweb l'ip interno di quella macchina con uno pubblico?



iptables -A PREROUTING -i eth_esterna -p tcp -m tcp --dport 11111 -j DNAT --to-destination ip_interno:22

questa e' la regola sul mio, modificala per il tuo caso.

naturalemente funziona se sei su un'altra macchina sulla rete fastweb o se hai un ip esterno pubblico

ilsensine
03-07-2003, 09:10
<edit>
Niente ho sbagliato :cool:

Pang
03-07-2003, 10:12
Originally posted by "kingv"





iptables -A PREROUTING -i eth_esterna -p tcp -m tcp --dport 11111 -j DNAT --to-destination ip_interno:22

questa e' la regola sul mio, modificala per il tuo caso.

naturalemente funziona se sei su un'altra macchina sulla rete fastweb o se hai un ip esterno pubblico

Mhh, quindi il pc destinatario interno della rete deve comunque avere un ip pubblico visibile da internet?

kingv
03-07-2003, 12:16
Originally posted by "Pang"



Mhh, quindi il pc destinatario interno della rete deve comunque avere un ip pubblico visibile da internet?

no no, il pc interno no, quello esterno si' (quello connesso direttamente a internet).

Pang
03-07-2003, 15:00
Originally posted by "kingv"



no no, il pc interno no, quello esterno si' (quello connesso direttamente a internet).

Perfetto, grazie mille, era proprio quello che mi serviva! Un'ultima cosa e poi non ti distrubo più: devo anche modificare le regole di nat?
Nel senso: io ho specificato una sola regola nella catena postrouting, valida per l'output di eth0 (l'interfaccia connessa verso l'esterno), quindi suppongo che ne debba fare una che si appenda alla catena prerouting di eth0, quello che ho detto potrebbe essere corretto?
Ciao

kingv
03-07-2003, 15:01
Originally posted by "Pang"



Perfetto, grazie mille, era proprio quello che mi serviva! Un'ultima cosa e poi non ti distrubo più: devo anche modificare le regole di nat?
Nel senso: io ho specificato una sola regola nella catena postrouting, valida per l'output di eth0 (l'interfaccia connessa verso l'esterno), quindi suppongo che ne debba fare una che si appenda alla catena prerouting di eth0, quello che ho detto potrebbe essere corretto?
Ciao

e' corretto.
nel mio (a causa della mia pigrizia) utilizzo direttamente le catene PRE e POSTROUTING ma la maniera migliore e' quella che usi tu, e' piu' manutenibile ;)

Pang
03-07-2003, 20:15
Originally posted by "kingv"



e' corretto.
nel mio (a causa della mia pigrizia) utilizzo direttamente le catene PRE e POSTROUTING ma la maniera migliore e' quella che usi tu, e' piu' manutenibile ;)

Grazie mille per il comlimento. In effetti mi ero perso il piccolissimo particolare che la tua regola va ad appendersi direttamente a prerouting!
Ti ringrazio molto per avermi chiarito le idee.

Ciao
:)