[RISOLTO]Problemi di configurazione del router-firewall

Postate qui per tutte le discussioni legate alla sicurezza di Linux/Slackware

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Specificare se discussione/suggerimento o richiesta d'aiuto.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
nemo
Linux 0.x
Linux 0.x
Messaggi: 31
Iscritto il: sab 11 nov 2006, 15:19
Località: Linux City

[RISOLTO]Problemi di configurazione del router-firewall

Messaggio da nemo »

Mi è nato il seguente

PROBLEMA #1

Un router è collegato ad internet attraverso modem USB (connessione funzionante senza problemi) e presenta 3 schede di rete:
eth0 (su cui gira il server DHCP) ---> LAN
eth1 ---> DMZ
eth2 ---> VoIP

Ritenevo di aver costruito una serie di regole e di catene corrette, mentre invece la LAN non riesce a navigare (andiamo per ordine e cerchiamo di risolvere un problema alla volta; prossimamente sarà il turno della DMZ e poi del VoIP).

Ecco il codice che finora ho scritto e che non funziona :roll:
nemo ha scritto: IMPOSTAZIONE VARIABILI

Codice: Seleziona tutto

IP=192.168.0.30
IP_SERVER=192.168.0.31
INT_RETE_ESTERNA=ppp0
INT_RETE_INTERNA=eth0
INT_SERVER=eth1
INT_VOIP=eth2
LANIN=192.168.0.0/24
nemo ha scritto: GATAWAY E DHCP
maschero gli indirizzi della LAN diretti verso la rete esterna, configuro le schede di rete, avvio il server DHCP

Codice: Seleziona tutto

iptables -t nat -A POSTROUTING -o $INT_RETE_ESTERNA -J MASQUERADE
ifconfig $INT_RETE_INTERNA $IP netmask 255.255.255.0 up
ifconfig $INT_SERVER $IP_SERVER netmask 255.255.255.0 up
dhcpd $INT_RETE_INTERNA
nemo ha scritto: POLICY
rimuovo le regole delle catene e le catene definite dall'utente, azzero i contatori, accetto quello che esce verso l'esterno, blocco tutto quello che entra o è di passaggio.

Codice: Seleziona tutto

iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
nemo ha scritto: REGOLE DI INPUT
dovrebbe essere accettato tutto quello che viene dal localhost, dalla rete interna e dal server; quello che viene dalla rete esterna viene accettato solo se soddisfa determinate condizioni; la porta 53 del DNS è aperta.

Codice: Seleziona tutto

iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -i $INT_RETE_INTERNA -j ACCEPT
iptables -A INPUT -i $INT_SERVER -j ACCEPT
iptables -A INPUT -i $INT_RETE_ESTERNA -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 53 -j ACCEPT
nemo ha scritto: REGOLE DI FORWARD
accetto quello che proviene dalla LAN in direzione della rete interna o di quella esterna, accetto tutto quello che looppa sulla rete interna tranne i pacchetti che richiedono connessioni TCP, accetto (per ora senza restrizioni) tutto quello che viene inviato dalla rete interna e da quella esterna.

Codice: Seleziona tutto

iptables -A FORWARD -i $INT_RETE_INTERNA -p all -s $LANIN -j ACCEPT
iptables -A FORWARD -i $INT_RETE_ESTERNA -p all -s $LANIN -j ACCEPT
iptables -A FORWARD -s $LANIN -d 0/0 -j ACCEPT
iptables -A FORWARD -s 0/0 -d $LANIN -p tcp --syn -j DROP
iptables -A FORWARD -s 0/0 -d $LANIN -j ACCEPT
iptables -A FORWARD -o $INT_RETE_INTERNA  -j ACCEPT
iptables -A FORWARD -o $INT_RETE_ESTERNA -j ACCEPT
Beninteso: alcune regole, come queste ultime due, devono essere riviste e certamente mancano mooooooolte caratteristiche di sicurezza. Ma al momento non interessa restringere le possibilità di comunicazioni tra le reti: per impostare nuove regole c'è sempre tempo DOPO che la rete funziona!

Però adesso NON funziona! :roll:
Chi mi dà una mano?

:grazie:
Ultima modifica di nemo il mer 29 lug 2009, 21:08, modificato 1 volta in totale.

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

Messaggio da bloodlust »

visto che lo sai ;) snellisci questa catena di forward.

per la LAN interna (per ora) ti potrebbe bastare:

Codice: Seleziona tutto

iptables -A FORWARD -s $LANIN -j ACCEPT
iptables -A FORWARD -d $LANIN -j ACCEPT
comunque:
1) hai abilitato ip forwarding nel kernel? Se non lo hai fatto aggiungi in fondo al codice

Codice: Seleziona tutto

