[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Riminilug-general] [Fwd: Re: eMule e iptables]



Ringraziamenti ad Omar per la sua brillante spiegazione
(ormai non è più studente, ma è passato dall'altra parte ;) )

cmq, di solito nemmeno io mi ricordo bene tutti gli switch possibili
immaginabili, un po scopiazzo i miei script meglio venuti, un po vado a naso,
un po cerco sulla rete( da quando ho perso il mio preziosissimo manuale di
iptables sul treno); l'importante è capire bene il meccanismo, poi puoi fare di
tutto anche senza ricordarti come devi fare.
vado un po a naso:

> >iptables -A INPUT -p tcp -m tcp --dport 4662 -j ACCEPT

iptables è il comando, -A indica che la regola va aggiunta alla coda di INPUT,
-p indica il tipo di protocollo del pacchetto, -m sta per match ed indica il
modulo di iptables da usare, --dport indica che la porta di destinazione è 4662
-j è l'azione da intraprendere che in questo caso è ACCEPT (accetta)

se schematiziamo un pacchetto in questo modo:

SIP:SPORT:DIP:DPORT dove:

SIP è l'indirizzo di chi ha generato il pacchetto(e quindi spedito);
DIP è l'indirizzo associato a chi viene spedito il pacchetto, cioè la macchina
che lo riceve
SPORT la porta di sorgente, e quindi la porta associata al servizio che ha
spedito il pacchetto
DPORT la porta di destinazione associata al servizio che riceve il pacchetto

possiamo notare che il comando sopra descritto filtrerà i pacchetti di tipo tcp
spediti alla macchina locale (in INPUT) a cui sarà associato DIP e accetterà i
pacchetti a DPORT 4662 del servizio sulla macchina locale

> >iptables -A INPUT -p udp -m udp --dport 4672 -j ACCEPT

stessa cosa di prima ma con pacchetti di tipo udp e porta 4672, che è la porta
udp del mulo

> >iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

qui invece viene controllato lo stato dei pacchetti (-m state), lo stato
ESTABLISHED,RELATED indica che questa regola viene applicata solo alla
connessioni già stabilite o relative ad un'altra connessione già aperta e
indica anche in questo caso di accettare i pachetti,si rende necessaria quando
un servizio, come ftp sposta la connesione su un altra porta(anche se ftp è una
brutta bestia per i pf)
In questo modo le connessioni non in input non ti vengono troncate

> >iptables -t nat -A PREROUTING -p tcp -i eth0 -d $IP_TUO_FIREWALL --dport
> 4662
> >-j DNAT --to $IP_TUA_MACCHINA:4662

qui c'è la catena di PREROUTING, che assieme a quella di POSTROUTING è stata
aggiunta alle catene del vecchio pf (ipchain) del kernel INPUT,OUTPUT,FORWARD
Queste catene indicano un'azione da compiere rispettivamente prima che il
pacchetto venga processato dalla macchina(il firewall) e dopo, sostanzialm,ente
servono per fare nat e port forward; qui si rende necessario il prerouting in
quanto la macchina con il mulo ha un indirizzo ip nella rete privata interna
ala firewall.
poichè iptables ha varie tabelle, se non specifico chew la tabella da modificare
è quella di nat con lo switch -t, lui usa quella di filtro, -i indica l'interfaccia di rete in ingresso, -d indica l'indirizzo a cui è inviato il pacchetto, non avendo dmz questa rete specifica ha solo la possibilità di essere l'indirizzo del firewall o uno degli indirizzi asegnati al firewall; poi la porta di destinazione, che come nell'esempio perecedente è quella del servizio.
Con questa regola tutti i pacchetti indirizzati a quella porta vengono reindirizzati alla porta della macchina all'interno della rete locale alla porta  4662, l'azione in questo caso è DNAT, cioè destination nat, è possibile anche fare SNAT(source nat) ma non mi viene in mente un esempio al momento.


> >iptables -A FORWARD -p tcp -i eth0 -d $IP_TUA_MACCHINA --dport 4662 -j
> ACCEPT

Questa regola agisce sulla catena di forward, in pratica con la prima regola ho accettato i pacchetti destinati alle porte del mulo, con il secondo li ho rediretti alla macchina con il mulo, con questo accetto il traffico in transito tra la mia macchina firewall e quella con il mulo

> >iptables -t nat -A PREROUTING -p udp -i eth0 -d $IP_TUO_FIREWALL --dport
> 4672
> >-j DNAT --to $IP_TUA_MACCHINA:4672
> >iptables -A FORWARD -p udp -i eth0 -d $IP_TUA_MACCHINA --dport 4672 -j
> ACCEPT

queste ultime la stessa cosa delle precedenti ultime 2 per la porta udp


come vedi è semplice:

tabella (4 possibilità che ti lascio scoprire), azione (aggiungi,togli,pulisci ed altre chicche squisite) catena(fondamentalmente input,output,forward,snat e dnat) protocollo, filtro, interfaccia sorgente, destinazione, azione (varie e tutte gustose)
puoi inoltre specificare interfaccia di ingresso, ip ingresso, ip in usciota, interfaccia di uscita, hai tutte le possibili combinazioni, il limite è la tua fantasia.
ti consiglierei il man iptables, ma meglio se studi bene come funziona un firewall, una volta che l'ahi capito vai con un filo di gas(attaccatto con un tubo alla tua bocca)

ciao,
Se ce la faccio ci vediamo alla riunione così tu mi rompi le balle se non hai capito qualcosa o vuoi altre delucidazioni, che non ti darò ed invece ti delizierò con qualche mia perla di saggezza come al solito; ma dubito che riuscirò a venire stasera

PS: sicuramente ho fatto degli errori e naturalmente ogni correzione è accettata ma non gradita

_______________________________________________
Riminilug-general mailing list
Riminilug-general@xxxxxxxxxxxx
http://riminilug.it/mailman/listinfo/riminilug-general