Configurazione di Proftpd
Questa e` una configurazione di proftpd che ho fatto per un cliente.
Lo scopo e` quello di permettere a tanti utenti di uploadare e downloadare files, oguno dalla propria directory. Ogni utente accede solo alla propria directory, all'interno della quale puo` fare cio` che vuole liberamente. Un utente (o piu` di uno) e` amministratore e puo` accedere alle directory di tutti gli utenti, e fare in esse cio` che vuole. Gli utenti sono configurati in un file dedicato allo scopo, e NON sono utenti di sistema.
Volendo e` possibile, giocando con gli alberi delle directory, creare delle sezioni nidificate con amministratori "locali".
La sicurezza fa decisamente schifo (tutti gli utenti accedono al file system con lo stesso UID e GID, e l'unica cosa che impedisce loro di andare a fare casini nelle directory degli altri e` il fatto che sono chrooted dentro la loro home), tuttavia dal momento che FTP trasmette le password in chiaro, direi che abbiamo ben altro di cui preoccuparci per la sicurezza. Certo non consiglierei questo set-up a chi abbia problemi di sicurezza, ma del resto non gli consiglierei nemmeno di usare FTP, quindi...
Installazione
Installare il pacchetto Debian "proftpd"
Verra` creato automaticamente un utente "ftp" con la relativa home, che useremo per contenere i files dei nostri utenti.
Configurazione
La configurazione di questo sistema si basa su due files: il primo e` /etc/proftpd.conf. Le uniche modifiche rispetto al file di configurazione standard di Debian sono nelle ultime righe, quelle con i commenti in italiano, e il fatto che l'utente che fa girare il server ftp non e` "nobody" ma "ftp".
ServerName "Debian" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayFirstChdir .message ListOptions "-l" DenyFilter \*.*/ # Uncomment this if you are using NIS or LDAP to retrieve passwords: #PersistentPasswd off # Uncomment this if you would use TLS module: #TLSEngine on # Uncomment this if you would use quota module: #Quotas on # Uncomment this if you would use ratio module: #Ratios on # Port 21 is the standard FTP port. Port 21 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) MaxInstances 30 # Set the user and group that the server normally runs at. User ftp Group nogroup # Umask 022 is a good standard umask to prevent new files and dirs # (second parm) from being group and world writable. Umask 022 022 # Normally, we want files to be overwriteable. AllowOverwrite on # Delay engine reduces impact of the so-called Timing Attack described in # http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02 # It is on by default. #DelayEngine off # Autenticazione su file utenti dedicato, niente utenti di sistema AuthUserFile /etc/proftpd.passwd AuthOrder mod_auth_file.c # Chrooted dentro la propria home DefaultRoot ~ # L'utente non deve avere una shell valida (gli utenti dedicati all'ftp non # sono utenti di sistema e non hanno una shell valida in ogni caso) RequireValidShell off
Il secondo file di configurazione e` /etc/proftpd.passwd, che contiene le definizioni degli utenti che devono accedere al server FTP. Questo file non viene editato a mano, ma generato con l'apposito comando ftpasswd.
Creazione degli utenti
Prima di tutto creo un utente "admin" che puo` accedere tutta la struttura dei files sotto /home/ftp.
ftpasswd --passwd --file /etc/proftpd.passwd --gid 65534 --uid 103 --name admin --shell /bin/true --home /home/ftp/
Poi, per ogni utente "normale" del sistema, devo fare due cose:
Creare l'utente indicando una home sotto /home/ftp
ftpasswd --passwd --file /etc/proftpd.passwd --gid 65534 --uid 103 --name utente1 --shell /bin/true --home /home/ftp/utente1
- Creare la sua home e dagli i permessi giusti
mkdir /home/ftp/utente1 chown ftp. /home/ftp/utente1