Nymserver

spialaspia@inventati.org

v0.4 04/12/2010
Guida all'installazione del nymserver

1. Installazione

1.1 Installazione

Il codice del nymserver originale lo si puo' ottenere mandando una mail a source@nym.alias.net

Nel 2004 e' stato fatto un aggiornamento del programma per permettere il supporto delle chiavi DH, e quindi l'utilizzo senza problemi di GPG e delle ultime versioni di PGP.

Il codice e' disponibile in CVS dal sito http://www.sourceforge.net/projects/nymserv

Nel 2010 e' stato copiato su un altro sito, con l'aggiunta di un installer un po' migliore e di una miniguida per l'installazione in inglese:

https://github.com/pymander/nymserv

Questo documento trattera' specificatamente quest'ultima versione del nymserver.

Come primo passo bisogna creare un utente dedicato al nym server.

Se avete gia' un remailer installato tanto meglio, altrimenti dovrete installarne uno, e per questo vi rimando alla guida sull'installazione del remailer mixmaster.

Parto quindi dal presupposto che abbiate un utente e un gruppo mixmaster, e che il remailer sia installato in /var/lib/mixmaster/Mix/

Potete creare un utente nymserver (che dovra' avere accesso al remailer), oppure usare l'utente mixmaster gia' utilizzato per il remailer. Io ho optato per quest'ultima soluzione.

Le operazioni indicate da qui' in avanti andranno eseguite dall'utente mixmaster (o dall'utente nymserver se avete optato per un utente diverso) se non diversamente specificato.

$ cd ~

scaricate il file dalla pagina https://github.com/pymander/nymserv/tarball/master scompattate l'archivio e mettete il contenuto in /var/lib/mixmaster/install/

A questo punto dovreste avere una directory ~/install che contiene 4 files:

README
nymserver.pl - che e' lo script vero e proprio
setup.sh - che vi aiutera' nella creazione delle chiavi.
gpg-gen-key.conf.in - un file usato durante il setup

Lanciate setup.sh, come argomento potete dirgli in che cartella installare il remailer, la passphrase della chiave che creerete per il nymserver e il nome di dominio su cui girera' il nymserver (in questo caso nymph.paranoici.org), verra' creata una chiave DH, con UID send@nymph.paranoici.org

Alla fine della creazione della chiave vi ritroverete una directory /var/lib/mixmaster/Nym con una sottodirectory pgp

GPG potrebbe lamentarsi del fatto che i permessi della directory /var/lib/mixmaster/Nym/pgp non sono sicuri, controllate che i permessi siano rwx per l'utente mixmaster, altrimenti modificateli

$ chmod 700 /var/lib/mixmaster/Nym/pgp

Adesso dobbiamo modificare la chiave creata aggiungendogli un altro ID, in questo modo:

$ cd ~/Nym/pgp

Questo per assicurarsi di essere nella directory giusta per lanciare i comandi seguenti.

$ gpg --no-default-keyring --secret-keyring ./secring.pgp --list-secret-keys

dovrebbe mostrarvi la chiave appena creata, segnatevi il KeyID

Ci potrebbero essere dei messaggi del GPG come questi:

        gpg: /var/lib/mixmaster/.gnupg: directory created
        gpg: new configuration file `/var/lib/mixmaster/.gnupg/gpg.conf' created
        gpg: keyblock resource `/var/lib/mixmaster/.gnupg/pubring.gpg': file open error

e' normale, se lanciate di nuovo il comando di cui sopra il GPG creera' anche il file ~/.gnupg/pubring.gpg che sara' comunque vuoto perche' le chiavi del nym resteranno nella directory ~/Nym/pgp/.

I messaggi di errore segnalati sono dovuti al fatto che GPG si aspetta di trovare una directory ~/.gnupg contenente i file gpg.conf e pubring.gpg, e se non ci sono li crea.

Ora lanciate:

$ gpg --no-default-keyring --secret-keyring ~/Nym/pgp/secring.pgp --keyring ~/Nym/pgp/pubring.pgp --edit-key send@nymph.paranoici.org

potete digitare "help" per avere la lista dei comandi, e usate il comando adduid per inserire un altro UID, che dovra' avere l'indirizzo e-mail config@nymph.paranoici.org

Se avete una chiave che usate come remailer-admin potete usarla per firmare la chiave del nym server:

$ gpg --no-default-keyring --keyring ~/Nym/pgp/pubring.pgp --sign-key nymserverKeyID -u remailer-admin@esempio.it

Verificate che la firma ci sia:

$ gpg --no-default-keyring --keyring ~/Nym/pgp/pubring.pgp --list-sigs nymserverKeyID

Poi copiate il file ~/Nym/pgp/pubring.pgp in ~/Nym/ring-proto.pgp

Questo file contiene la chiave pubblica del vostro nym, e dopo aver aggiunto lo User-ID va aggiornato (e' una copia esatta del file pubring.pgp).

Bisogna anche creare un file vuoto nella directory del gpg:

$ touch ~/Nym/.gnupg/noring.gpg

Verificate che esistano queste directory:

~/Nym/users
~/Nym/queue

Nella directory users create i files postmaster.forward e admin.forward che contengano l'indirizzo e-mail di chi gestisce il nymserver.

Bisogna creare anche un file users/remailer-key.reply che contenga la chiave pubblica del nym, in modo che se qualcuno manda una mail all'indirizzo remailer-key@nymph.paranoici.org gli venga spedita la chiave. I comandi qua' sotto servono a creare questo file:

        echo 'From: nobody@nymph.paranoici.org' > users/remailer-key.reply
        echo 'Subject: PGP key for nymph.paranoici.org' >> users/remailer-key.reply
        echo '' >> users/remailer-key.reply
        gpg --armor --no-default-keyring --keyring ~/Nym/pgp/pubring.pgp --export NYM_KEY_ID >> users/remailer-key.reply

Se volete create nello stesso modo un file help.reply che contenga invece della chiave del remailer un file di spiegazioni.

Nella directory ~/Nym/pgp create un file chiamato passphrase che contenga la password della chiave segreta del nym. Date i permessi 600 a questo file !! Non deve essere leggibile da altri utenti.

I prerequisiti per far funzionare il nymserver sono di avere installato perl 5.6 o superiore con il moduli DB_File, POSIX, Socket, Crypt::OpenPGP, GnuPG::Interface e Digest::MD5 assicuratevi di eseguire questo comando come root:

# cd /usr/include; h2ph *.h sys/*.h

Io ho dovuto eseguirlo anche su altre sottodirectory di /usr/include come asm-i386, immagino dipenda dalla distribuzione con cui si lavora.

Se nell'installare il modulo Crypt::IDEA (necessario) in fase di compilazione avete problemi provate a modificare la linea 66 del file IDEA.xs, modificando sv_undef in PL_sv_undef, e rilanciate il make.

A questo punto editate il file ~/Nym/nymserver.pl, assicuratevi che la prima riga indichi il percorso corretto del perl, dopodiche spostatevi alla riga 50, dove inizia una sezione di poche righe dove bisogna specificare un po' di dati:

        my $HOMEDIR = '/var/lib/mixmaster/Nym';
        my $HOSTNAME = 'nymph.paranoici.org';
        my $GPG      = '/usr/bin/gpg';  
        my $SENDMAIL = '/usr/sbin/sendmail';
        my $QMAIL_CODES = 0; # Use qmail rather than sendmail exit codes
        my $REMAIL = '/var/lib/mixmaster/Mix/mix -SR --UNENCRYPTED=y';

        # Specify your nymserver key ID right here.
        my $NYMKEYID = 'B068A5EAD1A163E1';

Questi sono dati che dovrete sistemare/adattare al vostro sistema, il NYMKEYID e' il Key ID della chiave che avete creato prima.

Dalla versione 1.12 del nymserver e' richiesto il Long KeyID, che viene visualizzato con l'opzione --with-colons, quindi ad. es. supponendo che il keyID della chiave del nostro nymserver sia 0xD1A163E1:

$ gpg --no-default-keyring --secret-keyring  /Nym/pgp/secring.pgp --keyring  /Nym/pgp/pubring.pgp --with-colons --list-keys 0xD1A163E1

che restituisce un output di questo tipo:

tru::0:1116523422:1134636680:3:1:5
pub:f:1024:17:B068A5EAD1A163E1:2005-01-15:2007-01-15::-:nymph <send@nymph.paranoici.org>::scESC:
uid:f::::2005-01-15::A88FC118F2E0C8FCD770E82DF5DCC64AD37B2A40::nymph <config@nymph.paranoici.org>:
sub:f:2048:16:CBBDE0D8E157B4A4:2005-01-15:2007-01-15:::::e:

e il long keyID e' il quarto campo nella riga che inizia con "pub", in questo caso: B068A5EAD1A163E1

La stringa --UNENCRYPTED=y e' facoltativa, serve se il remailer che avete installato non accetta messaggi non criptati.

Ovviamente il vostro sistema dovra' essere un grado di accettare posta per nymph.paranoici.org, quindi presumibilmente dovrete modificare il DNS, e impostare il vostro MTA a gestire correttamente la posta da e per questo nome di dominio. Seguono le impostazioni per postfix: (questi comandi vanno eseguiti come root)

aggiungete un transport nel file /etc/postfix/master

        nymserv          unix  -       n       n       -       -       pipe
                flags=FR user=mixmaster argv=/var/lib/mixmaster/Nym/nymserver.pl -d ${user}

nel file main.cf aggiungere nymph.paranoici.org tra i relay_domains

e infine nel file transport aggiungere:

nymph.paranoici.org nymserv:

in modo che tutta la posta in ingresso per il dominio nymph.paranoici.org sia gestito dal transport nymserv, che la passa in pipe allo script nymserver.pl come definito nel file master.cf.

Ricordatevi di lanciare

# postmap /etc/postfix/transport

# postfix reload

per rendere effettive le modifiche.

Lanciate lo script del nymserver in questo modo:

$ ~/Nym/nymserver.pl -d list

e vedete se vi errori vi da, in genere risulta abbastanza chiaro capire cosa vi manca (che sia un file .h o un modulo del perl).

Tenete presente che Crypt::OpenPGP richiede molti moduli per supportare un'ampia gamma di algoritmi.

Per concludere ricontrollate i permessi in modo che funzioni tutto

Bene, a questo punto non vi resta altro che verificare che tutto funzioni, e per quello che ho visto io i problemi si presentano a a 3 livelli:

$ ./nymserver.pl -d list

per verificare che col perl tutto funzioni bene,

poi mandando una mail a list@nymph.paranoici.org per vedere se vi risponde.

Se non vi risponde avete probabilmente sbagliato qualcosa a livello dell'MTA, e quindi andate a vedervi i log dell'MTA e/o del procmail

E infine cercate di crearvi un nym, se non vi risponde i problemi sono probabilmente a livello dei permessi

NOTA:

Se il nymserver gira su un server remoto dove l'entropia e' bassa e non c'e' possibilita' di aumentarla perche' non ci sono collegate tastiere, cdrom, etc., potrebbe essere necessario cambiare nel sorgente dello script l'origine dell'entropia da /dev/random a /dev/urandom, che e' una sorgente di entropia che non si esaurisce, anche se l'entropia ottenuta da questo device non e' buona come quella che si ottiene da /dev/random. Altre soluzioni sono possibili, come patchare il kernel per prendere entropia ad esempio da un suono campionato tramite scheda di rete o da altri devices.