View previous topic :: View next topic |
Author |
Message |
alegioit Tux's lil' helper

Joined: 13 Jul 2007 Posts: 78
|
Posted: Mon Sep 17, 2007 12:15 pm Post subject: che casino iptables!! |
|
|
Ciao a tutti!!!
Premetto che fino a 2 mesi fa non capivo niente di linux... Un bel giorno di quest'estate ( siccome fuori diluviava ) mi son detto " impariamoci linux ", ma non come farebbe un comune essere umano... siccome sono completamente pazzo mi son detto: partiamo da gentoo!!
bella,bella,bella! Visto che sono un po' smanettone ho installato gentoo su 3 dei miei computer al primo colpo e devo dire che linux, ma soprattutto gentoo, mi hanno veramente impressionato!!! E' impressionante ( scusatemi la ripetizione! ) quello che si può fare!!!!
Va beh, ma torniamo a noi.
Il problema principale ( oltre alla mia inesperienza generale con bash e configurazioni varie, ma non è di questo che mi preoccupo ) è quando ho cercato di installare gentoo sul mio serverino-gateway ( una via epia me6000 che andava alla grande con win server 2003 ): funziona tutto ( ambiente grafico, samba, vnc, ecc... ) ma non riesco assolutamente a configurare iptables!!!
Mi sono letto un paio di guide ( solo due perchè sono da 250 pagine l'una ) e sono arrivato a una configurazione che dovrebbe funzionare ( che tra l'altro ho ricopiato in gran parte da una di queste guide ) ma non funziona niente: faccio partire iptables, eseguo lo script che ho scritto e si impalla tutto (sia il server che i computer interni non raggiungono la rete esterna ne quelli sulla rete interna possono comunicare con il server! )
I parametri sono (premetto che ho fastweb):
eth0 : interfaccia rete interna ( la rete è 192.168.0.0/24 )
eth1 : interfaccia rete esterna ( usa un dhcp con l'hag di fastweb che gli da l'ip 2.244.170.158 )
ip server : 192.168.0.1
lo script di inizializzazione di iptables è:
Code: |
!/bin/sh
#
# masquerading.sh - Version 20040531 - Coresis
#
#### DEBUGGING ###
set -x
### FLUSHING CHAIN ### Azzera e pulisce ogni regola esistente
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -X
/sbin/iptables -Z
### DEFAULT CHAIN ### Imposta le policy di default
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -t nat -P POSTROUTING DROP
/sbin/iptables -t nat -P PREROUTING DROP
### SETTING IPFORWARDING ### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
### DISABLE RESPOND TO BROADCAST ### Non risponde ai ping inviati al browadcast della subnet
/bin/echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
### ENABLE BAD ERROR MESSAGE PROTECTION ### Ignora finti messaggi di errore ICMP
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
### DISABLE ICMP REDIRECT ACCEPTANCE ### Non accetta pacchetti ICMP di route redirection
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects
### SETTING ANTISPOOFING PROTECTION ###
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
### DON'T RESPOND TO BROADCAST PINGS ###
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
### Qui vengono definite alcune variabili che successivamente sono usate nelle regole - MODIFICARE SECONDO I PROPRI PARAMETRI
# External Public Interface
EXTIF="eth1"
# Internal Private Interface
INTIF="eth0"
# Internal LAN IP (su eth0)
LANIN="192.168.0.0/24"
# LOOP RULE Permettiamo il traffico di loopback
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
# LAN IN ACCESS Regole che permettono l'accesso al firewall Linux dagli IP della rete Interna - Potrebbero essere più ristrette e limitarsi all'IP dell'amministratore
/sbin/iptables -A INPUT -i $INTIF -s $LANIN -j ACCEPT
/sbin/iptables -A OUTPUT -o $INTIF -d $LANIN -j ACCEPT
# LAN IN OUT Seguono le regole che gestiscono il masquerading della rete interna
/sbin/iptables -A FORWARD -i $LANIN -d 0/0 -j ACCEPT #Forwarda tutti i pacchetti dalla rete interna a qualsiasi destinazione
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -d 0/0 -j ACCEPT #Permette il forwarding di tutti i pacchetti correlati a comunicazioni esistenti
/sbin/iptables -t nat -A POSTROUTING -o $EXTIF -s $LANIN -j MASQUERADE #Maschera gli IP sorgenti Interni con l'IP dell'interfaccia pubblica
/sbin/iptables -t nat -A POSTROUTING -d $LANIN -j MASQUERADE
# GENERAL Regole generali per permettere all'host locale di collegarsi a IP remoti e ricevere i pacchetti di risposta (Nota: si riferiscono alle attività che vengono fatte direttamente dalla macchina Linux locale e non dagli host che la usano come firewall)
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# LOGGING Log di tutti i pacchetti, esclusi i broadcast, prima di essere droppati dalla regole di default. I logging viene fatto con livello
#debug per isolarlo da altri log di sistema. Per cui è necessario scrivere in /etc/syslog.conf una riga tipo:
#kern.debug /var/log/iptables.log
#/sbin/iptables -A INPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[INPUT DROP] : "
#/sbin/iptables -A OUTPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[OUTPUT DROP] : "
|
Lo script da cui ho copiato è:
Code: |
#!/bin/sh
#
# masquerading.sh - Version 20040531 - Coresis
#
#### DEBUGGING ###
set -x
### FLUSHING CHAIN ### Azzera e pulisce ogni regola esistente
/sbin/iptables -F
/sbin/iptables -F -t nat
/sbin/iptables -X
/sbin/iptables -Z
### DEFAULT CHAIN ### Imposta le policy di default
/sbin/iptables -P INPUT DROP
/sbin/iptables -P FORWARD DROP
/sbin/iptables -P OUTPUT DROP
/sbin/iptables -t nat -P POSTROUTING DROP
/sbin/iptables -t nat -P PREROUTING DROP
### SETTING IPFORWARDING ### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
### DISABLE RESPOND TO BROADCAST ### Non risponde ai ping inviati al browadcast della subnet
/bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
### ENABLE BAD ERROR MESSAGE PROTECTION ### Ignora finti messaggi di errore ICMP
Linux Firewall ad opera d'arte Pagina 20 di 43
/bin/echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
### DISABLE ICMP REDIRECT ACCEPTANCE ### Non accetta pacchetti ICMP di route redirection
/bin/echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
### SETTING ANTISPOOFING PROTECTION ###
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
### DON'T RESPOND TO BROADCAST PINGS ###
/bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians
### Qui vengono definite alcune variabili che successivamente sono usate nelle regole - MODIFICARE SECONDO I PROPRI PARAMETRI
# External Public Interface
EXTIF="eth1"
# Internal Private Interface
INTIF="eth0"
# Host Public IP (su eth1)
EGO="211.121.111.111"
# Internal LAN IP (su eth0)
LANIN="10.0.0.0/24"
# Trusted public network (da cui si permettono collegamenti SSH)
TRUSTED="13.18.151.0/24"
# IP/rete di un utente esterno abilitato a connetterci al server VPN interno
USER="112.56.10.32/28"
# IP Interno del server VPN
VPNSERVER="10.0.0.77"
# RFC IPs Classi di indirizzi dedicate a utilizzi privati o particolari e non routate su Internet
LOOPBACK="127.0.0.0/8"
CLASS_A="10.0.0.0/8"
CLASS_B="172.16.0.0/12"
CLASS_C="192.168.0.0/16"
CLASS_D_MULTICAST="224.0.0.0/4"
CLASS_E_RESERVED_NET="240.0.0.0/5"
# ANTISPOOF Adesso iniziano le regole vere e proprie. Le prime sono generiche regole anti-spoof per IP noti dall'interfaccia pubblica.
/sbin/iptables -A INPUT -i $EXTIF -s $EGO -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s $CLASS_A -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s $CLASS_B -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s $CLASS_C -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s $CLASS_D_MULTICAST -j DROP
/sbin/iptables -A INPUT -i $EXTIF -s $CLASS_E_RESERVED_NET -j DROP
/sbin/iptables -A INPUT -i $EXTIF -d $LOOPBACK -j DROP
# LOOP RULE Permettiamo il traffico di loopback
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT
# LAN IN ACCESS Regole che permettono l'accesso al firewall Linux dagli IP della rete Interna - Potrebbero essere più ristrette e limitarsi
all'IP dell'amministratore
/sbin/iptables -A INPUT -i $INTIF -s $LANIN -j ACCEPT
/sbin/iptables -A OUTPUT -o $INTIF -d $LANIN -j ACCEPT
# LAN IN OUT Seguono le regole che gestiscono il masquerading della rete interna
/sbin/iptables -A FORWARD -s $LANIN -d 0/0 -j ACCEPT Forwarda tutti i pacchetti dalla rete interna a qualsiasi destinazione
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -d $LANIN -j ACCEPT Permette il forwarding di tutti i pacchetti
correlati a comunicazioni esistenti
/sbin/iptables -t nat -A POSTROUTING -o $EXTIF -s $LANIN -j MASQUERADE Maschera gli IP sorgenti Interni con l'IP dell'interfaccia
pubblica
# GENERAL Regole generali per permettere all'host locale di collegarsi a IP remoti e ricevere i pacchetti di risposta (Nota: si riferiscono alle
attività che vengono fatte direttamente dalla macchina Linux locale e non dagli host che la usano come firewall)
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# SSH Regole per permettere l'accesso al server SSH locale da un IP esterno fidato precedentemente indicato
/sbin/iptables -A INPUT -s $TRUSTED -p TCP --dport 22 -j ACCEPT
# VPN NATTING Esegue un DNAT di un server VPN che usa pptp (TCP porta 1723) e GRE (IP type 47) e permette l'accesso al server solo
da un IP sorgente definito
/sbin/iptables -A FORWARD -s $USER -p TCP --dport 1723 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -d $EGO -p tcp --dport 1723 -j DNAT --to-dest $VPNSERVER:1723
/sbin/iptables -t nat -A PREROUTING -d $EGO -p 47 -i eth1 -j DNAT --to-dest $VPNSERVER
# LOGGING Log di tutti i pacchetti, esclusi i broadcast, prima di essere droppati dalla regole di default. I logging viene fatto con livello
debug per isolarlo da altri log di sistema. Per cui è necessario scrivere in /etc/syslog.conf una riga tipo:
kern.debug /var/log/iptables.log
/sbin/iptables -A INPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[INPUT DROP] : "
/sbin/iptables -A OUTPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[OUTPUT DROP] : "
|
Come potete vedere ho tolto tutto quello che ( credo non mi servisse, almeno per farlo partire adesso ) e l'ho ( spero ) configurato secondo le mie interfacce!!
Tutti i moduli del kernel richiesti sono stati caricati e che le interfacce funzionano.
Non so più dove sbattere la testa, ma vorrei fare tutto in riga di comando e non usare tool grafici perchè vorrei cercare di ampliare le mie conoscenze, non avere già la pappa pronta! Grazie in anticipo a chiunque vorrà aiutarmi!!!! |
|
Back to top |
|
 |
