21 gennaio 2006

Server FTP + SSL in chroot

Grazie alla banda larga e alla nostra amata linux-box diventa oggi possibile sperimentare servizi di rete avanzati, come ad esempio allestire un server FTP per scambiare files e documenti con gli amici. Oggi si parla di 'Server FTP'. Rimando alla guida in questo link per configurare un servizio di base, ma nemmeno troppo di base!
Nel mio caso, mesi addietro, ho costruito un server con accesso, previa autenticazione, tramite immissione di username e password. Con un po' di sbattimento ed impegno si può andare oltre, per quanto riguarda la sicurezza: è infatti possibile implementare il servizio di cifratura di password e/o file trasferiti tramite SSL (anzi OpenSSL).
Si fa così, o almeno io ho fatto così:

a) LATO SERVER
1) Come da guida bisogna anzitutto modificare, aggiungendo le seguenti righe, il file vsftpd.conf (/chroot/vsftpd/etc/vsftpd.conf):
ssl_enable=YES
#force_local_data_ssl=YES
force_local_logins_ssl=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
ssl_tlsv1=YES

Ovviamente si può personalizzare la configurazione secondo le proprie esigenze, ad esempio decommentando (togliendo '#') #force_local_data=YES, ottenendo anche il trasferimento dei dati cifrato, e non solo delle password.

2) Creare la dir ssl/certs:
#mkdir -p /chroot/vsftpd/etc/certs

3) Creare il certificato RSA:
#openssl req -x509 -nodes -newkey rsa:1024 -keyout /chroot/vsftpd/etc/ssl/certs/vsftpd.pem -out /chroot/vsftpd/etc/ssl/certs/vsftpd.pem

Purtroppo questo sarebbe sufficiente se non fossimo in chroot, ma così non è. Abbiamo perciò necessità di creare i devices preposti alla generazione dei numeri casuali, che nella chroot jail non abbiamo.

4) Creazione dei device:
#mknod -m 644 /dev/random c 1 8
#mknod -m 644 /dev/urandom c 1 9
#chown root:root /dev/random /dev/urandom

Ok. A questo punto, se è tutto andato bene, dovremmo essere a posto.
Avviamo quindi il nostro server in chroot con
#chroot /chroot/vsftpd/ /usr/sbin/vsftpd

Il lato server è ora completo.

b) LATO CLIENT
E' necessario, per poter accedere ad un server ftp con ssl, abilitare la cifratura TLS sul programma che si utilizza.
Una buona soluzione multipiattaforma e da me testata è l'estensione per Firefox 'FireFTP', in cui basta, nella sezione 'Manage accounts->Connections->Security', selezionare 'Auth TLS (Best)'; e il gioco è fatto. Unica nota negativa è che FireFTP non è il massimo della stabilità!!

Nota: questa configurazione è testata da me e sembra essere funzionante. Ovviamente non mi assumo alcuna responsabilità per eventuali danni alle vostre linux-box! :-)

Nessun commento: