PWS logo

Il Progetto Winston Smith

PWS logo

- scolleghiamo il Grande Fratello -

Navigazione
  
  Home page
  
  
  Chi siamo
  
  
  Partecipazione
  
  
  Documenti
  
  
  Sw Crypto
  
  
  Sw Freenet
  
  
  Mail List
  
  
  
  
  
  
  

Come realizzare un remailer tipo II (Mixmaster)
(28/10/2003)

 

   Copyright (c) 2003 del Progetto Winston Smith.
   E' garantito il permesso di copiare,
    distribuire e/o modificare questo documento
    seguendo i termini della GNU General Public
    License, Versione 2.0, pubblicata
    dalla Free Software Foundation.

Un remailer anonimo è un programma che riceve posta opportunamente
crittografata tramite appositi programmi client, la decrittografa per la parte
di sua competenza, e la inoltra ad un altro remailer od al destinatario
finale.

Se il mittente del messaggio utilizza una catena di almeno 3 remailer per
inviare la posta, il messaggio è irrintracciabile anche se uno dei 3 remailer
fosse sotto completo controllo del nemico.

I remailer di tipo Mixmaster adottano precauzioni particolari per nascondere il
flusso dei messaggi in arrivo ed in partenza, suddividendoli in parti tutte
della stessa lunghezza, generando messaggi fasulli, e spedendo i messaggi ad
intervalli casuali.

Un remailer correttamente utilizzato permette di spedire un messaggio ad un
destinatario senza che nessuno, destinatario o nemico, possa risalire al
mittente.
Il destinatario non può però rispondere al mittente senza che quest'ultimo gli
riveli la sua identità, ed inoltre il mittente deve fidarsi del destinatario
per quanto riguarda il corretto uso dei remailer; un errore nell'inoltrare la
risposta da parte del destinatario potrebbe compromettere la anonimità del
mittente nei confronti del nemico.

Per risolvere il problema della risposta sono stati realizzati i nym server. 
Un nym server è un programma che permette di crearsi una identità anonima, che
consente al destinatario di rispondere senza dover conoscere l'indirizzo del
mittente.
Se l'invio del messaggio viene realizzato utilizzando, sempre tramite un
apposito client, sia una catena di remailer che un nym server, è possibile
realizzare una comunicazione completamente anonima, in cui le parti non
possono risalire alla reciproca identità, e che il nemico non può
rintracciare.

L'installazione di un remailer e di un nym server richiede una macchina 486 o
superiore, dotata di GNU/Linux con almeno 32 mb ram (senza X) ed almeno 512 mb
di spazio su disco.
Il carico della cpu e la banda passante utilizzata per il traffico dipendono
fortemente da quanto il remailer sarà utilizzato, e saranno inizialmente quasi
zero.

Avere CPU pentium, clock maggiori e più ram non infastidisce di certo, ed un
pentium 133, 64 Mb di ram e 1 Gb di disco sono una configurazione più che
adeguata. Per smaltire un traffico alto serve comunque una banda passante
adeguata; aspettatevi che il collo di bottiglia sia lì.

A tutti gli effetti, a parte i privilegi richiesti durante l'installazione, un
remailer è semplicemente un utente dedicato che riceve e trasmette posta
automaticamente utilizzando l'MTA della macchina su cui è installato
(sendmail, qmail, etc.).


==== installazione di Mixmaster 2.9 su distribuzione GNU/Linux Debian

Collegarsi come utente root

Se già non è stato fatto, con apt-setup aggiungete le liste dei pacchetti
non-free e contrib, e poi installare pgp-2.6.3i

apt-get install pgp-i
e ovviamente anche GPG può essere installato
apt-get install gnupg

Oppure, se non utilizzate Debian, potete scaricare Mixmaster da 

 http://mixmaster.sourceforge.net/

la versione corrente nel momento in cui scrivo è contenuta nel file
mixmaster-2.9.0.tar.gz

Per l'installazione di mixmaster devono essere già installate le librerie
openssl e ncurses.

touch /var/spool/mail/mix
chown mix.mail /var/spool/mail/mix
chown mix.mix mixmaster-2.9.0.tar.gz

Creare l'utente mix e entrare nel sistema come mix per compilare  mixmaster

adduser mix
login as mix
tar xzvf mixmaster-2.9.0.tar.gz

cd mixmaster-2.9.0

Eseguire il comando Install e rispondere alle domande con le scelte che trovate
nel log di installazione che segue; tra parentesi tonda trovate dei commenti.

