| Autore: PUOJACKZ | Data: 2005-12-28 |
| Modificato:
Documento non modificato
|
Letture: 2547 |
|
Uno dei problemi di esclusione via server, che ha causato non pochi grattacapi agli amministratori delle reti IRC, è sempre stato quello di dover allontanare un utente non rispettoso delle regole nel nodo ov'era connesso, a volte sacrificando l'accesso anche ad una parte di chatters totalmente estranei. Come tutti ben sanno, il primo impulso di un admin quando identifica un Abuser (Abuse+User), è quello di porre un ban sufficientemente efficace da impedire un ReConnect a breve termine, se non pure immediato, di chi non a rispettato le regole di quieta convivenza. Tenendo in considerazione tale bisogno, son stati introdotti alcuni espedienti, nel corso degli anni: - L'uso dell'Ident Reply Validation, in quanto, permette ai tecnici di poter porre dei bans non solo basandosi sull'indirizzo IP dell'utente, ma anche sfruttando l'UserID di connessione. Questo strumento garantisce, quindi, l'allontanamento di un singolo utente specifico, se, ad esempio, più chatters si collegano alla rete IRC, tutti dalla stessa sorgente. - L'uso del CIDR ("Classless Inter Domain Routing"), che permette l'esclusione di un range d'utenti limitato, tenendo in considerazione della netmask assegnata, a loro, dall'InterNIC. Questo strumento, infatti, è utile per circoscrivere l'effetto della K:Line solamente ad una subnet virtuale, contenente il range d'indirizzi IP assegnati alla connessione dell'Abuser. - L'uso delle RegExp ("Regular Expression"). In origine, questo tool non era destinato per l'applicazione dei suoi effetti presso i Bans. Ultimamente, però, alcuni Services, hanno introdotto tale funzione, che, senza ombra di dubbio, permette l'impostazione di esclusioni il più possibili limitate all'host da allontanare. - L'uso delle WildCard Mask. Anche in questo caso, tale tool non era destinato per l'applicazione dei suoi effetti presso i Bans, bensì, per le decisioni di Allow/Deny presso le ACl (es. nei Routers). Tale strumento, però, permette una miglior selezione del range d'indirizzi IP da escludere, se applicati in modo corretto, al funzionamento delle K:Lines. CIDR - Introduzione L'CIDR è stato ideato col protocollo IPv4. Il formato di quest'ultimo è come segue: A.B.C.D Ove le lettere dalla 'A' alla 'D' sono valori di 8-bit. Questo indica che ogni cifra può avere un range che và da 0 a 255. Esempio: 129.56.4.234 Le cifre sono chiamate otteti. Un otteto non può essere più grande di 255, o inferiore a 0 (es. un numero negativo). CIDR significa "classless inter domain routing", maggiori dettagli negli RFC 1518 e 1519. E' stato introdotto principalmente a causa dello spreco di spazio nelle classi A e B. La meta era quella di dare la possibilità di utilizzare delle reti più piccole di quelle predisposte dalle classi IP, ad esempio dividendo una classe B in 256 classi "C". L'altro obbiettivo era quello di permettere l'aggregazione delle informazioni di routing, in modo che i routers potessero usare un route aggregato (come 194.145.96.0/20) invece di 16 classi C pubbliche. Si tenga presente che, nel numero di Hosts, vengono sottratti 2 IP, quello che dichiara l'inizio della rete o sottorete e quello che dichiara l'indirizzo di Broadcast della rete/sottorete, i quali non possono essere assegnati agli utenti. La Classe A è composta da tutti gli indirizzi che hanno il primo bit, del primo otteto, a "0", bitmap: 0nnnnnnn.hhhhhhhh.hhhhhhhh.hhhhhhhh (n=net, h=host) L'IP range è 0.0.0.0 - 126.255.255.255 Default NetMask: N.H.H.H, N° Networks: (2^7) - 2, N° Hosts: (2^24) - 2 (Si consideri che 127.0.0.0 - 127.255.255.255 non è un indirizzo di rete pubblico valido, in quanto è designato per il localhost (127.0.0.1), il loopback e altre funzioni diagnostiche. Inoltre, secondo gli RFC che dichiarano i range delle reti private per le LAN, l'indirizzo 10.0.0.0 - 10.255.255.255 (10.0.0.0/8) non è considerato routabile.) La Classe B è composta da tutti gli indirizzi che hanno i primi due bit, del primo otteto, a "10", bitmap: 10nnnnnn.nnnnnnnn.hhhhhhhh.hhhhhhhh (n=net, h=host) L'IP range è 128.0.0.0 - 191.255.255.255 Default NetMask: N.N.H.H, N° Networks: (2^14) - 2, N° Hosts: (2^16) - 2 (Secondo gli RFC che dichiarano i range delle reti private per le LAN, l'indirizzo 172.16.0.0 - 172.31.255.255 (172.16.0.0/12) non è considerato routabile.) La Classe C è composta da tutti gli indirizzi che hanno i primi tre bit, del primo otteto, a "110", bitmap: 110nnnnn.nnnnnnnn.nnnnnnnn.hhhhhhhh (n=net, h=host) L'IP range è 192.0.0.0 - 223.255.255.255 Default NetMask: N.N.N.H, N° Networks: (2^21) - 2, N° Hosts: (2^8) - 2 (Secondo gli RFC che dichiarano i range delle reti private per le LAN, l'indirizzo 192.168.0.0 - 192.168.255.255 (192.168.0.0/16) non è considerato routabile.) La Classe D è composta da tutti gli indirizzi che hanno i primi 4 bit a "1110", questa classe è detta di multicast e il bitmap net/host non è applicato in questo caso. L'IP range è 224.0.0.0 - 239.255.255.255 Non interessa IRC (nello specifico), almeno fino a quando qualcuno non crea un multicast IRC. La Classe E è composta da tutti gli indirizzi che hanno i primi 5 bit a "11110", questa classe è mantenuta per usi futuri. L'IP range è 240.0.0.0 - 247.255.255.255 CIDR - Uso generico del CIDR La notazione CIDR entra in gioco ora. Per quelli che sanno come una rete è formata, penso, che il termine "netmask." non sia del tutto nuovo. Praticamente, quest'ultima è un valore, anch'esso IPv4, che dichiara la grandezza di una rete. E' possibile sostituire la parola "dimensione" con "range", con discreta facilità. Questa chart descrive le classi nel formato CIDR e la loro wildcard equivalente, che può essere utile, in questi casi, per comprendere meglio: CIDR Dot Notation (netmask) Wildcard Equivalente ----------------------------------------------------------------- A.0.0.0/8 A.0.0.0/255.0.0.0 A.*.*.* o A.* A.B.0.0/16 A.B.0.0/255.255.0.0 A.B.*.* o A.B.* A.B.C.0/24 A.B.C.0/255.255.255.0 A.B.C.* o A.B.C.* A.B.C.D/32 A.B.C.D/255.255.255.255 A.B.C.D La domanda che tutti i newbies si chiedono a questo punto è la seguente: "Tutti questi valori e numeri cosa significano?" Ogni cosa relativa ai computer è basata in valori binari (1 e 0). Il binario gioca un ruolo fondamentale nella notazione CIDR. Osserva la prossima tabella: A B C D -------- -------- -------- -------- /8 == 11111111 . 00000000 . 00000000 . 00000000 == 255.0.0.0 /16 == 11111111 . 11111111 . 00000000 . 00000000 == 255.255.0.0 /24 == 11111111 . 11111111 . 11111111 . 00000000 == 255.255.255.0 /32 == 11111111 . 11111111 . 11111111 . 11111111 == 255.255.255.255 Questa qui sopra è la tabella binaria dei più comuni netblock. Gli "1" che vedi qua sopra sono valori di 8-bit, per ogni otteto. Se si divide un valore a 8-bit, scomponendolo in bit, otterrai quanto segue: 0 00 000 0 0 ^^^^^^^^_ 1° posto (1) |||||||__ 2° posto (2) ||||||___ 3° posto (4) |||||____ 4° posto (8) ||||_____ 5° posto (16) |||______ 6° posto (32) ||_______ 7° posto (64) |________ 8° posto (128) Ora, da quando il computer considera 0 un numero, occorre sottrarre uno (com'è detto; non è realmente come vien detto, ma per semplicità poniamo tutto con questa condizione) da tutti i possibili valori. Alcuni esempio dei valori decimali in binario: 15 == 00001111 (da sinistra a destra: 8+4+2+1) 16 == 00010000 (da sinistra a destra: 16) 53 == 00110101 (da sinistra a destra: 32+16+4+1) 79 == 01001111 (da sinistra a destra: 64+8+4+1) 254 == 11111110 (da sinistra a destra: 128+64+32+16+8+4+2) Così, con 8 bit, il range (come ho detto prima) va da 0 a 255. Se ti sembra tutto oscuro, fino a questo punto, ti consiglio di ritornare all'inizio a rileggerti tutto con calma. Pertanto, la tabella originale, introducendo l'CIDR da /1 fino a /8 risulterà: A B C D -------- -------- -------- -------- /1 == 10000000 . 00000000 . 00000000 . 00000000 == 128.0.0.0 /2 == 11000000 . 00000000 . 00000000 . 00000000 == 192.0.0.0 /3 == 11100000 . 00000000 . 00000000 . 00000000 == 224.0.0.0 /4 == 11110000 . 00000000 . 00000000 . 00000000 == 240.0.0.0 /5 == 11111000 . 00000000 . 00000000 . 00000000 == 248.0.0.0 /6 == 11111100 . 00000000 . 00000000 . 00000000 == 252.0.0.0 /7 == 11111110 . 00000000 . 00000000 . 00000000 == 254.0.0.0 /8 == 11111111 . 00000000 . 00000000 . 00000000 == 255.0.0.0 A questo punto, tutto questo dovrebbe esserti chiaro e dovresti esser capace di vedere, con precisione, quale guadagno si ottiene usando il CIDR. Se non riesci ancora, bene, proverò a spiegarlo meglio. Questa tabella fornisce un riferimento a tutti i valori CIDR per IPv4: CIDR| Netmask (Dot Notation) ----+--------------------- /1 | 128.0.0.0 /2 | 192.0.0.0 /3 | 224.0.0.0 /4 | 240.0.0.0 /5 | 248.0.0.0 /6 | 252.0.0.0 /7 | 254.0.0.0 /8 | 255.0.0.0 /9 | 255.128.0.0 /10 | 255.192.0.0 /11 | 255.224.0.0 /12 | 255.240.0.0 /13 | 255.248.0.0 /14 | 255.252.0.0 /15 | 255.254.0.0 /16 | 255.255.0.0 /17 | 255.255.128.0 /18 | 255.255.192.0 /19 | 255.255.224.0 /20 | 255.255.240.0 /21 | 255.255.248.0 /22 | 255.255.252.0 /23 | 255.255.254.0 /24 | 255.255.255.0 /25 | 255.255.255.128 /26 | 255.255.255.192 /27 | 255.255.255.224 /28 | 255.255.255.240 /29 | 255.255.255.248 /30 | 255.255.255.252 /31 | 255.255.255.254 /32 | 255.255.255.255 Gli indirizzi di broadcast sono SEMPRE DISPARI. CIDR - Legami con Ban e Kline & Esempi Se, ad esempio, l'utente di IP "193.12.51.10" causa problemi alla rete, di norma un Admin pone una Kline "193.12.51.*". Se viene, però, impostato un Ban su A.B.C.*, a causa dell'otteto D variabile, si andrà ad escludere tutti gli utenti, con un range da "A.B.C.0 - A.B.C.255", allontanando anche chi non ha colpa delle azioni compiute da "193.12.51.10". Tenendo in considerazione della tabella: CIDR Dot Notation (netmask) Wildcard Equivalente ----------------------------------------------------------------- A.0.0.0/8 A.0.0.0/255.0.0.0 A.*.*.* o A.* A.B.0.0/16 A.B.0.0/255.255.0.0 A.B.*.* o A.B.* A.B.C.0/24 A.B.C.0/255.255.255.0 A.B.C.* o A.B.C.* A.B.C.D/32 A.B.C.D/255.255.255.255 A.B.C.D Si può notare come gli otteti con valore 11111111 (255), limitino l'indirizzo IP a quello specificato, mentre gli otteti con valore 00000000, includano un qualsiasi valore, da 0 a 255. A prima vista, bannando l'IP "193.0.0.0/8", è l'equivalente di inserire "193.*.*.*", mentre in "193.12.0.0/16" si ha l'equivalente di "193.12.*.*". Considerando il funzionamento delle NetMask, SubNetMask e CIDR, è possibile, quindi, bannare un indirizzo, specificando il range della subnet ove questo è posizionato. Secondo la ripartizione delle classi, 193.12.51.10 è nella C, che presenta una NetMask N.N.N.H (che và da 192 a 223), pertanto, se si desidera utilizzare la dicitura CIDR, occorrerà impiegare un range che và dal /24 a superiori, influendo nell'ultimo otteto. Tenendo in considerazione che, ad esempio, questo IP è parte di un set di indirizzi per connessioni dial-up, che variano (es. la prima connessione è 193.12.51.10, poi 193.12.51.7, poi 193.12.51.4 ed in fine 193.12.51.14). Lo scopo è quello di limitare il ban, ad un piccolo range, delimitato da una subnet virtuale locale al server IRC (che può esistere, oppure no, in quella rete), in modo che tutti gli IP contenuti in questa, non possano più connettersi, escludendo, però, dal provvedimento, i rimanenti. Considerando le potenze del 2, a seconda della posizione dei bit (descritte nei cap. precedenti), è possibile iniziare a calcolare il CIDR più consono al ban da posizionare. L'indirizzo IP da Klineare, ha, intanto, un limite nel primo otteto, ossia "193.0.0.0", che dovrà essere l'unica combinazione d'otteto ad essere esclusa, pertanto, s'inizia già col pensare che, nella Kline, dovrà essere presente come minimo l'IP e il /8. Per limitare, ulteriormente l'esclusione, si dovrà includere solo il "193.12.0.0", pertanto, come in precedenza, il CIDR da usare, minimo, dovrà essere un /16. Con lo stesso ragionamento, si isola pure il 51 del terzo otteto, e quindi /24 (risultando "193.12.51.0/24"). Si tenga in considerazione che, durante questo procedimento logico, io non imposto la stringa, ma ragiono sul cosa settare. A questo punto, occorre decidere il CIDR da impostare, in modo da tener fuori meno hosts innocenti possibili. Il sistema è quello di concentrarsi nell'otteto dinamico e mantenere il conteggio degli 1, spostandosi dall'estremità sinistra, fino a quella destra, in modo da creare una subnet virtuale che contenga, come numero di hosts, la variazione d'IP massima dell'IP dell'utente. L'ultimo otteto, sarà quindi: (128 64 32 16 8 4 2 1) 11110000. La somma di 128 + 64 + 32 + 16 = 240, il /28 è 255.255.255.240. Il ban sarà da 193.12.51.0 a 193.12.51.15, ossia tutte le combinazioni binarie 00000000 fino a 00001111 dell'ultimo otteto. Un buon sistema per limitare il range di utenti bannati stà nel suddividere pochi hosts su tantissime reti, estendendo il subneting virtuale fino al bit corrispondente alla potenza di 2 "8" o "4". In questo modo, solo un massimo di 7 o 3 utenti per blocco d'IP viene potenzialmente escluso, senza influire sui rimanenti. Il CIDR, è bene utilizzarlo qualora si vadano ad impostare delle Klines fisse, su file di configurazione, in modo da poter aver tutto il tempo per congetturare sull'estensione della netmask da imporre. Occorre tenere a mente che se la rete è di classe B, occorrerà usare, come minimo un /16 (o maggiori), così come, se è di classe C è consigliato l'uso di una /24. L'impiego di questo sistema, dichiarando reti minori (es. una /8 di classe A, su una classe B), può avere l'effetto contrario, ossia estendere inutilmente il Ban anche a range d'IP totalmente estranei.
|