Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[SOLVED] [IPTABLES] Proxy Firewall server
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Tue Feb 28, 2006 10:17 pm    Post subject: [SOLVED] [IPTABLES] Proxy Firewall server Reply with quote

Ciao a tutti

è da un po' che lurko il forum, ma questo è il mio primo post.

Cercherò di essere sintetico.

La rete su cui sto "sperimentando" è composta da un pc Gentoo su cui girano firewall (iptables) e server proxy (squid), con due schede ethernet, una attaccata al router fastweb e l'altra ad un gateway/AP a cui collego portatile e palmare.

Iptables è così configurato (con uno script da me realizzato)

Policy di default DROP (su INPUT, OUTPUT, FORWARD e naturalmente PRE e POSTROUTING).

regole su input:
ACCEPT per quanto viene dalla rete LAN e per le connessioni ESTABLISHED e RELATED
REJECT per protocollo tcp con --reject-with tcp-reset

regole su output:
ACCEPT per le connessioni NEW, ESTABLISHED e RELATED.

regole su forward
ACCEPT per quandto viene dalla rete LAN (-s $CLASS_LAN) e va verso ovunque (-d 0/0).

ed ovviamente MASQUERADE per il POSTROUTING verso l'interfaccia WAN.

Ovviamente si tratta di una configurazione di base, molto semplice, per fare dei test su un progetto che devo realizzare per lavoro, ed andrà piano piano popolata con regole più precise e restrittive.

Il mio grosso problema, ora, è questo: Vorrei impostare un filtro che reindirizzi tutte le connessioni provenienti dalla rete LAN sulla porta 80, verso squid che gira sul PC con gentoo (ed il firewall).

ho provato con:

/sbin/iptables -t nat -A PREROUTING -p tcp -s $CLASS_LAN -d 0/0 -dport www -j DNAT --to-dest $IP_GATEWAY:8080

Ma non funziona! Naturalmente ho configurato squid affinchè si connetta sulla porta 8080 (invece che 3128) ed accetti connessioni dal range di ip della LAN, ma non funge. Eppure se imposto nel browser (firefox) l'indirizzo del proxy manualmente nell'apposita voce funziona tutto.

Dove sbaglio?


Last edited by gioi on Thu Mar 02, 2006 6:38 pm; edited 1 time in total
Back to top
View user's profile Send private message
.:chrome:.
Advocate
Advocate


Joined: 19 Feb 2005
Posts: 4588
Location: Brescia, Italy

PostPosted: Tue Feb 28, 2006 10:29 pm    Post subject: Re: [IPTABLES] Proxy Firewall server Reply with quote

non ho capito perché hai messo squid sulla 8080, invece che sulla 3128...

la regola per fare transparent proxy va nella tabella nat, ed è questa:
-A PREROUTING -i interfaccia -m tcp -s rete sorgente --dport 80 -j REDIRECT --to-ports 3128

ovviamente squid deve essere in ascolto sulla porta 3128 sull'indirizzo appartenente alla rete locale.
devi però aggiungere alcune direttive al file di configurazione di squid per permettergli di fare da transparent proxy, diversamente non funzionerà.
purtroppo a memoria non le ricordo. se cerchi "squid transparent proxy" le trovi sicuramente.

io direi: per evitare di fare casino, fai una cosa alla volta: prima metti in piedi squid, e prova ad impostare il proxy esplicitamente per i browser. successivamente metti le direttive per il TP, togli il proxy dall'impostazione del browser, e vedi se le connessioni gli vengono passate oppure no (lo vedi dall'access.log)
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Tue Feb 28, 2006 10:47 pm    Post subject: Re: [IPTABLES] Proxy Firewall server Reply with quote

Ti ringrazio per la risposta.

Cmq il problema non è squid che se chiamato esplicitamente (cioè impostato nella sezione proxy del browser dei vari pc della rete) funziona perfettamente.

Io però vorrei che la connessione sulla porta 80/http passi sempre attraverso il proxy.

Il motivo per cui uso la porta 8080 è molto semplice. Queste stesse impostazioni, (con minime modifiche), andranno applicate su una macchina che già fa parte di una rete (mista linux/winsozz), in cui già girano i vari server tra cui il proxy, sulla porta 8080 e su cui non dovrei mettere mano se non in caso di estrema necessità. Per cui, per "semplicità" ho cercato, nei parametri di configurazione, di replicare quanto più possibile le condizioni della rete "reale".