echo 1>/proc/sys/net/ipv4/ip_forward
o più semplicemente puoi rendere eseguibile /etc/rc.d/rc.ip_forwarding (ma attenzione che questo viene eseguito da rc.inet2 quindi probabilmente _PRIMA_ che tu esegui il tuo codice)

2) hai caricato i moduli necessari per connection tracking (ip_conntrack), per nat (iptable_nat) e masquerading (ipt_MASQUERADING)? Aggiungi un bel modprobe nel tuo codice.

3) perchè droppi i pacchetti TCP con il SYN bit settato che viaggiano rete_esterna --> rete_interna? E' un po' troppo restrittiva come regola. Piuttosto controlla che le nuove connessioni (--state NEW) abbiano il SYN attivo.

qualche consiglio:
- separa la configurazione delle interfacce dallo script che imposta le regole di iptables
- procedi per gradi: prima abilita il forwarding e assicurati che funzioni poi aggiungi man mano le singole regole
- leggiti un po' di documentazione a riguardo

ciao

Avatar utente
nemo
Linux 0.x
Linux 0.x
Messaggi: 31
Iscritto il: sab 11 nov 2006, 15:19
Località: Linux City

intanto è un inizio!

Messaggio da nemo »

anzitutto grazie della risposta!

Qualche precisazione:

1) per evitare la prolissità non avevo citato tutto il codice: di fatto l' ip forwarding nel kernel è già abilitato;

2) allo stesso tempo tutti i moduli, tra i quali quelli che citi, li ho digitati in un bel rc.moduli.personal che richiamo da rc.local, tanto per essere sicuro che ci siano (a proposito, dopo che tu mi hai postato sono andato a controllare e ho trovato di aver scritto ipt_MASQUERADE invece di ipt_MASQUERADING) ;) ;

3) credo tu abbia ragione sul fatto che la regola che droppa i pacchetti TCP con SYN flaggato sia troppo restrittiva; ma non so se potrebbe essere quella la causa del fatto che la LAN si pinga senza problema, ma da un terminale della LAN è impossibile eseguire un ping su internet.

Grazie del consiglio:
per la LAN interna (per ora) ti potrebbe bastare:

Codice: Seleziona tutto

iptables -A FORWARD -s $LANIN -j ACCEPT
iptables -A FORWARD -d $LANIN -j ACCEPT
Inserisco le regole da te suggerite e commento quelle esistenti...

Perchè dici di separare la configurazione delle interfacce dallo script che imposta le regole di iptables? Sono ignorante, davvero: penso che però se me lo dici una ragione buona ci deve essere. Mi piacerebbe conoscerla.

Di sicuro procederò per gradi: quando ho scritto le regole che leggi ero in piena fase di configurazione della LAN senza uscita su internet; quando la LAN ha funzionato mi sono concentrato sul suo dialogo con il mondo esterno :lol: Continuo di sicuro in questa direzione.

Più tardi mi rimetterò a testare qualcosa e anche i tuoi consigli!

E per la documentazione: sapendo di essere alle prime armi ne sto mangiando a pranzo a colazione e a cena! :roll: Ma come tu mi insegni, quando ci sono problemi 4 occhi vedono sempre meglio di 2.

grazie ancora (ma non sparire!) :lol:

To Be Continued...

bloodlust
Linux 3.x
Linux 3.x
Messaggi: 523
Iscritto il: mar 14 feb 2006, 12:02
Slackware: -1
Località: it_IT

Re: intanto è un inizio!

Messaggio da bloodlust »

nemo ha scritto: 2) allo stesso tempo tutti i moduli, tra i quali quelli che citi, li ho digitati in un bel rc.moduli.personal che richiamo da rc.local, tanto per essere sicuro che ci siano (a proposito, dopo che tu mi hai postato sono andato a controllare e ho trovato di aver scritto ipt_MASQUERADE invece di ipt_MASQUERADING) ;) ;
è stato un errore mio: il modulo si chiama ipt_MASQUERADE, quindi come lo avevi scritto tu.

ciao

Avatar utente
nemo
Linux 0.x
Linux 0.x
Messaggi: 31
Iscritto il: sab 11 nov 2006, 15:19
Località: Linux City

Buone notizie!

Messaggio da nemo »

Riassumo le ultime notizie:

1) il router non funzionava perchè :ahem: non avevo settato il corretto gateway in dhcpd.conf (dal momento che esco con un ip statico a mezzo modem USB, il gateway corrisponde a quell'ip); ora invece è tutto a posto! :lol:

2) ho modificato anche gli indirizzi delle schede di rete:
eth0 ---> LAN = 192.168.0.30
eth1 ---> DMZ = 192.168.1.30
eth2 ---> VoIP = 192.168.2.30
ora resta da far dialogare tra di loro le tre reti e farle uscire su Internet (con le rispettive regole di sicurezza) :oops:

Aspetto con fiducia qualche consiglio al riguardo... Per me sono tutti preziosi!

:grazie:

Rispondi