Newsgroup: it.comp.os.linux.sys
Titolo: Destination NAT da processi locali

Redhat 7.2, 3 schede di rete (eth0: wan, eth1: lan, eth2: dmz)
Ho effettuato con successo un DNAT su un paio di servers sulla dmz, il
problema che mi pongo adesso e' che un qualsiasi processo locale sul
firewall, come ad esempio squid, riesce naturalmente ad accedere ad un
server della dmz chiamandolo con l'ip privato, ma non riesce ad accedere
allo stesso server chiamandolo con l'ip pubblico "nattato" verso il
predetto inidirizzo privato, il tutto con le correnti regole di
filtraggio nella catena di input, che riporto di seguito (output di
iptables-save). Il DNAT dall'esterno va naturalmente che e' una
meraviglia.
Notare che ho replicato le medesime regole del destination nat nella
catena PREROUTING sulla catena OUTPUT, come consigliato nella
documentazione di 
netfilter.samba.org
, proprio al fine di far funzionare
il dnat anche per le richieste generate dai processi locali del
firewall, ma senza successo. Dove sbaglio? (vi chiedo scusa, sia per la
lunghezza del post, sia perche' non sono ancora molto smaliziato con
iptables, seppure penso di aver compreso i concetti base...)
eth0  x.y.z.w  (wan)
eth0:0  h.j.k.l (wan, indirizzo pubblico server nattato su
192.168.0.183)
eth1  10.10.10.182   (lan, rete 
10.10.10.0/24
)
eth2  192.160.0.182 (dmz, rete 
192.168.0.0/24
)
# Generated by iptables-save v1.2.3 on Wed Mar 27 12:13:35 2002
*mangle
:PREROUTING ACCEPT [2164470:1167673619]
:OUTPUT ACCEPT [608587:332618858]
-A PREROUTING -p tcp -m tcp --dport 23 -j TOS --set-tos 0x10
-A PREROUTING -p tcp -m tcp --dport 21 -j TOS --set-tos 0x10
-A PREROUTING -p tcp -m tcp --dport 20 -j TOS --set-tos 0x08
-A PREROUTING -p tcp -m tcp --dport 80 -j TOS --set-tos 0x08
-A PREROUTING -p tcp -m tcp --dport 53 -j TOS --set-tos 0x04
-A PREROUTING -p tcp -m tcp --dport 110 -j TOS --set-tos 0x02
-A PREROUTING -p tcp -m tcp --dport 25 -j TOS --set-tos 0x02
-A PREROUTING -p tcp -m tcp --dport 119 -j TOS --set-tos 0x02
COMMIT
# Completed on Wed Mar 27 12:13:35 2002
# Generated by iptables-save v1.2.3 on Wed Mar 27 12:13:35 2002
*filter
:INPUT DROP [1:40]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28:1189]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -s 127.0.0.1 -j ACCEPT
-A INPUT -s 10.10.10.7 -d 10.10.10.182 -p tcp -m tcp --dport 23 -j
ACCEPT
-A INPUT -s 10.10.10.7 -d 10.10.10.182 -p tcp -m tcp --dport 21 -j
ACCEPT
-A INPUT -s 10.10.10.7 -d 10.10.10.182 -p tcp -m tcp --dport 20 -j
ACCEPT
-A INPUT -i eth1 -p tcp -m tcp --dport 67 -j ACCEPT
-A INPUT -i eth1 -p udp -m udp --dport 67 -j ACCEPT
-A INPUT -d 10.10.10.182 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -d x.y.z.w -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p tcp -m tcp
--dport 110 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p udp -m udp
--dport 110 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d x.y.z.w -p tcp -m tcp --dport
110 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d x.y.z.w -p udp -m udp --dport
110 -j ACCEPT
-A INPUT -s 50.40.20.10 -d x.y.z.w -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -s 50.30.20.10 -d x.y.z.w -p udp -m udp --dport 110 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p tcp -m tcp
--dport 3128 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d x.y.z.w -p tcp -m tcp --dport
3128 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p tcp -m tcp
--dport 53 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p udp -m udp
--dport 53 -j ACCEPT
-A INPUT -s 
192.168.0.0/255.255.255.0
 -d 192.168.0.182 -p tcp -m tcp