#./Install

 Mixmaster directory? [/home/mix/Mix]
 Do you want to set up a remailer? [y]
 Use the source if the pre-installed library causes compilation problems.
 Use source? [n]
 Please enter a pass phrase for your remailer (must be the same
 whenever you re-compile Mixmaster).

 (inserisci la password)
 (a questo punto parte la compilazione)

 (Le domande che seguono sono parametri che andranno nel file mix.cfg che potrà
comunque essere modificato in seguito)

 Install as middleman? [n]

 (i remailer middleman accettano e inviano posta solo ad altri remailer; questa
modalità può essere utile ad es. nel caso in cui il remailer sia usato da
qualcuno per fare spamming e l'operatore subisca pressioni per chiuderlo.)

 The e-mail address of your remailer:
   mix@mixmaster.it
 (inserite l'indirizzo del vostro remailer)

 Do you want Mixmaster to send auto-replies to messages it does not
 understand (If the address  is also used
 for mail to be read by a human, type `n')? [y]

 (se si attiva questa opzione il mixmaster risponderà con un messaggio di
spiegazioni alle e-mail che non interpreta come messaggi correttamente
inviatigli nel formato mixmaster (altre spiegazioni più sotto)).

 An address to appear in the `From:' line of anonymous messages:
 nobody@mixmaster.it
 (inserite l'indirizzo che deve comparire come mittente dei messaggi che
transitano dal vostro remailer; il
  default va bene)

 Address for complaints to be sent to:
 abuse@mixmaster.it

 (è buona norma lasciare inalterata questa impostazione, abuse è l'indirizzo
usato di default per inviare lamentele all'operatore).

 Choose a name for your remailer.  It will appear in remailer status messages.
 Long name: [George Remailer]

 (questo sarà il "nome" completo del remailer)

 Choose a name to be used in the `From:' line of remailed messages.
 Anon long name: [George Orwell's remailer]

 A short name to appear in lists:
 george

  (questo sarà il "nome" del remailer con il quale sarà definito nelle liste
pubbliche dei remailer attivi)

 Accept Mixmaster (Type II) messages? [y]

  (per accettare messaggi nel formato mixmaster (type II) )

 Accept PGP (Type I) remailer messages? [y]

  (per accettare messaggi nel formato cypherpunk (type I) )

 Accept unencrypted remailer messages? [n]

  (per accettare solo messaggi criptati, è meglio evitare che transitino sul
server dei messaggi non criptati che potrebbero essere intercettati)

 Mixmaster will log error messages and warnings. Do you want to log
 informational messages about normal operation as well? [y]

  (il remailer non logga gli IP, però può generare dei log riguardo la sua
attività, problemi, errori e operazioni compiute, utile soprattutto nella fase
iniziale di debug)

 Filter binary attachments? [y]

 Allow users to add themselves to the list of blocked addresses? [y]

  (il remailer controlla se l'indirizzo di destinazione di un messaggio è
presente in un file di testo, e in caso affermativo non lo spedisce; se un
utente riceve spamming dal remailer può chiedere che l'operatore
   lo inserisca nella block list, oppure può farlo da solo se questa opzione è
attivata).

 Do you want to allow posting? Newsgroups can be restricted in dest.blk.
 y)es, post locally; use m)ail-to-news gateway; n)o.
 Allow posting to Usenet? [m]

 Mail-to-news gateway: [mail2news@nym.alias.net]

 Pool size: [20]

  (se arriva un messaggio finisce nel pool e ne esce dopo tot tempo, tanto
maggiore quanto più è grande il pool dei messaggi, se però è troppo grande
possono esserci problemi di latenza perché i messaggi restano troppo nel pool
prima di uscire; un valore basso è utile per le prove).

 Mailbox for non-remailer messages: [/home/mix/Mix/mbox]
  (mailbox per i messaggi che il remailer non riconosce perché non contengono
istruzioni di remailing)

  (a questo punto il remailer crea le sue chiavi - può essere lungo)

 Set .forward to the following line:
 "|/home/mix/Mix/mix -RM"
 Do that now? [y]

 (qui il remailer inserisce la riga che gli fa ricevere i messaggi
  destinati ad mix)

Auto-replies impostate.

Il remailer risponde automaticamente a certi msg con un file di spiegazioni:

 - posta per mix@mixmaster.it con subject: remailer-help --> help.txt

 - posta per mix@mixmaster.it con dentro: DESTINATION-BLOCK --> blocked.txt
   (con questo messaggio l'indirizzo del mittente viene bloccato, inserendolo
nel file Mix/dest.blk )

 - msg per mix@mixmaster.it non in formato corretto: --> usage.txt

 - posta per abuse@mixmaster.it: abuse.txt

 - posta per nobody@mixmaster.it: reply.txt


 Complete !!!!!

L'indirizzo del remailer è quindi mix@mixmaster.it

Come root aggiungo queste righe a /etc/mail/aliases:

 abuse: mix (abuse puntava a postmaster)
 nobody: mix

e  lancio il programma "newaliases" per aggiornare il db degli alias

aggiungere gli indirizzi per il virtualhost:

	a genericstable aggiungo:   mix mix@mixmaster.it
	a virtusertable aggiungo:   mix@mixmaster.it mix

lanciare infine un make per rendere effettive le modifiche.

Controllare che i permessi siano settati correttamente

tutto  rw per mix.www-data 

tranne il file mix e la directory pool che sono rwx

 in pratica non cambio nulla, lascio così:

directory /home/mix/.    0750  rwxr-x---

directory /home/mix/Mix  0700  rwx------

file /home/mix/Mix/mix   0700  rwx------

Fare un  touch /home/mix/Mix/id.log per creare il file che il remailer non
crea.

È necessario prelevare la lista dei remailer attivi; c'è uno script apposito da
inserire nel cron che si chiama getmix.sh, che aggiorna chiavi e statistiche.
È possibile prelevarlo a questo indirizzo:
http://lexx.shinn.net/cmeclax/getmix.html

Se sendmail fosse installato con smrsh (un meccanismo per consentire l'utilizzo
dei pipe) bisogna creare un link nella directory /usr/lib/sm.bin :

 su root
 cd /usr/lib/sm.bin
 ln -s /home/mix/Mix/mix mix

Se invece viene usato postfix non c'e' bosogno di fare altro.

A questo punto il remailer funziona, ma bisogna fare ancora qualcosa prima di
renderlo pubblico in modo che sia utilizzabile in catena.
 
1) Bisogna creare una chiave PGP/GPG che avrà uno user-ID
remailer-admin@mixmaster.it, con questa chiave si firmeranno tutti i messaggi
postati nella mailing list dei remailer-operators.
 
2) Bisogna creare l'utente remailer-admin@mixmaster.it in /etc/mail/alias che
verrà indirizzato all'utente mix o a chi si occuperà della gestione dei
rapporti con la comunità cypherpunk e con gli utenti.
 
3) Con questa chiave vanno firmate le chiavi del remailer, quindi ho prelevato
le chiavi, importate nel mio keyring, le ho firmate con la chiave del
remailer-admin, le ho esportate (gpg -a --export KeyID >>
remailer.keys.signed)  dove KeyID sono i key ID delle chiavi RSA e DH del
remailer.
Le chiavi firmate le ho quindi messe nel file pgpkey.txt al posto di quelle
vecchie in modo che chiunque richieda le chiavi al remailer riceva le chiavi
firmate.
 
4) Sempre con la chiave dell'admin vanno firmati (gpg --clearsign) i messaggi
di help che il remailer invia in automatico (i file help.txt, abuse.txt,
usage.txt e reply.txt)
 
5) Ho modificato un paio di parametri nel file mix.cfg, soprattutto ho
aggiunto:
AUTOREPLY       Y
per fare in modo che risponda in modo automatico ad alcune richieste (vedi
sopra) e ho attivato la gestione separata delle mailbox:

MAILBOX         mbox.mix
MAILABUSE       mbox.abuse
MAILBLOCK       mbox.block
MAILUSAGE       mbox.usage
MAILANON        mbox.anon
MAILERROR       mbox.error
MAILBOUNCE      mbox.bounce
 
queste mailbox sono leggibili dall'utente mix con mutt e contengono messaggi
errati, messaggi che vanno in bounce, richieste per l'utente
abuse@mixmaster.it, errori vari e richieste di blocco delle persone che non
vogliono che il remailer gli mandi i messaggi.

Per avere le mailbox facilmente accessibili con mutt bisogna fare dei symlink
in quanto mutt cerca le mailbox nella directory ~/mail/ nella home dell'utente
mix, mentre le mailbox si trovano in ~/Mix/, quindi per ogni mailbox bisogna
creare un symlink come questo

ln -s ~/mail/mbox.abuse ~/Mix/mbox.abuse

Le mailbox saranno poi accessibili ad es. con mutt inserendo nel file .muttrc
una riga come questa :

mailboxes +mbox.mix +mbox.abuse +mbox.block   etc. etc.  

Per firmare tutti i msg in uscita dalla mailbox, bisogna impostare
opportunamente mutt,ad esempio impostando nel .muttrc:

my_hdr From: remailer-admin@No_Spam_Please.mixmaster.it
set pgp_autosign
set pgp_sign_as="remailer-admin@mixmaster.it"
my_hdr X-PGP-Key-fingerprint: (inserite qui il fingerprint della chiave di
remailer-admin)
set realname="George admin"


6) Ho annunciato il remailer alla lista dei remailer operators
remops@mixmaster.shinn.net e al newsgroup alt.privacy.anon-server, allegando
le chiavi e gli altri dati del remailer; di solito si invia il contenuto della
risposta del remailer al messaggio che ha soggetto "remailer-key"

7) Ho impostato il cron in modo che ogni 30 minuti esegua lo script getmix che
aggiorna le chiavi dei remailer e le statistiche prelevandole dal webM come
utente mix dare cron -e  per editare il file in cui inserisco questa riga:
 
*/30 * * * * /home/mix/Mix/getmix.sh

8) Ho scritto a mike@shinn.net per inserire l'IP della macchina su cui gira il
remailer nella sua "white list", in pratica è una lista di IP di remailer da
cui il suo remailer accetta i messaggi, se non glielo si comunica tutti i msg
per il remailer "shinn"  vengono rispediti al
mittente e finiscono nel folder dei bounce (e sono tanti), anche perché un
pinger (software per generare le statistiche) gira sulla sua macchina. 


===============================================
== Installare il controllo antispam Nilsimsa ==
===============================================

Molto spesso quancuno tenta di usare i remailer per mandare spam, catene di S.
Antonio od altri gruppi di messaggi molto simili.

Esiste un programma che calcolando una distanza lessicale, rimuove dalla
directory Mix/pool messaggi troppo simili, e li sposta in Mix/festi, dove
possono poi essere esaminati o cancellati

Scaricate il software da

http://lexx.shinn.net/cmeclax/nilsimsa.html

la versione corrente e' (e probabilmente rimarra') la 0.2.4.

scompattate il file nilsimsa-0.2.4.tar.gz nella directory /home/mix con il
comando

tar zxvf nilsimsa-0.2.4.tar.gz

che creera' la directory nilsimsa-0.2.4; entratevi e date i comandi

 ./configure
 make

 Potrebbe verificarsi un errore per la mancanza di termio.h, in questo caso
dovete installare la libreria ncurses-dev.

Ho scelto di non effettuare il make install, previsto dalle istruzioni di
installazione, per evitare la necessita' di avere le permission di root e
mantenere tutti i file del remailer nella directory /home/mix

Devo quindi fare le seguenti modifiche

rinominare la directory

mv nilsimsa-0.2.4  nilsimsa

entrare nella directory nilsimsa/scripts ed editare i 3 script che vi si
trovano, dando la  path assoluta; in pratica, in tutte le righe che iniziano
con

nilsimnsa .....

inserira la path all'inizio

/home/mix/nilsimsa/scripts/nilsimsa ......

Creare la directory festi in /home/mix/Mix

cd /home/mix/Mix
mkdir festi

facendo attenzione che abbia gli stessi permessi della directory pool

Il principio di funzionamento di nilsimsa e' semplice.

Inserite un job di cron frequente (ogni 5 minuti, anche meno secondo il trafico
del remailer),

 */5 * * * * /home/mix/nilsimsa/scripts/finddups

Questo job lancia lo script finddups, che scandisce i file della directory pool
(i messaggi del remailer) e sposta nella directory festi gli eventuali gruppi
di messaggi molto simili.
Inserisce poi nel file /home/mix/Mix/rules una riga che contiene l'impronta del
gruppo di file spostati e la lettera "D".
Questa riga provochera' lo spostamento di eventuali altri file simili che
giungessero successivamente, anche se arrivassero uno per volta.

La directory festi tendera' quindi a riempirsi; usando a mano lo script
catsimsa, a cui dovete fornire come argomento una intera liea del file rules,
potete visualizzare i file relativi, per decidere se sono da gettare (spam,
flood ..) oppure se sono legittimi (ad es. i ping dei pinger echolot)

Nei primi tempi dovrete provare ogni nuova riga di rules, per vedere se i
messaggi sono dei ping; quando ne trovate uno, modificate la riga relativa
sostituendo "D" con "A".

Potete anche aggiungere un commento aggiungendo un cancelletto a fine riga, e
proseguendo con il commento vero e proprio.
Attenzione a conservare lo spazio bianco che c'e' a fine riga; il cancelletto
inseritelo dopo.

Rimettete poi i messaggi legittimi in pool con lo script mvsimsa, a cui come al
solito va fornita la relativa riga di rules come argomento.

Ripetete l'operazione per tutte le nuove righe di rules (vi conviene inserire
un commento per distinguere quelle che avete testato dalle altre che verranno
aggiunte in futuro)

A questo punto cancellate tutti i file rimasti nella directory festi.

Durante un flood, su un remailer pienamente operativo possono essere generati
anche 100Mb di file al giorno, sia nella directory festi, che nella mailbox
dell'utente mix che nei file /home/mix/Mix/mbox.xxxx.

All'inizio un controllo quotidiano della situazione e' praticamente
obbligatorio; dopo qualche settimana, nel
 caso che questo ritmo di controllo non possa continuare, e' opportuno
automatizzare lo svuotamento della dir festi ed il trim delle mailbox con uno
script in cron, che scatti ogni giorno, od al verificarsi di un certo
 evento, per esempio la dimensione della directory /home/mix/Mix che supera i
100-200Mb.

 Attenzione anche alla dimensione della mailbox dell'utente che e' di solito
/var/spool/mail/mix.


============================================================
==  Interfaccia web per utilizzare il remailer Mixmaster  ==
============================================================

http://xenophon.r0x.net/webscripts.tar.gz

Pubblico una directory web con il nome del remailer; ad esempio, utilizzando
apache attivo l'opzione che pubblica la directory di default degli utenti.

La directory si potra accedere come http://mixmaster.it/~mix, ma non sara'
questo il modo di accederla.

Bisogna creare in apache un virtualhost per remailer.mixmaster.it che consenta
solo connessioni attraverso ssl, ridirigendo automaticamente su https
eventuali connessioni http a mixmaster.it.
La homedir sara' ovviamente /home/mix/public_html.

Creo la directory /home/mix/public_html con una sottodirectory cgi-bin.

sposto il file webscripts.tar.gz in /home/mix/public_html e lo decmoprimo con:

 tar -xzvf webscripts.tar.gz

I 4 file .cgi li sposto in /cgi-bin

Adesso devo modificare qualche file per adattarlo al mio sistema:

file: gc

  riga 13: sostituisco il percorso con quello dove io ho installato lo script:
           cd /home/mix/public_html

Commento le righe dalla 31 alla 35 perche' non voglio che i file type2.list e
pubring.mix raccolti da questo script vadano a sovrascrivere quelli raccolti
dal remailer mixmaster con un altro script.
   
Quindi anche alla riga 22 tolgo il "&& \" finale perche' mi basta il wget che
preleva il file mlist2.txt


  riga 54: sostituisco con cp rems2 /home/mix/public_html/cgi-bin/rems

  riga 65: sostituisco con cp outdata /home/mix/public_html/cgi-bin/data

  riga 69: sostituisco con cat output | grep Generated >
/home/mix/public_html/cgi-bin/current


file: send 

  inserisco il percorso dove risiede l'eseguibile del remailer mixmaster:
  /home/mix/Mix/mix -S


file: /cgi-bin/mixemail-send.cgi

  riga 27: inserisco il percorso dell'eseguibile del mixmaster:
  	   $mix = "/home/mix/Mix/mix";     


file: /cgi-bin/mixnews-send.cgi

  vedi file precedente, stessa variabile da definire alla riga 27


file: /cgi-bin/mixemail-user.cgi  

  imposto i percorsi dove si troveranno alcuni files delle statistiche:
	  
  riga 25: $current = "/home/mix/public_html/cgi-bin/current";
  riga 28: $data = "/home/mix/public_html/cgi-bin/data";
  riga 29: $rems = "/home/mix/public_html/cgi-bin/rems";

  riga 71: open(CURRENT, "/home/mix/public_html/cgi-bin/current");


file: /cgi-bin/mixnews-user.cgi

  vedi file precedente, bisogna definire i percorsi per le variabili current,
data e rems, che sono alle righe 26, 29 e 30.


poi c'e' da impostare un cron che lanci lo script gc ogni ora:

0 */1 * * * /home/mix/public_html/gc > /dev/null 2>&1

chmod +x a tutti gli scripts

Sara' infine necessario modificare i permessi in modo che l'utente www-data,
che fa girare apache, possa accedere all'eseguibile /home/mix/Mix/mix.


Questo sito ed i suoi contenuti sono distribuiti sotto la Gnu General Public License 2.0