makoomba Bodhisattva


Joined: 03 Jun 2004 Posts: 1856
|
Posted: Mon Sep 17, 2007 2:45 pm Post subject: |
|
|
sposto in discussione perchè si tratta di un problema di configurazione del firewall (quindi non strettamente legato a gentoo) _________________ When all else fails, read the instructions. |
|
Back to top |
|
 |
Cazzantonio Bodhisattva


Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Mon Sep 17, 2007 3:30 pm Post subject: |
|
|
https://forums.gentoo.org/viewtopic-t-340333.html
Qua c'era stata una mini discussione con uno script funzionante da cui puoi partire per estenderlo... forse ti può essere utile _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
 |
alegioit Tux's lil' helper

Joined: 13 Jul 2007 Posts: 78
|
Posted: Mon Sep 17, 2007 4:04 pm Post subject: |
|
|
Grazie Cazzantonio!! Vediamo che cavolo riesco a combinare!!!
Grazie ancora! |
|
Back to top |
|
 |
alegioit Tux's lil' helper

Joined: 13 Jul 2007 Posts: 78
|
Posted: Mon Sep 17, 2007 7:03 pm Post subject: |
|
|
Ehm..... ho tentato per 3 ore di fila, ma credo che la mia conoscenza di iptables sia veramente pessima............
Ho usato il tuo script ( sia quello di init sia quello contenente le regole ) aggiungendogli qualcosa, ma non mi va!
I problemi che ho riscontrato sono:
1° se faccio partire lo script le directory condivise con samba non mi risultano più accessibili da windows ( suppongo che ci siano delle porte da aprire, ma non è uesto il problema )
2° quando lo script è attivo non posso più pingare niente nella rete interna, ma all'esterno si ( ess www.google.it )
3° Come descritto in un post nel topic che mi hai dato ho inserito solo una regola in più per fare il natting, ma non credo funzioni...
La regola che ho inserito ( alla fine ) è:
# iptables -t nat -P POSTROUTING DROP
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Non so più dove sbattere la testa..... teoricamente da quello che ho capito se consento il forward dagli ip della rete interna e poi gli faccio mascherare i pacchetti con quell' ip dovrebbe nattarmi no???? Invece non mi funziona...... ( in altre parole se tolgo tutte le regole e metto solo quelle di seguito non dovrebbe funzionarmi da nat???? )
iptables -A FORWARD -s 192.168.0.0/255.255.255.0 -i eth0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE
Booooooooohhhhhhhhhhhhh
PS: se hai bisogno posto gli script che ho inserito, ma sono uguali ai tuoi solo con i parametri ( interfacce, ip dei dns ) cambiati. Però lo posso fare solo domani pomeriggio siccome non posso raggiungere il server. |
|
Back to top |
|
 |
Cazzantonio Bodhisattva


Joined: 20 Mar 2004 Posts: 4514 Location: Somewere around the world
|
Posted: Tue Sep 18, 2007 8:52 am Post subject: |
|
|
non ho capito bene cosa hai fatto ma sei sicuro di aver letto lo script? (lascia perdere per ora l'initscript che è solo per bellezza)
Hai messo le catene giuste nelle funzioni che ti servono? Mi pare sia già definita una funzione di default (server) che apre le porte anche per samba...
Comunque non mi sembra il caso di parlare dello script qui. C'è un thread apposito per quello.
E poi dove e perché hai messo la regola che dici? Perché droppi tutto e poi fai il masquerade? _________________ Any mans death diminishes me, because I am involved in Mankinde; and therefore never send to know for whom the bell tolls; It tolls for thee.
-John Donne |
|
Back to top |
|
 |
alegioit Tux's lil' helper

Joined: 13 Jul 2007 Posts: 78
|
Posted: Tue Sep 18, 2007 10:26 am Post subject: |
|
|
Ok, grazie della pazienza, vado nel topic che mi hai linkato tu!
Grazie ancora! |
|
Back to top |
|
 |
alegioit Tux's lil' helper

Joined: 13 Jul 2007 Posts: 78
|
Posted: Tue Sep 18, 2007 11:50 am Post subject: |
|
|
Cazzantonio, ti rispondo per la regola che ho inserito qui e poi mi sposto sull'altro topic, così non faccamo confusione.
Intanto ancora grazie per la pazienza!
La regola che ho trovato è qui: http://www.faqs.org/docs/linux_network/x-087-2-masq.configuration.html
naturalmente avrò fatto qualche cavolata ed anche a me il fatto che venissero droppati i pacchetti non so a cosa potesse servire.... boh se mi illumini sul pechè hanno scritto così ti sarei grato!
Il mio secondo quesito che ho scritto era: ma se scrivo uno script che contiene solo le tre regole che ho scritto non dovrebbe funzionare ( non avrei nessuna funzionalità firewall, ma almeno natta la lan interna, che per adesso mi va bene! ). Il problema è che non va! |
|
Back to top |
|
 |
IlGab Guru


Joined: 26 Nov 2004 Posts: 486
|
Posted: Wed Sep 19, 2007 2:54 pm Post subject: |
|
|
Secondo me al posto che partire da un mega script ti conviene aggiungere regola per regola quello che ti serve e verificare passo passo le funzionalità.
Inizia con l'impostare l' ip forwarding e testare il masquerade:
Code: |
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
|
In questo modo le tue macchine interne dovrebbero navigare, poi crei man mano le altre regole. |
|
Back to top |
|
 |
djinnZ Advocate


Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Wed Sep 19, 2007 6:01 pm Post subject: |
|
|
@ilgab: quoto, passo passo si impara (molto) con i mega-script si fanno solo pasticci.
Se poi hai da impostare routing/firewalling su 50 pc... o lo script o il manicomio. Ma non è il caso mi pare.
un tips simpatico (devi abilitare nel kernel il filtraggio arp per farlo) se usi gli ip statici e un AP/router da quattro soldi (facilmente craccabile):
-A INPUT -m mac -s (ip di un pc della rete) --mac-source (mac del router) -j DROP
e
-A INPUT -m mac -s (ip di un pc della rete) ! --mac-source (mac del pc in questione) -j DROP
il primo impedisce al router di spacciarsi per un pc della rete il secondo ad un pc della rete di avere un ip differente da quello assegnato.
NB: è un di più molto utile non una misura di sicurezza sufficiente di per se. _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist  |
|
Back to top |
|
 |
andreac n00b

Joined: 03 Aug 2004 Posts: 14 Location: Mergo
|
Posted: Fri Sep 21, 2007 11:38 am Post subject: |
|
|
Ma perche' non provi con shorewall?
Una volta installato lavora come servizio lanciato al boot.
E' vero che si tratta in fin dei conti di un "megascript" come lo chiamate voi,
ma modificando alcuni file di configurazione puoi impostare in modo semplice
tutte le configurazioni che vuoi, liberandoti dall'incubo di scovare magari
un semplice errore di battitura, o un parametro errato nell'articolata sintassi di iptables  _________________ Andrea |
|
Back to top |
|
 |
|