_bye

Quanto al tuo suggerimento... non ho capito bene cosa intendi. Se non erro la regola che hai postato tu serve semplicemente per il redirecting della porta 80 sulla porta 3128, ma non forza l'indirizzo di destinazione a quello del proxy. O mi sbaglio?

Domattina farò delle prove, cmq ancora grazie per la risposta!
Back to top
View user's profile Send private message
.:chrome:.
Advocate
Advocate


Joined: 19 Feb 2005
Posts: 4588
Location: Brescia, Italy

PostPosted: Tue Feb 28, 2006 11:18 pm    Post subject: Re: [IPTABLES] Proxy Firewall server Reply with quote

no, non sbagli, ma è proprio questo il fatto.
se il proxy deve essere trasparente, l'indirizzo di destinazione non deve variare. deve essere il firewall che senza dire niente a nessuno intercetta le connessioni e le "sposta", se mi passi il termine.

infine, se squid risponde correttamente quando chiamato direttamente, allora gli mancano le regole per fare il TP. ci sono alcune direttive da aggiungere a squid.conf, per fare questo
Back to top
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Wed Mar 01, 2006 9:45 am    Post subject: Reply with quote

REDIRECT cambia l'indirizzo di destinazione del pacchetto, assegnandogli l'ip dell'interfaccia di provenienza.
può essere usato solo se il proxy risiede sulla stessa macchina del firewall e non funziona se è richiesta l'autenticazione.

se proxy e frw sono 2 macchine distinte, si può ottenere comunque la configurazione trasparente ma la conf di iptables è diversa (DNAT + SNAT).
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
spugna
Tux's lil' helper
Tux's lil' helper


Joined: 26 Nov 2004
Posts: 97

PostPosted: Wed Mar 01, 2006 10:41 am    Post subject: Reply with quote

Ciao, per far lavorare squid in modalità transparent devi mettere, nel file /etc/squid/squid.conf...
Code:

    #squid.conf
    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on


Come diceva makoomba l'autenticazione in questa modalità NON funziona (a meno di non intervenire a mano su un file header e ricompilare a manina).

Per quanto riguarda iptables quoto k.gothmog

Code:

iptables -t nat -A PREROUTING -i ethn -p tcp --dport 80 -j REDIRECT --to-port 3128

_________________
Don't think, drink your wine, watch the fire burn... his problems not mine...
Just be that model citizen.
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Wed Mar 01, 2006 2:46 pm    Post subject: Reply with quote

Ringrazio ancora una volta tutti per le risposte, ma non funziona!

Allora il mio squid.conf è questo:

Code:
ssl_unclean_shutdown off
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 8 MB

cache_dir ufs /var/cache/squid 100 16 25
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

mime_table /etc/squid/mime.conf
pid_filename /var/run/squid.pid
hosts_file /etc/hosts

auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

refresh_pattern ^ftp:      1440   20%   10080
refresh_pattern ^gopher:   1440   0%   1440
refresh_pattern .      0   20%   4320

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80      # http
acl Safe_ports port 21      # ftp
acl Safe_ports port 443 563   # https, snews
acl Safe_ports port 70      # gopher
acl Safe_ports port 210      # wais
acl Safe_ports port 1025-65535   # unregistered ports
acl Safe_ports port 280      # http-mgmt
acl Safe_ports port 488      # gss-http
acl Safe_ports port 591      # filemaker
acl Safe_ports port 777      # multiling http
acl Safe_ports port 901      # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

acl our_networks src 192.168.1.0/24
http_access allow our_networks
http_access allow localhost
http_access deny all

http_reply_access allow all
icp_access allow all
visible_hostname Ganimede

httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

forwarded_for off

coredump_dir /var/cache/squid


mentre lo script di configurazione del firewall è al momento questo:
Code:

#!/bin/bash

# Parametri
WANIF="eth2"
LANIF="eth0"
CLASS_LAN="192.168.1.0/24"
GW_IP="192.168.1.1"

# Impostazione regole catena INPUT
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A INPUT -s $CLASS_LAN -j ACCEPT
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

# Impostazione regole catena OUTPUT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Impostazione regole catena FORWAR
/sbin/iptables -A FORWARD -s $CLASS_LAN -d 0/0 -j ACCEPT

