Installare pure-ftpd con utenti virtuali

Scrivo questo post giusto per ricorarmi i passaggi nel caso dovessi ripetere l’operazone nel futuro, personalmente preferisco utilizzare sftp e scp per trasferire files da e per i server Linux, ma in qualche occasione viene richiesto ftp e quindi ecco come fare.

Sto utilizzando la distribuzione Debian, versione 6.0.2

Installo i pacchetti necessari:

aptitude install pure-ftpd pure-ftpd-common openssl

Controllo che sia impostata la modalita’ “standalone” nel file di configurazione /etc/default/pure-ftpd-common:

grep "STANDALONE_OR_INETD" /etc/default/pure-ftpd-common

Dovrei ottenere questo risultato:

STANDALONE_OR_INETD=standalone

..eventualmente vado a modificare il file.

Vado a modificare la configurazione di default:

cd /etc/pure-ftpd/conf

Abilito la modalita’ passiva. 121.134.156.178 e’ l’IP pubblico del server ed e’ necessario che il firewall consenta l’accesso alle porte da 4500 a 4600

echo ,21 > Bind
echo 121.134.156.178 > ForcePassiveIP
echo 4500 4600 > PassivePortRange

Applico alcuni accorgimenti di sicurezza:

echo yes > ChrootEveryone
echo yes > NoChmod
echo yes > BrokenClientsCompatibility
echo 4 > MaxClientsPerIP
echo 10 > MaxClientsNumber
echo 1 > TLS

Disabilito tutti i tipi di autenticazione e abilito l’autenticazione tramite database (testuale) di utenti virtuali

echo no > PAMAuthentication
echo no > UnixAuthentication
echo /etc/pure-ftpd/pureftpd.pdb > PureDB
ln -s /etc/pure-ftpd/conf/PureDB ../auth/50pure

Creo un gruppo ed un utente di sistema (reale) apposito a cui associare gli utenti virtuali. Questo utente non avra’ ne’ shell ne’ home directory

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

Ora posso iniziare a creare gli utenti virtuali tramite il comando pure-pw adduser

pure-pw useradd myfirstuser -u ftpuser -d /var/ftp/public/myfirstuser
pure-pw mkdb

Dopo ogni modifica al database testuale degli utenti virtuali (/etc/pure-ftpd/pureftpd.passwd) e’ necessario rigenerare il database binario utilizzato da pure-ftpd (/etc/pure-ftpd/pureftpd.pdb). Il comando pure-pw mkdb fa proprio questo.
Se pero’ aggiungiamo al primo comando il parametro -m, si dira’ a pure-pw di aggiornare automaticamente anche il database binario. In questo modo non servira’ il secondo comando pure-pw mkdb.

Creo ora la directory principale dell’utente virtuale (questa operazione puo’ essere ommessa se il server pure-ftpd viene lanciato con l’opzione -j che permettera’ la generazione automatica della directory al primo login dell’utente, personalmente preferisco generare manualmente le directory)

mkdir -p /var/ftp/public/myfirstuser
chown ftpuser:ftpgroup /var/ftp/public/myfirstuser

Genero ora un certificato ssl per il support TLS/SSL (vedi sopra il comando “echo 1 > TLS”)

openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem

Riavvio il server e posso provare l’accesso ftp

/etc/init.d/pure-ftpd restart

Alcuni utili comandi:
Lista degli utenti virtuali

pure-pw list

Modifica della password di un utente

pure-pw passwd myfirstuser

Visualizzo i dettagli di un utente

pure-pw show myfirstuser

Modifico dei dettagli di un utente

pure-pw usermod myfirstuser -n 1000 -N 100
pure-pw mkdb

Elimino un utente virtuale e aggiorno subito il database binario (-m)

pure-pw userdel myfirstuser -m

Per monitorare gli utenti virtuali fpt collegati, posso utilizzare il comando

pure-ftpwho

La lista delle direttive di configurazione per Pure-FTPd su Debian/Ubuntu:

Flag Filename Value
-W AllowAnonymousFXP
-z AllowDotFiles
-w AllowUserFXP
-O %s AltLog string
-t %s AnonymousBandwidth range
-M AnonymousCanCreateDirs
-i AnonymousCantUpload
-e AnonymousOnly
-q %d:%d AnonymousRatio range
-s AntiWarez
-r AutoRename
-S %s Bind string
-b BrokenClientsCompatibility
-o CallUploadScript
-A ChrootEveryone
-j CreateHomeDir
-Z CustomerProof
-B Daemonize
-D DisplayDotFiles
-H DontResolve
-P %s ForcePassiveIP IP-number
-F %s FortunesFile string
-4 IPV4Only
-6 IPV6Only
-K KeepAllFiles
-L %d:%d LimitRecursion range
-1 LogPID
-c %d MaxClientsNumber
-C %d MaxClientsPerIP integer
-k %d MaxDiskUsage integer
-I %d MaxIdleTime integer
-m %d MaxLoad integer
-u %d MinUID integer
-N NATmode
-E NoAnonymous
-R NoChmod
-G NoRename
-0 NoTruncate
-p %d:%d PassivePortRange range
-y %d:%d PerUserLimits range
-X ProhibitDotFilesRead
-x ProhibitDotFilesWrite
-n %d:%d Quota range
-f %s SyslogFacility string
-Y %d TLS integer
-a %d TrustedGID integer
-V %s TrustedIP IP-number
-U %s:%s Umask file:dir
-T %s UserBandwidth range
-Q %d:%d UserRatio range
-d VerboseLog

One Reply to “Installare pure-ftpd con utenti virtuali”

  1. ottimo, la ringrazio tanto del suo lavoro che mi è stato utilissimo, ottimo lavoro

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.