Newsgroup: it.comp.os.linux.sys
Titolo: iptables e proxy

Ciao,
il problema sta nel far sě che tutte le richieste dei client della mia rete
al posto che uscire direttamente in internet passino dal proxy squid.
Il proxy squid č su una macchina che ha un indirizzo locale ed uno in dmz (2
schede di rete) e funziona in quanto se setto manualmente nel browser
l'indirizzo della macchina, questo cache-a (voce del verbo cache-are).
Il problema č che nella macchina firewall (che sta nella dmz) ho provato a
fare :
iptables -v -A POSTROUTING -t nat -p tcp --dport 80 -j DNAT --to
<IP_DEL_PROXY>:8080
Ma non funziona !
 In teoria non gli ho detto "Prendi tutti i pacchetti tcp che ti arrivano
diretti ad una porta 80 e ridirigili sulla porta 8080 all'inidirizzo
<IP_DEL_PROXY>" ?
Chi mi chiarisce cosa dovrei fare e come ?
Thanks,
--
RaSca
http://web.tiscalinet.it/rascasoft


http://www.calogero.org/
Linux 2.4.18 on Slackware 8.0

 POSTROUTING -t nat -p tcp --dport 80 -j DNAT --to <IP_DEL_PROXY>:8080
Se il problema è dai client all'esterno è molto strano...
Se il problema lo "senti" solo dalla macchina che fa anche da firewall è dovuto
al fatto che devi usare anche la catena di output della tabella di nat.
Se il proxy è sulla stessa macchina del firewall ti conviene usare il target
redirect.
-- 
| /
| \Byte - Andrea Briganti - 
kbyt...@freemail.it
http://www.kbytesystem.fasturl.it
 ICQ: 40872731
*** Chi non ha rispetto non merita considerazione

 pacchetti in ingresso.
Effettivamente avevo sbagliato a scrivere. Era PREROUTING. Ad ogni modo non
va lo stesso. Mi inibisce l'accesso ad internet per tutti i pc. Nota che la
mia situazione si presenta cosě :
RETE LOCALE -> DMZ -> ROUTER
il ponte tra RETE LOCALE e DMZ č la macchina proxy che ha 2 schede una con
indirizzo relativo alla classe della rete locale, l'altra con indirizzo
relativo alla classe dmz. Il ponte tra DMZ e il ROUTER č la macchina
firewall. Nella stringa aggiunta ad iptables, ho provato a mettere come IP
del proxy sia l'indirizzo RETE LOCALE che DMZ, ma non č cambiato nulla.
Cosa potrei provare ancora ?
--
RaSca
http://web.tiscalinet.it/rascasoft

 redirect.
Il proxy non č la stessa macchina del firewall (ti riporto quello che ho
risposto a Denny):
RETE LOCALE -> DMZ -> ROUTER
il ponte tra RETE LOCALE e DMZ č la macchina proxy che ha 2 schede una con
indirizzo relativo alla classe della rete locale, l'altra con indirizzo
relativo alla classe dmz. Il ponte tra DMZ e il ROUTER č la macchina
firewall, anche questa macchina ha due schede, una con l'indirizzo relativo
alla classe dmz l'altra con IP statico (quello che per intenderci ci ha
assegnato telecom).
--
RaSca
http://web.tiscalinet.it/rascasoft

 <IP_DEL_PROXY>:8080
Non basta. In linea di massima serve un set di regole del tipo:
iptables -t nat -A PREROUTING -i eth0 -s ! <IP_DEL_PROXY> -p tcp
         --dport 80 -j DNAT --to <IP_DEL_PROXY>:8080
iptables -t nat -A POSTROUTING -o eth0 -s <lan> -d <IP_DEL_PROXY>
         -j SNAT --to <ip del firewall>
iptables -A FORWARD -s <lan> -d <IP_DEL_PROXY> -i eth0 -o eth0
         -p tcp --dport 3128 -j ACCEPT
Ma nel tuo caso, forse, sarebbe meglio fare la redirezione subito
sul proxy usando REDIRECT, senza passsare dal firewall.
Fabio

 sul proxy usando REDIRECT, senza passsare dal firewall.
Riusciresti a spiegarmi meglio questo concetto ? Non credo di capire (ad
ogni modo grazie e mille)...
--
RaSca
http://web.tiscalinet.it/rascasoft

 (ad ogni modo grazie e mille)...