# Impostazione regole NAT
/sbin/iptables -t nat -A POSTROUTING -o $WANIF -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i $LANIF -p tcp --dport 80 -j REDIRECT --to-port 3128


Ma non naviga e lanciando un tail -f /var/log/squid/access.log lo stesso rimane "vuoto", sintomo che squid non viene "chiamato".

Lanciando inoltre un iptables -t nat -L -v ottengo:

Code:

Chain PREROUTING (policy DROP 573 packets, 179K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REDIRECT   tcp  --  eth0   any     anywhere             anywhere            tcp dpt:http redir ports 3128

Chain POSTROUTING (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    5   310 MASQUERADE  all  --  any    eth2    anywhere             anywhere           

Chain OUTPUT (policy ACCEPT 5 packets, 310 bytes)
 pkts bytes target     prot opt in     out     source               destination


Come potete vedere per quanto riguarda il prerouting 0 pkts, mentre per queanto riguarda l'IP MASQUERADE c'è effettivamente traffico... mi viene il dubbio, a questo punto, che la catena di FORWARD ignori il REDIRECT...
Back to top
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Wed Mar 01, 2006 3:01 pm    Post subject: Reply with quote

posta
Code:
netstat -nltp

_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
spugna
Tux's lil' helper
Tux's lil' helper


Joined: 26 Nov 2004
Posts: 97

PostPosted: Wed Mar 01, 2006 4:55 pm    Post subject: Reply with quote

Domanda forse scontata:
ma nel file /etc/sysctl.conf hai impostato

Code:
net.ipv4.ip_forward = 1


oppure hai dato

Code:

echo 1 > /proc/sys/net/ipv4/ip_forward


:?: :?: :?:
_________________
Don't think, drink your wine, watch the fire burn... his problems not mine...
Just be that model citizen.
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Wed Mar 01, 2006 5:27 pm    Post subject: Reply with quote

spugna wrote:
Domanda forse scontata:
ma nel file /etc/sysctl.conf hai impostato

Code:
net.ipv4.ip_forward = 1


oppure hai dato

Code:

echo 1 > /proc/sys/net/ipv4/ip_forward


:?: :?: :?:


Naturalmente si, c'è anche nello script, solo che ho tagliato ed incollato male (ho eliminato dallo script le parti con dati sensibili, quali l'ip pubblico ed altre informazioni del genere)...
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Wed Mar 01, 2006 5:30 pm    Post subject: Reply with quote

makoomba wrote:
posta
Code:
netstat -nltp


Ecco:
Code:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      11724/named         
tcp        0      0 0.0.0.0:3128            0.0.0.0:*               LISTEN      11827/(squid)       
tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      11724/named   
Back to top
View user's profile Send private message
makoomba
Bodhisattva
Bodhisattva


Joined: 03 Jun 2004
Posts: 1856

PostPosted: Wed Mar 01, 2006 6:40 pm    Post subject: Reply with quote

2 domande
- le prove le stai facendo dai clients ?
- il frw è il default gw per la rete 192.168.1.0/24 ?
_________________
When all else fails, read the instructions.
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Wed Mar 01, 2006 11:10 pm    Post subject: Reply with quote

Ovviamente le prove sono tutte fatte sui client (ma il netstat l'ho lanciato sul server).

La topologia della rete è questa:


PC gentoo 2005.1 stage 2: eth0 <-------> switch <----> Portatile gentoo 2005.1 stage 3
eth1
eth2 <-------> router Fastweb

All'eth1 collegherò nella seconda fase del progetto uno o due pc che fungeranno da DMZ (su uno girerà un Server WEB), l'altro sarà un PC civetta (con lo scopo di monitorare e migliorare il comportamento del fw).

La rete connessa all'eth0 è di classe C (192.168.1.0/24) con default gw 192.168.1.1 che corrisponde al pc su cui girano proxy e firewall. L'utilizzo dello switch è giustificato dall'utilizzo saltuario di altri pc.
Back to top
View user's profile Send private message
gioi
Apprentice
Apprentice


Joined: 14 Feb 2006
Posts: 236

PostPosted: Thu Mar 02, 2006 6:40 pm    Post subject: Reply with quote

Risolto... il dhcp non "aggiornava" /etc/resolv.conf

Era un problema nel dhcpd.conf

In pratica è bastato aggiungere l'opzione

Code:
 option domain-name-server x.y.w.z


ed ora funziona tutto...

Grazie a tutti dell'aiuto!
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum