PDA

Visualizza la versione completa : iptables matches ignorati


Lucadal
10-01-2011, 14:18
Salve a tutti.

Mi capita una cosa strana. Nel dare delle regole firewall tramite iptables, quando uso le opzioni -i e -o mi vengono ignorate.

Mi spiego meglio:

se do la regola ...
iptables -a INPUT -p tcp -i eth0 -j ACCEPT ..... non ho alcun tipo di errore, e con un ...
iptables -L .... reisco anche a visualizzarla!!
Il problema è che nella visualizzazione non si vede che tale regola è stata scritta per i soli pacchetti che hanno come interfaccia di ingresso eth0.

Mi chiedevo allora se, sebbene tale match non venga visualizzato facendo "iptables -L" viene comunque implementato, oppure se non sta proprio funzionando....

Nel secondo caso, come posso risolvere?

Vi ringrazio in anticipo
Saluti
Luca

charlieroot
10-01-2011, 19:20
Corretto che non ti dia il dettaglio.

Per più dettagli:


iptables -L -vv

Facendo dei test vengono applicate? Ricordati che iptables è sensibile all'ordine delle regole, ovvero cerca un matching del pacchetto esaminato a partire dalla prima fino all'ultima regola appesa. Se non trova un matching applica la politica di default della catena.

Lucadal
11-01-2011, 09:51
Grazie mille charlieroot....

sei stato chiarissimo!!

In realtà devo fare dei test su un'applicazione che per il momento non da segni di vita ... quindi volevo sapere se era un problema di configurazione firewall...

Grazie ancora!! :ciauz:

charlieroot
11-01-2011, 09:56
Figurati.. anzi se hai bisogno chiedi pure. Tra l'altro mi è venuta in mente una cosa : se hai due schede di rete e il server fa da router oltre che da firewall ricordati di abilitare l'ip forward a livello di kernel. Se no netfilter non farà passare niente tra una scheda e l'altra, anche se nella chain di iptables dice di sì. Te lo dico perchè per me non era così chiaro all'inizio, se qualcuno me l'avesse detto avrei risparmiato un pò di tempo :)

Lucadal
12-01-2011, 13:04
Grazie mille charlieroot.

In effetti ciò che hai pensato corrisponde quasi a ciò che devo fare.

L'IP Forward l'ho già attivato ... ed ho anche scoperto adesso qual'è il mio problema!!

Praticamente ho due schede di rete eth0 ed eth1; pensavo di raggiungerle entrambe senza problemi, ma mi sono accorto che la eth1 la raggiungo solo attraverso la eth0, nel momento in cui sono entrambe nella stessa rete.

Nel momento in cui metto la eth1 in una rete diversa dalla eth0, non la raggiungo più. Ovviamente le prove le faccio da un pc che è nella stessa rete della eth1.

Esempio:

eth0 [192.168.3.10, 255.255.255.0], eth1 [192.168.3.86, 255.255.255.0] Raggiungo eth1 tramite eth0 da 192.168.3.80.

eth0 [192.168.5.2, 255.255.255.0], eth1 [192.168.3.10, 255.255.255.0] Non raggiungo eth1 da 192.168.3.80 ma raggiungo eth0 da 192.168.5.3


Avreste qualche suggerimento, o qualche link da farmi spulciare??

Grazie in anticipo
Luca

charlieroot
12-01-2011, 13:12
Mi serve sapere quascosa di più sulla rete che intendi fare, così posso essere più specifico.

Immagino che la configurazione sia la classica:

Modem -> eth1 (rete 192.168.1.0)-> Linux router/firewall -> eth0 -> rete lan (rete 10.0.0.0) con N client connessi

( ovviamente i nomi delle schede e le classi di reti possono cambiare )

A questo punto mi serve sapere se la configurazione del server è solo router o se deve fare anche da firewall.

Lucadal
12-01-2011, 14:09
Il server deve fare il forwarding dei pacchetti da una interfaccia all'altra. Le regole di firewall vengono generate da un'applicazione che gira sullo stesso server.

Comunque, a prescindere da quello che devo farci, il problema vero è come faccio a configurare il server in modo tale da poter raggiungere l'interfaccia eth1 senza passare per la eth0.

PS: il sistema operativo è CentOS

charlieroot
12-01-2011, 15:10
Questo dovrebbe fare al caso tuo, modificare secondo esigenze



#!/bin/sh

# abilita il forwarding tra le due interfacce livello kernel
echo 1 > /proc/sys/net/ipv4/ip_forward

# resetta le regole precedentemente impostate e le custom chains
iptables -F
iptables -X

# impostiamo le politiche di base
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# abilitiamo il traffico dalla lan all'interfaccia "interna"
iptables -A INPUT -i eth1 -j ACCEPT

# abilitiamo il masqurading per far uscire su internet gli ip interni utilizzando un unico ip di uscita
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# abilitiamo il traffico dalla rete interna a quella esterna
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT



Però occhio, questo ti crea un router, quindi non c'è alcuna protezione per la rete interna.

Seconda cosa:

Le regole di firewall vengono generate da un'applicazione che gira sullo stesso server.
Questo potrebbe creare notevoli problemi di coerenza tra le regole impostate da te e quelle impostate dal suddetto programma, per il principio di cui ti parlavo l'altro giorno, cioè che l'ordine delle regole CAMBIA il risultato.

Insomma. le due politiche generate potrebbero tranquillamente fare a pugni.

Lucadal
12-01-2011, 16:51
Ti ringrazio molto!!

In realtà però, come ti dicevo prima, il problema vero non è tanto l'impostazione delle regole di firewall, ma raggiungere l'interfaccia eth1 del mio server direttamente senza passare dalla eth0.

Penso però che per questo problema sia il caso di creare eventualmente una nuova discussione...

Grazie ancora

sacarde
12-01-2011, 17:30
puoi sempre ampliare la rete a 255.255.0.0

Loading