Se il tuo proxy usa linux puoi usare netfilter per fare transparent
proxy senza passare dal firewall e quindi senza mettere in ascolto
squid sulla dmz. Sul proxy puoi fare:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
         --to-port 3128
e vivi piu' tranquillo. Ovviamente, con questa configurazione, c'e'
il problema delle connessioni http su porte <> 80, che ti obbliga
ad abilitare il routing sul proxy e fare forward verso internet per
ogni client o usare la regola sopra per ogni porta usata nei siti
che visitano i tuoi utenti.
Fabio

 che visitano i tuoi utenti.
Il mio proxy usa linux :) ed infatti mettendo quella benedetta regola
nell'iptables della macchina proxy sembra che questo funzioni. Dico "sembra"
perchè le richieste arrivano al proxy, ma ricevo un errore per qualsiasi
sito http cerco di consultare (non succede nulla infatti per gli ftp o https
o altro, solo http ossia porta 80). L'errore è questo :
ERROR
The requested URL could not be retrieved
While trying to retrieve the URL: /
The following error was encountered:
Invalid URL
Some aspect of the requested URL is incorrect. Possible problems:
Missing or incorrect access protocol (should be `http://'' or similar)
Missing hostname
Illegal double-escape in the URL-Path
Illegal character in hostname; underscores are not allowed
Che è sta cosa ?
Ad ogni modo grazie davvero, finalmente mi hai chiarito concetti oscuri...


 Illegal character in hostname; underscores are not allowed
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Fabio

Per me c'e' un errore di concetto. Il proxy non deve avere due
interfaccie di rete, ne basta una e deve essere nella DMZ.
Il proxy (come ogni altra macchina nella DMZ) deve essere
estremamente sicuro, eseguici una procedura di hardening
ed assicurati che tutte le porte siano chiuse tranne la 8080
(e la 22 per ssh).
Il firewall (se ne hai uno solo) deve essere tra la rete locale
e la DMZ, se ne hai un secondo, questo deve essere tra la DMZ
e internet.
In pratica il primo firewall lascia passare solo connessioni verso
internet, le filtra e le passa al proxy (transparent proxy per
l'esattezza), mentre il firewall esterno deve lasciare passare
solo connessioni dal proxy verso internet.
Questa sarebbe una configurazione standard, la tua mi sembra
un po' confusa.
Saluti,
Gianluca


> > POSTROUTING -t nat -p tcp --dport 80 -j DNAT --to <IP_DEL_PROXY>:8080
Trovato l'inghippo: il DNAT si fa solo nella catena di PREROUTING non
POSTROUTING

 httpd_accel_uses_host_header on
Settando questi parametri effettivamente qualcosa cambia, adesso mi dice
"accesso negato". Ho letto la parte di squid.conf che riguarda
httpd_accel_with_proxy più precisamente :
#  TAG: httpd_accel_with_proxy  on|off
#       If you want to use Squid as both a local httpd accelerator
#       and as a proxy, change this to 'on'. Note however that your
#       proxy users may have trouble to reach the accelerated domains
#       unless their browsers are configured not to use this proxy for
#       those domains (for example via the no_proxy browser configuration
#       setting)
In che senso si applica la frase "unless their browsers are configured not
to use this proxy for those domains" alla mia situazione ? Se ho capito bene
(spero di no) devo settare qualcosa in locale...Ma allora tutto il lavoro
che ho fatto a cosa serve visto che non volevo mettere mani sui client e
gestire tutte queste cose dal server ?
--
RaSca
http://web.tiscalinet.it/rascasoft

 gestire tutte queste cose dal server ?
Ho scritto cazzate. Sia lode a Fabio Panigatti per avermi illuminato su
questo genere di cose. Ora il Proxy funziona, è fuori dalla dmz (nel senso
che non ha nulla "aperto" verso questa) e applica le politiche che gli
definisco.
Grazie, grazie, grazie.
--
RaSca
http://web.tiscalinet.it/rascasoft

 interfaccie di rete, ne basta una e deve essere nella DMZ.
[...]
La sua non e' una configurazione cosi' inusuale (con la dmz a sandwich,
diciamo :)). L'unica cosa da tenere in mente e' che anche la macchina
che separa dmz e lan e' un firewall e che anche su questa devono essere
impostate delle acl per il traffico. Anzi, in alcune situazioni questa
topologia e' preferibile, in quanto vi e' una doppia protezione, specie
qualora l'accesso alla dmz dall'esterno (indesiderato, si intende)
avviene exploitando una vulnerabilita' del firewall. In questo caso, se
hai avuto l'accortezza di usare due firewall diversi nelle due macchine,
l'agressore non potra' entrare in lan usando la stessa vulnerabilita'.
Questo e' il pro. Il contro e' che hai due firewall da gestire invece di
uno solo.
Fabio

 politiche che gli definisco.
Mancherebbe ancora un'altra verifichina, di cui non si e' parlato
prima visto che il topic era il transparent proxy e non la dmz:
dovresti accertarti che il netfilter sul proxy sia configurato in
modo da fare il forward del traffico dalla dmz alla lan solo per
le connessioni iniziate dalla lan oppure di non farlo del tutto.
Fabio

 ha scritto nel messaggio
news:ecgX8.22936$K_4.5...@twister1.libero.it...

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
dove eth0 è la scheda che si "affaccia" sulla dmz. Giusto ?
--
RaSca
http://web.tiscalinet.it/rascasoft

 
beh, per dio... no!!!!!
casomai un
iptables -A FORWARD -s <LAN> -d ! <LAN> --dport 80,25,110,23 -m state 
--state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s ! <LAN> -d <LAN> -m state --state 
ESTABLISHED,RELATED -j ACCEPT
(buttate giů senza sapere quali devono essere i servizi che vuoi far 
arrivare alla dmz, bada, quindi adatta, adatta, adatta...)
la tua regola maschera solo il traffico, ma non filtra un accidenti...
-- 
Emanuele "SKULL" Balla
-----------------------------------------------------------------------
Besides, I think [Slackware] sounds better than 'Microsoft', don't you?
(By Patrick Volkerding)

 beh, per dio... no!!!!!
Ti ringrazio per il chiarimento, solo che Dio non centrava nulla (scritto in
minuscolo poi !)
--
RaSca
http://web.tiscalinet.it/rascasoft

 minuscolo poi !)
hmmm... posto che:
* è un'esclamazione che nemmeno un puritano convinto potrebbe definire 
blasfema o sconveniente
* non esiste un solo ed unico dio, vista l'abbondanza di religioni ( se 
poi tu sei convinto assertore dell'esistenza del tuo solo Dio sono fatti 
squisitamente tuoi)
ritengo il tuo commento (o sbotto, come lo vuoi definire) assolutamente 
fuori luogo e non in tono con l'argomento o il tono del thread (come 
d'altro canto questa risposta, ok...)
saluti


> [..] Il contro e' che hai due firewall da gestire invece di
 > uno solo.
Sono molto d'accordo. Anche perche' hai detto esattamente quello che
avevo scritto io :-)
Saluti,
Gianluca

 avevo scritto io :-)
Che idiota: avevo letto male. Vabbe', ho sprecato un po' di banda :)
Fabio

The Skull wrote:
 > Besides, I think [Slackware] sounds better than 'Microsoft', don't
 > you?
 > (By Patrick Volkerding)
geniale :)


 d'altro canto questa risposta, ok...)
Ti prego, non fare ragionamenti astrusi interpretando due righe di quello
che ho scritto.
Mi è sembrato strano che un momento imparavo iptables ed un momento dopo ero
sul set di Pulp Fiction.
Tutto quì.
--
RaSca
http://web.tiscalinet.it/rascasoft

 sul set di Pulp Fiction.
Hmmm qui il ragionamento astruso inizia ad essere il tuo ;-)
byez!


 Hmmm qui il ragionamento astruso inizia ad essere il tuo ;-)
mmm...Hai ragione...E' che quando vedo  la scritta "Dio" da qualche parte
sento come se si nominasse mio padre...E poi inizio a parlare di Pulp
fiction ;)
--
RaSca
http://web.tiscalinet.it/rascasoft

 fiction ;)
Huh!... Mi sa che conoscere iptables č l'ultimo dei tuoi problemi :-)
Byez


 Huh!... Mi sa che conoscere iptables č l'ultimo dei tuoi problemi :-)
Cavolo...Ho idea di sė...
--
RaSca
http://web.tiscalinet.it/rascasoft
P.S. Ad ogni modo qualcosa di pių su iptables l'ho imparato..