Combattere gli Spambot di MediaWiki (e non solo) con Apache e alcune Extension

Quando abbiamo impostato il wiki per Scuola247 abbiamo pensato di limitare l’edit delle pagine ai soli utenti registrati e abilitati del wiki.

La decisione è stata presa perché qualche tempo prima nell’impostare il wiki per il Linux User Group di Verona si era deciso, così come fa’ wikipedia, di lasciare libero accesso a tutti ma abbiamo ben presto dovuto fare marcia indietro perché abbiamo avuto numerosi episodi di vandalismo con sostituzione di intere pagine con link a siti a dir poco “non raccomandabili”, ci siamo chiesti come wikipedia facesse a combattere questo fenomeno ma non avendo tempo a disposizione per indagare abbiamo semplicemente impostato il sistema con l’obbligo di login per modificare i contenuti.

Su Scuola247 a differenza di quanto fatto per il wiki del Linux User group avevamo pensato di lasciare la possibilità di registrarsi agli utenti per poi abilitarli dopo un rapido controllo, volevamo facilitare il più possibile la partecipazione a nuovi membri della community di Scuola247 senza incorrere nei problemi avuto con il wiki del LugVR.

Subito dopo l’installazione del wiki lo abbiamo usato in maniera sporadica ma dopo un mese circa abbiamo controllato gli utenti registrati  e con nostra grande sorpresa abbiamo trovato circa 5.000 utenti. E si ho scritto bene: erano più di cinquemila gli utenti registrati in circa un mese da che avevamo fatto il setup del sito.

Lo scopo, lo abbiamo capito poi, era che, nonostante non avremmo mai abilitato quegli utenti, solo per il fatto di essersi registrati e autoconfermati, rispondendo alla email di conferma, avevano la possibilità di editare la pagina di descrizione del profilo e lì abbiamo trovato i soliti link ai soliti siti.

Cancellare tutti quegli utenti avrebbe portato via troppo tempo e non abbiamo trovato nessun tool che ci potesse essere di aiuto in questo compito per cui abbiamo salvato le pagine create fino a quel momento e abbiamo reinstallato tutto il wiki rimettendo poi a posto i contenuti precedentemente salvati. Il tutto come potete immaginare ci ha portato via un sacco di tempo e a questo punto abbiamo capito che dovevamo prendere il problema di petto.

Informandoci su internet abbiamo saputo anche che i vari tool che gestiscono i captcha rischiano di essere inutili: da una parte gli ocr hanno raggiunto una perfezione tale che è più difficile per l’umano decifrare il captcha e poi è giunta notizia che in india hanno organizzato gruppi di persone che tutto il giorno risolvono i captcha che il calcolatore propone loro a video (un lavoro che non invidio neanche in tempo di crisi).

Abbiamo indagato ulteriormente e provato diverse estensioni per MediaWiki (la tecnologia su cui si basano i siti wiki) alla fine le tecniche che abbiamo implementato sono state:

* per prima cosa un captcha per tutti gli utenti non registrati con domande e risposte personalizzate, in maniera da non cadere in uno dei tanti ma ormai prevedibili generatori di domande, e ovviamente formulate in italiano (voglio vedere quanti degli indiani reclutati sanno l’italiano) ad esempio: “Di quante lettere è composta la parola web (in cifre)?”  la risposta è ovviamente 3

* per seconda cosa abbiamo pensato che la maggior parte degli spambot proviene da indirizzi non italiani quindi l’idea è stata quella di personalizzare il file .htaccess di apache affinché permettesse il POST, il PUT e la DELETE solo a indirizzi italiani.

un esempio della sintassi che abbiamo usato è la seguente:

 # Limita l’accesso in scrittura ai soli indirizzi ip v4 italiani
<Limit POST PUT DELETE>
order deny,allow
deny from all
allow from 2.16.70.0/23



allow from 217.220.0.0/14
</Limit>

Il problema successivo è stato quello di reperire gli indirizzi ip assegnati all’italia. La prima cosa che abbiamo fatto e andare sul sito di IANA (Internet Assigned Numbers Autorithy) abbiamo capito che per l’europa, il medio oriente ed una parte dell’asia centrale l’autorità di riferimento è il RIPE Network Coordination Centre qui abbiamo capito che il database degli ip assegnati si trova qui (attenzione che il link porta ad un download di 185mb) e quindi abbiamo estratto tutti i recod del tipo:

ripencc|IT|ipv4|2.32.0.0|1048576|20100429|allocated

e abbiamo costruito il file .htaccess da inserire nella directory di apache che vogliamo proteggere (nel nostro caso la directory dove è installato il sito wiki.scuola247.org)

Se poi troviamo uno spambot da un indirizzo italiano in quel caso potremmo fare una segnalazione alla polizia postale.

*  Siccome poi qualcuno potrebbe pensare di usare tor per aggirare il nostro blocco sugli ip non italiani abbiamo attivato l’estensione TorBlock che scaricando l’elenco dei nodi tor impedisce l’edit da parte di quest’ultimi.

* Infine abbiamo attivato l’estensione SpamBlacklist che blocca l’edit controllando l’ip dell’utente su una blacklist mantenuta dai nostri amici di MediaWiki.

Chiaramente dovrete sempre tenere a mente questo blocco che avete attivato perchè noi , ad esempio, abbiamo impiegato un pò a capire che dovevamo abilitare il sito di pediapress per far funzionare l’estensione di cui parlo qui.

Alla prossima

Andrea

Lascia un commento