Newsgroup: it.comp.os.linux.sys
Titolo: iptables e filtro protocolli

Salve a tutti.
 
sara` che non so cosa cercare, ma ogni volta
che guardo su come filtrare protocolli con
iptables, trovo suggerimenti su come fare
filtri su porte.
Ovviamente, uno dice che se voglio evitare che
un utente usi http, devo chiudere le connessioni
verso la porta 80.
 
Il che funziona fintanto che un server e` standard,
ma non funziona piu` se uno piazza apache su 8080,
per esempio.
 
Esiste un metodo per filtrare (bloccare o permettere)
esattamente per protocollo e non per porta?
 
Il problema e` il seguente.
 
"bittorrent" puo` essere configurato per accettare
connessioni su qualunque porta.
Dato che il protocollo stesso non sembra essere
identificabile, un'opzione potrebbe essere quella
di bloccare tutto, cioe` tutte le porte, a meno
che il protocollo non sia "accettabile".
 
Qualche idea su come fare?
 
A latere, un problema sono le connessioni ftp,
dato che, almeno un server, trasferisce i dati
con una porta "random" sopra la 1024.
 
So che esiste "nf_conntrack_ftp", mi chiedevo
se potesse fare al caso mio (su questo non ho
ancora indagato con qualche motore di ricerca).
 
bye,
 
-- 
 
piergiorgio


Devi filtrare a Layer 7 per questo.
http://l7-filter.sourceforge.net/HOWTO-kernel
 

Mi unisco alla richiesta, ho diversi server DNS che periodicamente sono bombardati da query ricorsive che generano DDoS e vorrei bloccarle in qualche modo. Al momento sto facendo blackholing e filtri sulle stringhe con u32 (ma richiedono un bel po' di lavoro manuale). 
Ci sono modi più furbi per bloccare queste schifezze?


Grazie per il link.
 
Avevo gia` visto l7-filter, ma mi pare di capire
che non sia molto "seguito".
L'ultimo aggiornamento e` Ottobre 2013, cioe`
piu` di un anno fa.
 
Vedo, comunque, cosa si possa tirarci fuori...
 
bye,
 
-- 
 
piergiorgio

Qualche idea su come fare?
 
La via piu' semplice, rapida e brutale secondo me e' andare di MATCH usando
una opportvna signature per BitTorrent.
 
http://www.sans.org/reading-room/whitepapers/detection/detecting-torrents-snort-33144
 
 
pua-p2p.rules ought to be your friend.
 
E anche questo potrebbe essere utile: 
https://cipherdyne.org/fwsnort/
 
 
Leonardo
 
-- 
 
Questi non hanno speranza di morte; e la lor cieca vita e' tanto bassa,
Che 'nvidiosi son d'ogne altra sorte. Fama di loro il mondo esser non lassa;
Misericordia e Giustizia li sdegna; non ragioniam di lor, ma guarda e passa.

 
 
 
-- 
 
piergiorgio

 
 
A proposito di u32, sto cercando di vedere
come usarlo, ma, a quanto pare, senza successo.
 
-A OUTPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 1234 -m u32
--u32 "0>>22&0x3C@ 12>>26&0x3C@ 0=0x12345678" -j ACCEPT
 
Secondo il tutorial in:
 
http://www.stearns.org/doc/iptables-u32.v0.1.7.html
 
 
se ho letto bene, dovrebbe far passare tutto il
traffico alla porta 1234, ma solo se i primi 4
byte del pacchetto TCP sono 12345678.
 
A me non funziona.
 
Quello che pero` mi chiedo e` come fare il debug
di tale configurazione?
 
Detto altrimenti, come faccio a "vedere" il tentato
match con 1234567.
 
Tra l'altro, con wireshark ho confermato il valore 12345678
(per evitare equivoci, 12345678 e` un numero a caso, non
corrisponde al protocollo che cerco di filtrare) come primi
4 byte del payload TCP.
 
Suggerimenti?
 
bye,
 
-- 
 
piergiorgio

 --u32 "0>>22&0x3C@ 12>>26&0x3C@ 0=0x12345678" -j ACCEPT
 
Allora, pare che questa cosa funzioni, ma con
ESTABLISHED,RELATED invece di NEW.
 
Nella mia profonda ignoranza, immagino che in
caso di NEW, il magic number non sia presente...
 
Tra l'altro, --dport non serve a niente, in
questo caso...
 
bye,
 
pg


On 2014-11-23 17:28, Piergiorgio Sartor wrote:
[...]
 
A chi puo` interessare, pare sia riuscito a
risolvere in differente maniera.
 
Il SW che uso supporta SOCKS, cosi` ho creato
un utente fittizio che esegue:
 
ssh -N -D 
0.0.0.0:1080
 localhost
 
Poi, "iptables" e` configurato, usando il
modulo "owner", a far passare le connesioni
di quel utente.
 
Questo sembrerebbe funzionare.
 
Comunque, sarei interessato a commenti o
suggerimenti o critiche a tale metodo, in
modo da migliorare o cambiare il tutto.
 
Grazie,
 
pg
 
-- 
 
piergiorgio