Installare un server ftp su linux

Ftp è un protocollo vecchissimo e estremamente insicuro e sconsiglio a tutti di usarlo senza TLS. Purtroppo è ancora usatissimo e in alcuni casi è necessario utilizzarlo. Io cerco di connettermi unicamente in SFTP usando SSH Transfer protocol che è leggermente più lento ma molto più sicuro. L’ftp lo utilizzo solamente per la gestione degli aggiornamenti dei plugin di wordpress in automatico. In realtà è possinbile usare SFTP direttamente da wordpress ma farlo senza https non è pericoloso perchè possono sniffare il nome utente e la password. Solitamente dopo che ho aggiornato wordpress e non mi serve più ftp, stoppo il demone con conseguente minor carico di lavoro per il server e maggior sicurezza. Vediamo ora come Installare un server ftp su linux. In questo esempio la procedura di installazione viene effettuata su una Debian 6.0 squeeze, ma dovrebbe funzionare anche sulle distribuzioni che derivano da debian.

Installare un server ftp su linux

Per prima cosa installare un server ftp in questo caso proftp

apt-get update
apt-get install proftpd

Al momento dell’installazione chiede se si vuole installare in modalità standalone oppure inetd, per ftp server che generano molto traffico e molte connessioni è consigliato installare la standalone anche se pare che consumi più risorse al server: /etc/init.d/proftpd stop

Il file di configurazione si trova in /etc/proftpd/proftpd.conf
Alcune direttive degne di nota sono le seguenti:
ServerName:Permette di indicare il nome che apparirà agli utenti:

ServerName “proftp server”

DefaultRoot: Imposta la chroot directory di default

DefaultRoot ~

Un utilizzo interessante di questa direttiva è la possibilità di dirottare un particolare utente in una directory diversa dalla propria home:

DefaultRoot /tmp bob

MaxClients:Limita il numero di utenti che possono effettuare una connessione contemporanea

Maxclients 2

MaxClientsPerHost:Limita il numero di connessioni per singolo client

MaxClientsPerHost 25

Se il file viene modificato ovviamente occorre riavviare

/etc/init.d/proftpd restart

Di default l’ftp mostra come directory di default la home dell’utente che si connette tuttavia è possibile personalizzare la directory a seconda dell’utente che si connette aggiungendo una o più righe simili a questa

DefaultRoot /tmp nomeutente
DefaultRoot /srv/www/pippo.com pippo

Creare un utente ftp-user per poter accedere via ftp ai dati.

useradd ftputente
//cambia la password
passwd ftputente

Impostare i permessi per accedere alla cartella del server web. Questo è solo un esempio in realtà sarebbe meglio aggiungere utente ftp a un gruppo che ha il diritto di scrittura nelle document root.

chown -R nomeutente /srv/www ftputente
chgrp -R nomeutente  /var/www ftputente

Per i file io metterei 644 e per le directory 755 se proprio avete problemi date a tutto quanto 755 anche se una soluzione orripilante:

chomd 755 /var/www/*

Qui di seguito un tips per impostare i diritti utenti a solo i file oppure solo alle cartelle, prima di lanciarlo verificare di essere nella parent directory in cui occorre impostare i diritti e lanciare i seguenti script:
Per impostare solo le directory a 755:

find . -type d -exec chmod 755 {} \; alla fine ho dovuto mettere 775

Per impostare solo i file

find . -type f -exec chmod 664 {} \;

Problemi ftp con gli aggiornamenti automatici di wordpress

Io ho installato l’ftp solo per pigrizia per non dover aggiornare manualmente i plugin di wordpress. Sfiga volle che l’aggiornamento automatico di wordpress mi rispondeva ugualmente con un windowsiano messaggio di errore: Failed to connect to FTP Server
Ti consiglio di eseguire questi passaggi:

Prima di tutto collegarsi al server con l’utente ftp che usa wordpress con un client ftp come filezilla per verificare se l’account è corretto
Controllare che l’utente FTP abbia i diritti di scrittura sui file e sulle cartelle
Come host provare ad usare localhost perchè magari non riesce a risolvere il nome di dominio
Se ancora non funziona contattate il vostro hosting 😀

In ogni caso non settare i diritti a 777 o impostare come owner www-data o apache è pericoloso per la sicurezza di wordpress al limite inserisci questi due utenti in un gruppo!

Limitare al minimo i privilegi degli utenti FTP

Questo sistema ti permetterà di aumentare la sicurezza del tuo server impedendo agli utenti ftp di accedere alla shell ma di poter continuare ad utilizzare l’ftp.
Aprire il file che contiene gli utenti /etc/passwd e modificare la shell degli utenti ftp da /bin/bash in /etc/ftponly

ftpusername:x:1017:1017:,,,:/home/ftpusername:/etc/ftponly

Creare il file bash /etc/ftponly e scriverci dentro:

#!/bin/sh
echo "Welcome to my FTP Webserver. Please note that all activity is tracked for security purposes!"
sleep 5
exit

Abilitare la shell aggiungendo alla fine del file /etc/shells la nostra nuova shell ftponly

# /etc/shells: valid login shells
/bin/csh
/bin/sh
/bin/rbash
/usr/bin/screen
/etc/ftponly

Dare i diritti di esecuzione al file

chmod a+x /etc/ftponly

Ora chiunque cerchi di connettersi in ssh con l’utente ftp riceverà il messaggio impostato e poi verrà buttato fuori. Se qualcosa non vi torna oppure ho scritto qualche cazzata sentitevi liberi di intervenire scrivendo un commento. 😛

Prossimamente posterò altre guide sempre su Gnu/Linux Debian se siete interessate STAY TUNED.

Fonti:
http://www.darian-brown.com/vsftpd-disable-ssh-login-and-allow-ftp-access/
http://guide.debianizzati.org/index.php/Installare_un_server_FTP
http://www.spaciughino.com/2012/07/05/spaciughino-in-the-cloud/881

L'articolo ti è stato utile?

Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie!