Repository 32bit  Forum
Repository 64bit  Wiki

Iptables, routing e catena di forward

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.

Iptables, routing e catena di forward

Messaggioda ciaspola » ven mar 10, 2006 11:52

Ciao a tutti,
sono approdata qui su consiglio di un conoscente .

E' da un po' che lavoro con Linux, in genere me la cavo, ma da ieri mi ritrovo con una problematica irrisolta:

Mi trovo, semplificando a dover affrontare questa situazione:

RETE_A FIREWALL LINUX RETE_B
192.168.0.0/24 ----> eth0 eth1 ---> 192.168.100.0/24

RETE_A e RETE_B hanno rispettivamente come gw gli ip delle eth0 e eth1 di
FIREALL LINUX (192.168.0.100 e 192.168.100.100)

Il FIREWALL_LINUX e' configurato con echo 1 > /proc/sys/net/ipv4/ip_forward.

Devo fare in modo che:
Rete B possa accedere a RETE_A su tutti i protocolli
RETE A possa accedere a RETE_B solo sulle porte 80, 443, 22 , 25 e
terminal service (che ovviamente non ricordo)

Non ho mai avuto a che fare con firewall che devono fare routing e non nat.
Penso si debba agire sulla chain di forward ... Pensavo a qualcosa del
genere:

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

iptables-A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-m tcp --dport 80 -j ACCEPT

iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP

Per ora ho messo la regola solo x la porta 80 per semplificarmi la vita.

Il problema e' che non funziona: quel che succede e' che RETE_A riesce ad
accedere ad un server web su RETE_B, ma RETE_B non ne vuole sapere di
raggiungere RETE_A .

Spero in un qualche suggermimento.

Grazie.

ciaspola
ciaspola
Linux 1.0
Linux 1.0
 
Messaggi: 5
Iscritto il: ven mar 10, 2006 11:46
Località: torino

Messaggioda sid77 » ven mar 10, 2006 12:37

hai provato a routare le richieste di 192.168.100.0/24 verso 192.168.0.0/24 da eth1 a eth0?
non credo sia un problema di iptabes per la direzione B->A
Avatar utente
sid77
Linux 2.6
Linux 2.6
 
Messaggi: 568
Iscritto il: mar mag 31, 2005 23:00
Località: PowerPC
Slackware: 12.0/12.1/curr (ppc)

Messaggioda ciaspola » ven mar 10, 2006 12:43

sid77 ha scritto:hai provato a routare le richieste di 192.168.100.0/24 verso 192.168.0.0/24 da eth1 a eth0?
non credo sia un problema di iptabes per la direzione B->A


Correggetemi se sbaglio ma :

/proc/sys/net/ipv4/ip_forward e' a 1

se flusho tutto le due reti si vedono su tutti i protocolli .

Quindi non credo che sia un problema di routing ...
a meno che non ci sia qualcos'altro di particolare da fare come route che a me e' ignoto ....
ciaspola
Linux 1.0
Linux 1.0
 
Messaggi: 5
Iscritto il: ven mar 10, 2006 11:46
Località: torino

Messaggioda Paoletta » ven mar 10, 2006 13:18

Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

la butto lì: magari perchè quando questa regola viene valutata la decisione sull'instradamento non è ancora stata presa e quindi non è detto che il pacchetto proveniente da eth1 vada su eth0..prova a far così:
Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -j ACCEPT

tanto dalla rete B deve passare tutto, giusto?
P.S. se non funziona (come molto probabilmente succederà
:wink: ) prova a non eseguire lo script in un colpo solo, ma a scrivere manualmente ogni istruzione e a provare , di volta in volta, se la rete va o no; così capirai qual è l'istruzione "colpevole"

ciao!
Avatar utente
Paoletta
Staff
Staff
 
Messaggi: 3899
Iscritto il: dom apr 24, 2005 23:00
Località: Varese
Slackware: 13.1
Desktop: fluxbox

Messaggioda ciaspola » ven mar 10, 2006 13:43

Paoletta ha scritto:
Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

la butto lì: magari perchè quando questa regola viene valutata la decisione sull'instradamento non è ancora stata presa e quindi non è detto che il pacchetto proveniente da eth1 vada su eth0..prova a far così:
Codice: Seleziona tutto
iptables -A FORWARD -i eth1 -j ACCEPT

tanto dalla rete B deve passare tutto, giusto?
P.S. se non funziona (come molto probabilmente succederà
:wink: ) prova a non eseguire lo script in un colpo solo, ma a scrivere manualmente ogni istruzione e a provare , di volta in volta, se la rete va o no; così capirai qual è l'istruzione "colpevole"