--dport 53 -j ACCEPT
-A INPUT -s 
192.168.0.0/255.255.255.0
 -d 192.168.0.182 -p udp -m udp
--dport 53 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p tcp -m tcp
--dport 515 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d 10.10.10.182 -p udp -m udp
--dport 515 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d x.y.z.w -p tcp -m tcp --dport
515 -j ACCEPT
-A INPUT -s 
10.10.10.0/255.255.255.0
 -d x.y.z.w -p udp -m udp --dport
515 -j ACCEPT
COMMIT
# Completed on Wed Mar 27 12:13:35 2002
# Generated by iptables-save v1.2.3 on Wed Mar 27 12:13:35 2002
*nat
:PREROUTING ACCEPT [146089:15222279]
:POSTROUTING ACCEPT [25147:1589636]
:OUTPUT ACCEPT [24191:1542928]
-A PREROUTING -d h.j.k.l -p tcp -m tcp --dport 80 -j DNAT
--to-destination 
192.168.0.183:80
-A PREROUTING -d h.j.k.l -p tcp -m tcp --dport 21 -j DNAT
--to-destination 
192.168.0.183:21
-A PREROUTING -d h.j.k.l -p tcp -m tcp --dport 20 -j DNAT
--to-destination 
192.168.0.183:20
-A PREROUTING -d h.j.k.l -p icmp -j DNAT --to-destination 192.168.0.183
-A POSTROUTING -s 
10.10.10.0/255.255.255.0
 -o eth0 -j MASQUERADE
-A OUTPUT -d h.j.k.l -p tcp -m tcp --dport 80 -j DNAT --to-destination
192.168.0.183:80
-A OUTPUT -d h.j.k.l -p tcp -m tcp --dport 21 -j DNAT --to-destination
192.168.0.183:21
-A OUTPUT -d h.j.k.l -p tcp -m tcp --dport 20 -j DNAT --to-destination
192.168.0.183:20
-A OUTPUT -d h.j.k.l -p icmp -j DNAT --to-destination 192.168.0.183
COMMIT
# Completed on Wed Mar 27 12:13:35 2002

meraviglia.
Ho avuto un problema simile  usando quel gioiellino di distribuzione
che e' "Linux Astaro" (
www.astaro.com
).
Probabilmente il problema  sta' nel fatto che la  macchina della DMZ
ti  risponde direttamente  con  il suo  IP (privato),  ma  il FW  si
aspetta come  IP quello che tu  gli hai detto di  contattare (Quello
pubblico).
Io ho  risolto con un  paio di SNAT  :-) Forse pure  un Masquerading
(Che in fondo e' un SNAT) selvaggio puo' essere d'aiuto.
-- 
 __
| _         "The Internet is slow, could you please reboot it ?"
|__|iambo   mailto:
gabr...@giambonini.com
 
www.giambonini.com

 (Che in fondo e' un SNAT) selvaggio puo' essere d'aiuto.
Non vorrei pero' fare ca**te che pregiudichino la sicurezza: ho fatto in
modo che la dmz non possa contattare la lan privata attraverso il firewall,
e che non possa neanche uscire su internet con un source-nat... al massimo
puo' risolvere i nomi, per poter fare un reverse dei client che la
contattano da internet passando per il destination-nat.
In questo modo, almeno cosi' ho pensato, se crackano un server gli viene in
salita uscire da li', a meno che da li' non riescano proprio a crackare il
firewall (il quale a questo punto e' abbastanza protetto anche da
"incursioni" provenienti dalla dmz...)
Grazie, a revoir.  ;-)
bye G.L.

funzia. Provo e ti faccio sapere.
Sono curioso ... hai trovato dove stava l'inghippo ? Forse in questi
casi uno sniffer farebbe comodo !
