|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
Iptables + Squid: alcuni problemi
Ciao
ho ripreso lo sviluppo del mio router/server casalingo basato su debian e iptables per chi non lo sapesse tutto è cominciato da qui ![]() Link rispetto a quello di cui si parla nel mio vecchio thd ho deciso di usare una debian super minimal(il deb generato pesa 4mb e mi sono dimenticato di togliere la parte del DVB linux ![]() Inoltre ho ricompilato il kernel col supporto al Layer7 filtering e patchato iptables per supportarlo lo script del firewall l'ho preso da un utente che tempo fa ha postato una miniguida per un firewall con dmz...ma ho tolto la parte dmz visto che non la utilizzo Script IPTABLES con dmz dello script proposto ho tolto solo le regole riguardanti la dmz e modificato gli ip per la mia configurazione inoltre ho implementato 2 script funzionanti per il controllo della banda con iproute2 e traffic control. appena risolvo con squid ve li ripropongo per vedere se si può cambiare qualcosa come avrete appena capito il problema è squid. l'ho installato da apt, lo script di configurazione è quasi standard, ho solo aggiunto l'opzione transparent, qualche riga per la cache e la rete considerata sicura. se aggiungo una riga a iptables per il redirect su squid, ogni connessione mi risulta in una pagina in cui mi viene comunicato che squid non riesce a risolvere i nomi, anche se in iptables ci sono 2 regole ad hoc per permetterlo(si vedono nello script sopra). dove sbaglio? il router ha 2 schede di rete, eth0 per la LAN locale e eth1 collegata all'hag fastweb e configurata per nattare i 3 ip disponibili di default dall'hag(28.255.248.ecc ecc) qualcuno mi sa dare una mano? tnx Ultima modifica di supermario : 03-03-2008 alle 11:15. |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
problema comunissimo vedo
![]() vi allego lo script del firewall e squid.conf ripulito dei commenti chilometrici il forward per squid è commentato all'ultima riga fino a che non riesco a farlo funzionare, per fare le prove però, lo sblocco ![]() Codice:
#!/bin/bash /sbin/modprobe ipt_ipp2p IPT=/sbin/iptables NET="eth1" LAN="eth0" LO="lo" #IP IP_NET="28.255.248.199" IP_LAN="192.168.1.1" IP_LO="127.0.0.1" IP_DNS1="213.156.56.80" IP_DNS2="1.253.128.37" RANGE_IP_LAN="192.168.1.0/24" #pulisco tutto $IPT -F $IPT -t nat -F $IPT -t mangle -F $IPT -F INPUT $IPT -F FORWARD $IPT -F OUTPUT $IPT -X #imposto il comportamento di default $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP #abilito l'ip forwarding echo 1 > /proc/sys/net/ipv4/ip_forward #creo dei chan nuovi $IPT -N net_to_lan $IPT -N lan_to_net $IPT -N server_to_net $IPT -N net_to_server $IPT -N lan_to_server $IPT -N server_to_lan #accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali $IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT $IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT $IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT $IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT $IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT $IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT #rispondo ai ping (non fondamentale, ma a volte e' comodo) $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT #faccio snat dei computer in LAN (e quindi gli permetto di uscire su internet) $IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j MASQUERADE #divido le connessioni (FORWARD) in base alla provenienza/destinazione $IPT -A FORWARD -i $NET -o $LAN -j net_to_lan $IPT -A FORWARD -i $LAN -o $NET -j lan_to_net #divido anche le connessioni in input.... $IPT -A INPUT -i $NET -j net_to_server $IPT -A INPUT -i $LAN -j lan_to_server #... e output $IPT -A OUTPUT -o $NET -j server_to_net $IPT -A OUTPUT -o $LAN -j server_to_lan #da internet verso la LAN accetto solo le connessioni related,estabilished $IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT #dalla LAN permetto di uscire su tutte le porte $IPT -A lan_to_net -j ACCEPT #accetto tutte le connessioni fatte dalla LAN verso il server(e server verso internet) (considero la mia rete interna SICURA) $IPT -A lan_to_server -j ACCEPT $IPT -A server_to_net -j ACCEPT #accetto solo le connessioni related o estabilished che il server fa alla LAN $IPT -A server_to_lan -j ACCEPT #permetto di risolvere nomi $IPT -A server_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT $IPT -A server_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCEPT #permetto al firewall che riceva le risposte $IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT #Http - Down ha prio max $IPT -t mangle -A POSTROUTING -m layer7 --l7proto http -j MARK --set-mark 1 #Emule - Upl ha prio min $IPT -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 2 #Http - Down ha prio max $IPT -t mangle -A PREROUTING -m layer7 --l7proto http -j MARK --set-mark 1 #Emule - Upl ha prio min $IPT -t mangle -A PREROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 2 #Apro porte Emule a Mario $IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662 $IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672 #Gino $IPT -A FORWARD -p tcp -i $NET --dport 4669 -d 192.168.1.3 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4679 -d 192.168.1.3 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4669 -j DNAT --to-dest 192.168.1.3:4669 $IPT -t nat -A PREROUTING -p udp --dport 4679 -j DNAT --to-dest 192.168.1.3:4679 #Angelo $IPT -A FORWARD -p tcp -i $NET --dport 4663 -d 192.168.1.4 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4673 -d 192.168.1.4 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4663 -j DNAT --to-dest 192.168.1.4:4663 $IPT -t nat -A PREROUTING -p udp --dport 4673 -j DNAT --to-dest 192.168.1.4:4673 #Uso il proxy #$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128 Codice:
server:~# cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d' visible_hostname localhost http_port 192.168.1.1:3128 transparent hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY acl apache rep_header Server ^Apache broken_vary_encoding allow apache cache_mem 8 MB maximum_object_size 4096 KB cache_replacement_policy heap LFUDA memory_replacement_policy heap LFUDA cache_dir ufs /var/spool/squid 5000 16 256 access_log /var/log/squid/access.log squid hosts_file /etc/hosts 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 net src 192.168.1.0/24 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 http_access allow net http_access allow localhost http_access deny all http_reply_access allow all icp_access allow all cache_effective_group proxy coredump_dir /var/spool/squid extension_methods REPORT MERGE MKACTIVITY CHECKOUT questo invece è squid.conf...manca nulla? inoltre non mi è chiaro che indirizzo usare per il proxy vero e proprio squid viene eseguito dal firewall stesso, devo usare 192.168.1.1 o 127.0.0.1?? |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Aug 2007
Messaggi: 116
|
Ciao, sfortunatamente non ho alcuna soluzione al tuo problema...
....PERO'... ... ho letto tutta la tua "avventura" per realizzare un server domestico e ora vorrei fare le stesse cose !!! nella fattispecie ho installato ubuntu 7.10 server e ora devo: 1) creare un firewall che permetta alle macchine nella LAN di uscire su internet ma che sia chiuso da internet verso la LAN (se non per le classiche porte 4662 e 4672 ![]() 2) configurare samba per creare un gruppo di lavoro e condividere le cartelle sul server 3) gestione remota tramite SSH (già fatto !) Mi potresti per favore dare qualche consiglio sulle soluzioni che hai adottato? In particolare: -meglio un' interfaccia grafica minimale (fluxbox, xfce etc...) o webadmin? -che firewall? meglio uno script con IPTABLES, Shorewall o viste le esigenze, una semplice interfaccia grafica come Firestarter? Come nel tuo caso, anch'io ho una connessione con fastweb senza ip pubblico (il classico hag pirelli con 3 porte con pc configurati in DHCP) grazie anticipatamente !!!! Ultima modifica di M1900 : 06-03-2008 alle 14:46. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2003
Città: La Spezia
Messaggi: 962
|
ciao,
Riguardo il dns: la macchina dove gira squid risolve i nomi? in /etc/resolv.conf cosa ci hai messo? se punti un ip da browser e non un nome, navighi? che rotte hai sul firewall?
__________________
![]() ![]() Gigabyte ga-p55-ud6 | Intel i7 860 | 2x2gb Corsair xms3 | Adaptec 2410sa | raid1 barracuda 500gb 7200.12 | Intel x25-m 80gb G2 | ATI radeon 4890 | tutto in downclock (non ho parenti all'enel) |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
ciao innanzitutto anticipo che il problema a squid l'ho risolto, ora il redirect e le policy funzionano egregiamente
il problema che si è ripresentato è il DNAT delle porte del mulo sui pc in lan e sul server stesso(per utilizzo con aMuleD) pensavo che Codice:
#Apro porte Emule a Mario $IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662 $IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672 che cosa c'è di sbagliato? @M1900 cerco di risponderti prevemente #firewall sostitutivo di un router soho: basta hw preistorico e 2 schede di rete, una verso internet l'altra verso la lan interna(magari con uno switch). visto che hai fw ti certifico il suo funzionamento ![]() #aprire emule: ci sto lavorando come vedi, pensavo fuzionasse ![]() #ssh openssh e sshclient, per pilotatlo putty su windows e winscp, vanno alla grande..eventualmente ci metti su webmin per la gestione di qualcosa via http #varie non c'è bisogno di nessun desktop environment, va benissimo da console...shorewall è comodo agli inizi ma anche un script di IPTABLES puro non dovrebbe essere male ciauz |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
|
Prova a specificare l'ip nel prerouting (ed eventualmente l'interfaccia, ma forse è superfluo...):
Codice:
#Apro porte Emule a Mario $IPT -A FORWARD -p tcp -i $NET -d 192.168.1.2 --dport 4662 -j ACCEPT $IPT -A FORWARD -p udp -i $NET -d 192.168.1.2 --dport 4672 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp -i $NET -d $IP_NET --dport 4662 -j DNAT --to-dest 192.168.1.2:4662 $IPT -t nat -A PREROUTING -p udp -i $NET -d $IP_NET --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...) |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
vi aggiorno domani quando faccio le prove!
![]() intanto se ci sono idee proponete pure, la cosa mi sta facendo incazzare parecchio ![]() |
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: Aug 2007
Messaggi: 116
|
In effetti utilizzare un vecchio PC come firewall sarebbe la cosa migliore, sopratutto vista l'efficienza di IPCop, Smoothwall monowall etc...
Mi piacerebbe però integrare nel mio (file)server domestico anche un buon firewall. La macchina su cui ho installato Ubuntu server è già dotata di 2 schede di rete:
Ora con questa impostazione i PC della LAN "escono" su internet ma non so se le cartelle condivise sul server o dai singoli pc siano visibili anche all'esterno della mia LAN. In ogni caso, il firewall ideale sul mio server, dovrebbe "semplicemente" bloccare qualsiasi connessione in entrata... Pensavo inoltre ad un'interfaccia grafica leggerissima per velocizzare le impostazioni sul server ma mi sembra di capire che con webadmin posso fare già tutto via web... Ogni consiglio è ben accetto !!!! |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
non mi sono ancora occupato della parte fileserver
ma se non sbaglio le cartelle condivise dai singoli pc nella mia rete sono visibili agli altri già da ora |
![]() |
![]() |
![]() |
#10 |
Member
Iscritto dal: Aug 2007
Messaggi: 116
|
in effetti anch'io devo affrontare il capito "samba" ancora nel dettaglio...
Quello che non capisco è se con la mia configurazione: -eth1 che da su WAN -eth0 che da su LAN ( le cartelle condivise qui devono essere invisibili su WAN !!!!) devo integrare un firewall (con IPTABLES, Shorewall, Firestarter etc...) oppure no. grazie anticipatamente ! |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
la man(non una wan) a cui sei connesso non vedrà mai le tue cartelle,in nessun caso,vai tranquillo!
|
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: Aug 2007
Messaggi: 116
|
Quindi nel mio caso non server un firewall?
Dovrei implementarlo solo per aprire delle porte? ( passando così dalla configurazione "tutto chiuso" ad una più complessa che richiede appunto, un firewall ? ) OT tecnico Perchè si parla di MAN e non WAN ?? centra per caso la struttura particolare di fastweb?? Di solito come WAN intendo la zona RED di una rete, cioè la parte in comunicazione con internet. grazie ancora per le risposte ! |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
se vuoi distribuire internet col muletto ti serve per forza implementare una sorta di firewall che abbia almeno funzioni di NAT per i pc nella rete
si parla di MAN perchè la rete è diversa per le varie zone d'italia dove è presente fastweb...MAN infatti sta per metropolitan area network, di solito fastweb ne ha una per le varie città dove c'è copertura |
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Aug 2007
Messaggi: 116
|
quindi mi devo mettere a studiare bene IPTABLES ......
Mi sembrava troppo bello che fosse sufficiente quello che avevo già fatto ![]() Per il resto, spero almeno che Webadmin mi semplifichi un pò la vita ! |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
usa shorewall le prime volte, ha una documentazione bene fatta
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 1468
|
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
la situazione è che con quelle righe per iptables postate su per il DNAT delle porte sui pc nella mia rete non ottengo i risultati sperati, il check delle porte sul sito di adunanza da sempre esiti negativi
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Oct 2003
Città: La Spezia
Messaggi: 962
|
ciao,
ti posso consigliare di loggare quello che fa iptables? e poi, creati le catene di forward tipo queste: $IPT -A FORWARD -i $BAD -o $LAN -j bad-lan $IPT -A FORWARD -i $LAN -o $BAD -j lan-bad di conseguenza: ### bad-lan ### $IPT -A bad-lan -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A bad-lan -j LOG --log-prefix "[ Scarti: bad-lan ]" $IPT -A bad-lan -j REJECT ### lan-bad ### $IPT -A lan-bad -m state --state ESTABLISHED,RELATED -j ACCEPT # nameservers $IPT -A lan-bad -p udp -s 10.0.0.0/24 --dport 53 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 53 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 80 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 21 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 20 -j ACCEPT $IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 23 -j ACCEPT $IPT -A lan-bad -j LOG --log-prefix "[ Scarti: lan-bad ]" $IPT -A lan-bad -j REJECT Lo stesso sul prerouting e post e output se filtri. E' chiaro che devi adattare le aperture per la tua rete. Avrai la situazione iptables a portata d'occhio, ogni scarto e visibile in syslog o messages. ciao
__________________
![]() ![]() Gigabyte ga-p55-ud6 | Intel i7 860 | 2x2gb Corsair xms3 | Adaptec 2410sa | raid1 barracuda 500gb 7200.12 | Intel x25-m 80gb G2 | ATI radeon 4890 | tutto in downclock (non ho parenti all'enel) |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 7906
|
grazie per la risposta appena possibile modifico lo script per vedere se cambia nulla!
|
![]() |
![]() |
![]() |
#20 | |
Senior Member
Iscritto dal: Jun 2003
Messaggi: 1468
|
Quote:
Io non ne ho idea delle porte che servono al mulo ma ne devi essere sicuro al 100% Poi, non dovrebbe essere difficile capire dov'è il problema se fai così: dai questi comandi che così pulisci tutto iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -Z iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t mangle -P OUTPUT ACCEPT iptables -t mangle -P INPUT ACCEPT iptables -t mangle -P FORWARD ACCEPT iptables -t mangle -P POSTROUTING ACCEPT iptables -t mangle -P PREROUTING ACCEPT ora abbiamo una situazione di pulizia totale, a questo punto aggiungi SOLO queste regole: IPT=/sbin/iptables NET="eth1" LAN="eth0" LO="lo" #IP IP_NET="28.255.248.199" IP_LAN="192.168.1.1" IP_LO="127.0.0.1" IP_DNS1="213.156.56.80" IP_DNS2="1.253.128.37" RANGE_IP_LAN="192.168.1.0/24" echo 1 > /proc/sys/net/ipv4/ip_forward $IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j MASQUERADE $IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2:4662 $IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2:4672 chiaramente usi solo il pc 192.168.1.2 Se le porte sono giuste sei a cavallo, poi vedremo dov'è il problema. Riguardo al probabile problema, hai fatto venire un dubbio a me: sei sicuro che si possa fare come hai fatto tu, ossia: #Apro porte Emule a Mario $IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662 $IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672 #Gino $IPT -A FORWARD -p tcp -i $NET --dport 4669 -d 192.168.1.3 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4679 -d 192.168.1.3 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4669 -j DNAT --to-dest 192.168.1.3:4669 $IPT -t nat -A PREROUTING -p udp --dport 4679 -j DNAT --to-dest 192.168.1.3:4679 #Angelo $IPT -A FORWARD -p tcp -i $NET --dport 4663 -d 192.168.1.4 -j ACCEPT $IPT -A FORWARD -p udp -i $NET --dport 4673 -d 192.168.1.4 -j ACCEPT $IPT -t nat -A PREROUTING -p tcp --dport 4663 -j DNAT --to-dest 192.168.1.4:4663 $IPT -t nat -A PREROUTING -p udp --dport 4673 -j DNAT --to-dest 192.168.1.4:4673 Intendo dire sei sicuro che si possa fare il dnat per più indirizzi ip delle stesse porte??? Inoltre anche per quel che riguarda le regole nella catena di forward, sei sicuro che si possa specificare più indirizzi ip delle stesse porte? Io ho sempre usato una forma del genere, senza specificare un indizzo ip (o addirittura più di uno come hai fatto tu) iptables -A FORWARD -i ethx -p tcp --dport www -j ACCEPT Spero di non averti incasinato. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:40.