ciao!


Puo' essere in effetti ora provo a levare la doppia interfaccia ...

Si da B verso fuori deve passare tutto ....
e' solo il traffico in ingresso da filtrare ....

grazie :)
ciaspola
Linux 1.0
Linux 1.0
 
Messaggi: 5
Iscritto il: ven mar 10, 2006 11:46
Località: torino

Messaggioda KiaZ » ven mar 10, 2006 15:21

ho provato a semplificare ulteriormente e a usare solo -o e non -i

[root@kiazserver iptables]# iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP
[root@kiazserver iptables]# iptables -I FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp --dport 80 -j ACCEPT
[root@kiazserver iptables]#
[root@kiazserver iptables]#
[root@kiazserver iptables]# iptables -I FORWARD -p tcp -o eth0 -j ACCEPT

il risultato e' che :

ReteA (0.203) riesce ad andare in http su reteB (100.5)

Rete B continua a non volerne sapere di attraversare il firewall :(

Non so piu' dove sbattere la testa ...
Le regole sugli stati servono a qualcosa in questo caso ?

Se faccio tcpdump sul firewall noto che i pacchetti arrivano alla destinazione, tornano indietro ma poi si bloccano sull'interfaccia eth1 .

e' come se un passaggio verso la eth1 venga comunque contemplato nel DROP :( :(


Scusate il doppio nick ... e' che credevo di aver dimenticato la pass di sto forum e chiudendo e riaprendo il browser mi son loggata con la vecchia registrazione !!!

ciaspola aka KiaZ
KiaZ
Linux 1.0
Linux 1.0
 
Messaggi: 32
Iscritto il: lun ago 23, 2004 23:00

Messaggioda Paoletta » ven mar 10, 2006 15:43

probabilmente i pacchetti che si bloccano sono pacchetti tcp ma non della porta 80 e matchano con questa regola:
Codice: Seleziona tutto
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP

ripeto, prova ad inserire a mano una regola per volta dopo aver resettato il fw e testa la rete ad ogni inserimento... troverai la regola colpevole...
Avatar utente
Paoletta
Staff
Staff
 
Messaggi: 3899
Iscritto il: dom apr 24, 2005 23:00
Località: Varese
Slackware: 13.1
Desktop: fluxbox

Messaggioda KiaZ » ven mar 10, 2006 15:50

Paoletta ha scritto:probabilmente i pacchetti che si bloccano sono pacchetti tcp ma non della porta 80 e matchano con questa regola:
Codice: Seleziona tutto
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -i eth0 -o eth1 -p tcp
-j DROP

ripeto, prova ad inserire a mano una regola per volta dopo aver resettato il fw e testa la rete ad ogni inserimento... troverai la regola colpevole...


Lo so che matchano li ..
ho solo 3 regole le metto a mano
quando metto la DROP tutto smette di funzionare ...

e' come se i pacchetti generati 100.0 una volta che devono tornare alla stessa rete vengono droppati in quanto devono passare dalla eth0 alla eth1 .....

e' come se la regola fosse bidirezionale e non tenesse conto di chi ha generato il traffico ma funzionasse ad un livello un po' + basso .

Ora io non conosco nel profondo il comportamento di iptables, ma questo smanettando sulla INPUT non mi e' mai sucesso ......

Non e' che bisogna specificare qualche altro flag per farlo entrare nel merito del traffico "originato da" e non della direzione dei pacchetti e basta ???

KiaZ aka ciaspola
KiaZ
Linux 1.0
Linux 1.0
 
Messaggi: 32
Iscritto il: lun ago 23, 2004 23:00

Messaggioda ciaspola » ven mar 10, 2006 16:21

Pare che ci siamo !!

iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -A FORWARD -m state --state INVALID -j DROP
iptables -A FORWARD -d 192.168.100.0/255.255.255.0 -o eth1 -p tcp -j DROP

Ci volevano le regole sulle flag e sugli stati ... prese da quelle che uso nella chain di input ..
Ora ho aperto solo la 80 e nmap dice :

Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Interesting ports on 192.168.100.5:
(The 1662 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
80/tcp open http
Device type: general purpose
Running: Linux 2.4.X|2.5.X

Un grazie per avermi messo sulla buona strada !

ciaspola aka KiaZ
ciaspola
Linux 1.0
Linux 1.0
 
Messaggi: 5
Iscritto il: ven mar 10, 2006 11:46
Località: torino


Torna a Sicurezza

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti