original in de Mario M. Knopf
en to it Davide Lo Vetere
Mario si occupa attivamente di Linux, reti di calcolatori
e di tematiche legate alla sicurezza informatica. Nel tempo libero cura
due pagine web:
neo5k.org e linuxwallpapers.de.
FTP utilizza TCP (Transmission Control Protocol) per il trasporto e questo assicura che i dati arrivino al destinatario correttamente e in modo affidabile. Non c'è dunque bisogno che sia FTP a gestire l'eventuale perdita di pacchetti o a verificare la loro integrità. In altre parole TCP assicura che ogni pacchetto giunga a destinazione senza ripetizioni, integro e nell'ordine corretto.
Nella trasmissione dati si distinguono tre tipi di trasferimento a seconda che la terminazione del flusso sia marcata con un end-of-file (EOF) oppure come end-of-record (EOR).
A questo si aggiungono due modalità di trasferimento:
La modalità ASCII è utilizzata nel trasferimento di files di testo, quella binary (binaria) è usata per trasferire programmi e altri tipi di files. L'utente non ha bisogno di selezionare la modalità di trasferimento dal momento che oramai tutti i client FTP riconoscono il tipo di file e commutano la modalità di conseguenza.
Essendo le credenziali dell'utente, username e password, non cifrate, è estremamente importante considerare questo aspetto come una falla nella sicurezza di FTP. Questa è la ragione dalla quale hanno avuto inizio gli studi sulla sicurezza di FTP. Nell'ottobre 1997 è stata rilasciata la documentazione di riferimento RFC 2228[2] che ha definito le modifiche di sicurezza per FTP
Il nome vsftpd sta per "very secure FTP daemon" e la sicurezza è una delle principali caratteristiche che il suo creatore, Chris Evans, ha voluto curare fin dall'inizio dello sviluppo dell'applicazione.
Un esempio eloquente è che vsftpd è eseguito in modalità chroot, cioè al programma (in questo caso vsftpd) è assegnata una versione della directory di root "ridotta" e diversa da quella originaria (l). In questo modo il programma non può in alcun modo accedere a risorse al di fuori di questa particolare directory a lui assegnata: esso è per così dire "confinato" (jailed). Nel caso in cui il server FTP dovesse essere compromesso l'attaccante sarebbe isolato dal resto del sistema limitando così i danni alla sola applicazione attaccata. Ulteriori informazioni sulla tecnica di chrooting si possono trovare in [3]. L'articolo [4] è raccomandato a coloro interessati alle specifiche soluzioni di sicurezza adottate in vsftpd
Questa varietà di caratteristiche peculiari - tra le quali spiccano quelle rivolte alla sicurezza - fanno di vsftpd un server considerevolmente più evoluto degli omologhi server FTP. WU-FTPD[5] può essere qui citato come esempio negativo a causa delle numerose falle di sicurezza rilevate nei passati due anni.
Dopo aver scompattato il tarball, vai alla directory creata ed esegui il make. Ecco i comandi:
neo5k@phobos> tar xzvf
vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make
neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
Il manuale e il programma dovrebbero ora essere presenti nelle posizioni corrette. Se così non dovesse essere si può eseguire una copia manuale.neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8
neo5k@phobos> cp vsftpd.conf /etc
# Comment line
# Accesso FTP anonimo?
YES/NO
anonymous_enable=NO
# Upload anonimo? YES/NO
anon_upload_enable=NO
# Gli utenti anonimi possono creare directories?
YES/NO
anon_mkdir_write_enable=NO
# Permesso per gli utenti anonimi di effettuare operazioni di renaming or deleting? YES/NO
anon_other_write_enable=NO
# Log on per gli utenti locali? YES/NO
local_enable=YES
# Confinamento degli utenti locali alla loro home?
YES/NO
chroot_local_user=YES
# Massimo transfer rate (in bytes al secondo) per gli utenti locali. Default = 0 (unlimited)
local_max_rate=7200
# Permesso di scrittura? YES/NO
write_enable=YES
# Abilitazione di messaggi di notifica al cambio directory? YES/NO
dirmessage_enable=YES
# Welcome banner (banner di benvenuto) da presentare al logon del sistema.
ftpd_banner="Welcome to neo5k's FTP service."
# Abilitare il logging (tracciamento delle operazioni)? YES/NO
xferlog_enable=YES
# Logging di tutte le attività FTP? YES/NO
# Attenzione! Questo può generare grandi quantità di dati.
log_ftp_protocol=NO
# Connessioni solo dati sulla porta 20 (ftp data). YES/NO
connect_from_port_20=YES
# Timeout per inattività di una sessione
idle_session_timeout=600
# Timeout di connessione dati
data_connection_timeout=120
# Accesso via PAM (Pluggable Authentication Modules)
pam_service_name=vsftpd
# Modalità operativa standalone? YES/NO - può essere di uno dei tipi (inetd, xinetd, Standalone)
# In questo esempio il servizio FTP viene avviato con xinetd, il valore è dunque NO.
listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# vsftp daemon. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10 }
# Shall the vsftp daemon run in standalone
operation? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
Se il percorso è stato inserito correttamente (cioè fa parte delle variabili d'ambiente condivise dall'utente e dal sistema) il servizio può partire anche cosìneo5k@phobos> vsftpd &
Un breve controllo sulla correttezza della variabile d'ambiente è il seguente:neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to neo5k's FTP service." Name (phobos:neo5k): testuser 331 Please specify the password. Password: 230 Login successful Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -l 229 Entering Extended Passive Mode 150 Here comes the directory listing drwxr-xr-x 11 500 100 400 May 07 16:22 docs drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds drwxr-xr-x 39 500 100 4168 May 10 09:15 projects 226 Directory send OK. ftp>
Questa introduzione fornisce solo un breve sguardo su quanto offre vsftpd, dal momento che il server FTP presenta una vasta gamma di possibilità di configurazione. Chi volesse approfondire la conoscenza di vsftpd può visitare la home del progetto [6] e accedere alla documentazione completa.