Configurazione rete locale con Iptables + Router + Switch

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
themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Configurazione rete locale con Iptables + Router + Switch

Messaggio da themash »

Salve ragazzi,
vi scrivo perchè ho bisogno di qualche consiglio dato che non riesco a far funzionare a dovere una rete da me creata, vuoi per un pizzico di incompetenza, vuoi perchè febbricitante credo di tralasciare qualche dettaglio fondamentale...
Inizialmente fungeva tutto, la configurazione era così composta:

+ modem ethernet (10.0.0.1)
|
|___________
|eth0 (10.0.0.10)
| | FIREWALL /GATEWAY con REDHAT Linux
|eth1 (192.168.0.1)
|------------|
|
|
--------------
| |
| | ROUTER aDSL WIRELESS 3COM (192.168.0.254)
|___________|
|
|------- PC1 (192.168.0.2)
|------- PC2 (192.168.0.3)
|------- PC WIRELESS

in /etc/resolv.conf i due dns, primario e secondario.

Successivamente decisi di complicarmi la vita (anche per esigenze personali) e ho riorganizzato la rete in questo modo:

+ ROUTER aDSL WIRELESS 3COM (192.168.0.254)
|
|___________
|eth0 (192.168.0.1 - gateway 192.168.0.254)
| | FIREWALL /GATEWAY con REDHAT Linux
|eth1 (192.168.0.2 - gateway non impostato)
|------------|
|
|
--------------
| | switch 8 porte d-link
| |
|___________|
|
|------- PC1 (192.168.0.3 - gateway 192.168.0.2 - dns 1 dns 2)
|------- PC2 (192.168.0.4 - gateway 192.168.0.2 - dns 1 dns 2)

Da premettere che questo router 3com è fantastico in termini di prestazioni e affidabilità, in caso di traffico pesante (come può essere il p2p) garantisce prestazioni di tutto rispetto,al contrario del modem ethernet (che nel mio caso è un router) che in brevissimo tempo va in overrun e si blocca.
Con la nuova configurazione però non funziona più niente.Dai pc collegati allo switch non riesco a pingare la eth1 (192.168.0.2) e figuriamoci la eth0 (192.168.0.1) che il router. Difatti non naviga un bel niente, neanche il firewall stesso.
Per farvi rendere conto della configurazione di iptables vi riporto le regole impostate in precedenza:
#!/bin/sh
echo "#####################################################"
echo "########### LANSECURE ENTERPRISE FIREWALL ###########"
echo "########### Versione 1.8 - By TheMash ###########"
echo "#####################################################"
echo " Inizializzazione Enterprise Firewall..."

# Inizializzazioni variabili
echo " Definizione Interfacce...."
#Interfaccia Internet
EXTIF='eth0'
#Interfaccia LAN
INTIF='eth1'
#Definizione rete locale
LANINT="192.168.0.0/24"
#Indirizzi privati - non ruotati su Internet (serve per l'antispoof)
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"

#Definizione Client della rete
echo " Definizione Clients..."
client2='192.168.0.2'
client3='192.168.0.3'
client4='192.168.0.4'
clientmobile='192.168.0.10'

#Servizi presenti nella rete
echo " Definizione porte servizi..."
emuletcp1="4661"
emuletcp2="4662"
emuleudp="4665 4672"

######## FINE VARIABILI ########

# Azzera e pulisce ogni regola esistente

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -F
iptables -F -t nat
iptables -X
iptables -Z

#Settaggio impostazioni di base
#echo " Settaggio impostazioni di base..."
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# Attivazione Masquerading & Forwarding
echo " Attivazione IP Forwarding..."
echo "1" > /proc/sys/net/ipv4/ip_forward

# ICMP Rules ####################################
#echo " Settaggio impostazioni di sicurezza..."
# Non risponde ai ping broadcast
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# Ignora finti messaggi di errore ICMP
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Rifiuta pacchetti ICMP di route redirection
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects
# Antispoof!
echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
# Non risponde ai ping di broadcast
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

#Regole Antispoofing
echo " Attivazione anti-spoof..."
iptables -A INPUT -i $EXTIF -s $CLASS_A -j DROP
iptables -A INPUT -i $EXTIF -s $CLASS_B -j DROP
iptables -A INPUT -i $EXTIF -s $CLASS_C -j DROP
iptables -A INPUT -i $EXTIF -s $CLASS_D_MULTICAST -j DROP
iptables -A INPUT -i $EXTIF -s $CLASS_E_RESERVED_NET -j DROP
iptables -A INPUT -i $EXTIF -d $LOOPBACK -j DROP

######### INIZIO REGOLE DI SISTEMA ##########
echo " Settaggio regole Firewall..."

# Traffico di loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Permette traffico locale e della rete locale verso il Firewall
echo " Definizione traffico LAN autorizzato..."
iptables -A INPUT -i $INTIF -s $LANINT -j ACCEPT
iptables -A OUTPUT -o $INTIF -d $LANINT -j ACCEPT

# Permette traffico dalla rete locale a Internet
# Forward tutti pacchetti aventi sorgente la LAN interna verso tutte le destinazioni
iptables -A FORWARD -s $LANINT -d 0/0 -j ACCEPT

# Permette il forwarding di pacchetti correlati a comunicazioni esistenti
iptables -A FORWARD -d $LANINT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Maschera gli IP sorgenti della LAN interna con l'IP dell'interfaccia Internet
iptables -t nat -A POSTROUTING -o $EXTIF -s $LANINT -j MASQUERADE

# Permette all'host locale di collegarsi ad IP remoti e ricevere pacchetti di risposta
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

################ SERVIZI DI RETE ###################

echo " Settaggio servizi di rete..."

#echo " Attivazione Transparent Proxy..."
#iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128

#Webmin Accessibile dalla LAN
#iptables -A INPUT -s $LANINT -p tcp --dport 10000 -j ACCEPT

#Remote Desktop Connection
#iptables -A OUTPUT -o $INTIF -p tcp --dport 3389 -j ACCEPT

# Accesso SSH dal mio pc Smile
iptables -A INPUT -s $client3 -p tcp --dport 22 -j ACCEPT

#iptables -A INPUT -i $EXTIF -p tcp --dport 22 -j DROP

# Server FTP locale
iptables -A INPUT -i $EXTIF -p tcp --dport 21 -j ACCEPT


########## CLIENT3 PORT FORWARDING #############

echo " Apertura porte servizi P2P..."
iptables -I INPUT -p tcp --dport 4661:4662 -j ACCEPT
iptables -I INPUT -p udp --dport 4672 -j ACCEPT
iptables -I INPUT -p udp --dport 4665 -j ACCEPT


echo " Attivazione Port Forwarding P2P..."
iptables -A FORWARD -p tcp --dport 4661:4662 -j ACCEPT
iptables -A FORWARD -p udp --dport 4672 -j ACCEPT
iptables -A FORWARD -p udp --dport 4665 -j ACCEPT


iptables -t nat -I PREROUTING -i $EXTIF -p tcp --dport 4661:4662 -j DNAT \
--to-destination $client3

iptables -t nat -I PREROUTING -i $EXTIF -p udp --dport 4672 -j DNAT \
--to-destination $client3:4672

iptables -t nat -I PREROUTING -i $EXTIF -p udp --dport 4665 -j DNAT \
--to-destination $client3:4665

# Blocca il Flooding SYN
iptables -A INPUT -p tcp -i $EXTIF --syn -m limit --limit 1/s -j ACCEPT

# Blocca i Port Scanner
iptables -A INPUT -p tcp -i $EXTIF --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT


# Logging dei pacchetti rifiutati (tranne broadcast)
#iptables -A INPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[INPUT DROP] : "
#iptables -A OUTPUT -m pkttype --pkt-type ! broadcast -j LOG --log-level=DEBUG --log-prefix="[OUTPUT DROP] : "

echo " Firewall attivato."

#### FINE CONFIGURAZIONE ####


*** EDIT : il problema dell'impossibilità di pingare la eth1 da un pc dello switch potrebbe dipendere dalle regole impostate per il peer 2 peer, dove abbiamo sulla catena nat il prerouting dell'interfaccia esterna all'ip 192.168.0.3 sulle porte rispettive.
Presumo possa interferire con il ping, voi ch ne pensate? Intanto il primo obiettivo sarebbe poter pingare una ethernet del firewall. successivametne vediamo il resto.

kobaiachi
Linux 4.x
Linux 4.x
Messaggi: 1368
Iscritto il: gio 14 lug 2005, 0:00
Località: roma
Contatta:

Messaggio da kobaiachi »

considera che sono tornato adesso a casa e sono un bel po brillo .


comunque o o fai funzionare come uno switch-bridge(ed in questo caso non sono necessari nemmeno gli ip sulle schede di rete) e sugli host metti come gateway l'ip del router 192.168.0.254 o cambi la rete tra il router ed il firewall da 192.168.0.0/24 a 192.168.1.0/24
metti a router 192.168.1.254 ed al firewall 192.168.1.1 ovviamente poi devi reimpostare le regole del firewall.......

non ho letto tutta la conf del firewa ma sembra tanto uno di quei firewall che si trovano preconfezionati su internet io non so se lo hai scritto tu quel firewall pero se ti posso dare un consiglio prima di usare un firewall scritto da altri almeno cerca di studiarlo bene perche se poi devi aggiugere o levare qualcosa e non lo conosci a menadito potresti creare gorssi problemi di insicurezza.

themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Messaggio da themash »

il firewall non l'ho scritto interamente io ovviamente, ho apportato qualche modifica.
Prima di utilizzarlo l'ho comunque studiato in ogni parte, di solito faccio così, mica arrivo e lo piazzo li senza sapere che fa!
E' che non avendo molta esperienza in merito volevo cambiare appunto il layout della rete per apprendere qualche nozione in più...
Grazie della risposta anche se eri brillo, l'ho apprezzato :badgrin:
inizialmente avevo pensato anche io di cambiare la subnet, ma della eth1 e quindi nei vari pc.
La cosa strana è che comunque il fatto che attaccando i pc allo switch e collegando lo switch alla eth1 (scheda di rete interna) dovrebbe comunque pingare l'interfaccia..
Ora ci smanetto un po' che ho un po' di tempo...
Intanto una mano sarebbe gradita. Non voglio la soluzione col cucchiaino ma qualcuno che mi aiutasse a capire un attimo.

kobaiachi
Linux 4.x
Linux 4.x
Messaggi: 1368
Iscritto il: gio 14 lug 2005, 0:00
Località: roma
Contatta:

Messaggio da kobaiachi »

purtroppo oggi devo uscire pero al volo

l'interfaccia è up ?

hai provato a dare da root "ifconfig eth1 up"

magari l'interfaccia è in down

hai usato un cavo cross tra eth1 e lo switch?

se è cosi devi usare un cavo dritto .

themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Messaggio da themash »

l'interfaccia ovviamente è up, controllata già ieri con il solito comando ifconfig.
Per il cavo si è un cross, ma in ogni caso nno c'è bisogno di quello patch (dritto) poichè lo switch fa autosensing e riconosce che tipo di cavo si sta utilizzando, regolandosi di conseguenza.
Oggi riprovo dato che non ho impegni (finalmente posso riposarmi un po') a riscrivere il firewall con le regole fondamentali, senza ammenicoli vari.
Grazie per l'aiuto!
Buon Natale a te e famiglia ;)

themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Messaggio da themash »

comunque ho come l'impressione che il problema sia il cavo... mi sa che occorre il cavo patch.

themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Messaggio da themash »

sono riuscito a sistemare la situazione.
Alla interfaccia esterna (eth0) che è collegata al router ho assegnato 192.168.1.1 come indirizzo e al router 192.168.1.254.
Impostando i dns sulla macchina linux riesco a navigare da essa senza problemi.
Per i pc collegati allo swtich ho dedicato la eth1 con subnet 192.168.0.0 invece e finalmente riesco a pingare la eth1, e cosa di lusso per quello che mi aspettavo riesco a pingare anche la eth0 sulla subnet 192.168.1.0.
Non riesco però a pingare il router.
E' problema fondamentalmente di iptables, e presuppongo sia la catena forward da configurare.
Qualche consiglio?


EDIT : Praticamente mi rispondo da solo :-)
Ad ogni modo leggendo qualche guida su iptables e analizzando la rete come è strutturata ora sono riuscito a pingare il router e udite udite a far navigare i pc collegati allo switch! Magnifico, meglio di così...
Ho rifatto la configurazione del firewall, temporanea e per nulla in sicurezza, era solo per far si che tutto funzionasse.
Ecco la config:

#!/bin/sh

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

iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -Z
iptables -X

#iptables -P INPUT DROP
#iptables -P OUTPUT DROP
#iptables -P FORWARD DROP

iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j ACCEPT
iptables -A OUTPUT -o eth1 -d 192.168.0.0/24 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d 0/0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED \
-d 192.168.0.0/24 -j ACCEPT

L'unico passaggio che mi sfuggiva era quale gateway assegnare ad una determinata eth e che subnet utilizzare nelle due reti (quella del router e quella interna dietro switch).
Aggiornamenti a breve, che spero possano essere d'aiuto a chi necessitano.

themash
Linux 0.x
Linux 0.x
Messaggi: 29
Iscritto il: gio 23 nov 2006, 15:48

Messaggio da themash »

Dopo aver risolto questi inconvenienti ne è sorto però un altro.
Cambiando la subnet del router e avendo aggiunto lo switch sul troncone interno della rete praticamente il client wireless (che è coem se fosse collegato ad uno switch del router) però non può più accedere ai servizi della rete interna, tipo la stampa (che avviene tramita una stampante collegata al firewall stesso), poichè l'interfaccia che gli permetterebbe di comunicare col firewall è eth0, che è l'interfaccia esterna sulla quale il firewall vedendosi arrivare una richiesta di connessione da parte di un ip 192.168.1.5 (il client wireless) la rigetterebbe poichè la riconoscerebbe come maldestro tentativo di spoofing.
A questo punto si sarebbe tentati di aggiungere una regoletta del tipo:

iptables -I INPUT -i eth0 -s 192.168.1.5 -d $LANINT -j ACCEPT
iptables -I FORWARD -i eth0 -s 192.168.1.5 -d $LANINT -j ACCEPT

ma non credo sia il massimo della sicurezza.
Avete qualche idea in merito?
Pensavo di aggiungere una terza interfaccia di rete sul firewall e tentare qualcosa, ma vorrei prima un vostro parere se possibile.
Grazie ancora!

Rispondi