Ciao a tutti, oggi in questo tutorial compileremo e installeremo PureFTPd dal sorgente su CentOS 7. Pure-ftpd è un demone FTP leggero e stabile che supporta vari backend di autenticazione come utenti del sistema Linux, puredb, MySQL e PostgeSQL.
1. Installazione di Pureftpd
Installa la toolchain di sviluppo CentOS.
# yum -y groupinstall 'Development Tools'
Installa i file di sviluppo di MariaDB.
# yum -y install mariadb-devel
Scarica i file sorgente pure-ftpd e decomprimi l'archivio.
# cd /usr/local/src
# wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
# tar xvjpf pure-ftpd-1*.tar.bz2
# cd pure-ftpd-1*
Esegui il comando configure per preparare la build. Per avere una panoramica di tutte le opzioni di compilazione, eseguire ./configure --help.
# ./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin \
--libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc \
--sharedstatedir=/usr/com --localstatedir=/var --libdir=/usr/lib64 \
--includedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man \
--with-mysql --with-virtualchroot --with-everything
e compila il binario pure-ftpd:
# make
# make install
2. Creazione di file di configurazione e script di avvio
Per prima cosa creiamo lo script di avvio. Per questa build useremo lo script di avvio di CentOS 6.5 che funziona ancora bene su CentOS 7.
# nano /etc/init.d/pure-ftpd
#!/bin/bash
#
# Startup script for the pure-ftpd FTP Server $Revision: 1.1 $
#
# chkconfig: - 85 15
# description: Pure-FTPd is an FTP server daemon based upon Troll-FTPd
# processname: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# config: /etc/pure-ftpd/pure-ftpd.conf
# Source function library.
. /etc/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is configured.
# [ ${NETWORKING} = "no" ] && exit 0
RETVAL=0
prog="pure-ftpd"
# Path to the pure-ftp binaries.
fullpath=/usr/sbin/pure-ftpd
pureftpwho=/usr/sbin/pure-ftpwho
pure_config=/etc/pure-ftpd/pure-ftpd.conf
pure_launch_script=/usr/sbin/pure-config.pl
start() {
echo -n $"Starting $prog: "
daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
RETVAL=$?
[ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
echo
}
stop() {
echo -n $"Stopping $prog: "
killproc pure-ftpd
RETVAL=$?
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
echo -n $"Reloading $prog: "
killproc pure-ftpd -HUP
RETVAL=$?
echo
;;
condrestart)
if [ -f /var/lock/subsys/pure-ftpd ] ; then
stop
# avoid race
sleep 3
start
fi
;;
status)
status pure-ftpd
RETVAL=$?
if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
$pureftpwho
fi
;;
*)
echo $"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
3. Configurazione delle autorizzazioni dei file
Ora, dovremo fornire le autorizzazioni file richieste dai comandi seguenti che includono la configurazione degli elementi post installazione.
# chmod +x /etc/init.d/pure-ftpd
# mkdir /etc/pure-ftpd/
# cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf
# cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
# chmod 744 /etc/pure-ftpd/pure-ftpd.conf
# chmod 755 /usr/sbin/pure-config.pl
Quindi crea i collegamenti di avvio del sistema e avvia PureFTPd:
# chkconfig --levels 235 pure-ftpd on
# systemctl start pure-ftpd.service
4. Configurazione di TLS con OpenSSL
Ora configuriamo PureFTPd per consentire sessioni FTP e TLS. FTP senza TLS è un protocollo molto insicuro perché tutte le password e tutti i dati vengono trasferiti in chiaro . Utilizzando TLS, l'intera comunicazione può essere crittografata , rendendo così FTP molto più sicuro.
OpenSSL è necessario per TLS; per installare OpenSSL, eseguiamo semplicemente:
# yum -y install openssl
Apri /etc/pure-ftpd/pure-ftpd.conf...
# nano /etc/pure-ftpd/pure-ftpd.conf
Se desideri consentire sessioni FTP e TLS, imposta TLS su 1:
# Questa opzione può accettare tre valori:
# 0 :disabilita il livello di crittografia SSL/TLS (predefinito).
# 1 :accetta sessioni sia tradizionali che crittografate.
# 2 :rifiuta le connessioni che non utilizzano i meccanismi di sicurezza SSL/TLS,
# comprese le sessioni anonime.
# Non _non_ decommentare alla cieca. Assicurati che:
# 1) Il tuo server è stato compilato con il supporto SSL/TLS (--with-tls),
# 2) È presente un certificato valido,
# 3) Solo i client compatibili accederanno.
Per utilizzare TLS, dobbiamo creare un certificato SSL. Lo creo in /etc/ssl/private/, quindi creo prima quella directory:
mkdir -p /etc/ssl/private/
Successivamente, possiamo generare il certificato SSL come segue:
# openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Modifica le autorizzazioni del certificato SSL:
# chmod 600 /etc/ssl/private/pure-ftpd.pem
Infine riavvia PureFTPd:
# systemctl stop pure-ftpd.service
# systemctl start pure-ftpd.service
Conclusione
Evviva, abbiamo installato e configurato con successo pureftpd. Ora possiamo goderci il trasferimento di dati FTP con la sicurezza TLS. Tieni presente che durante la connessione del server FTP dovremmo configurare il nostro client FTP per utilizzare TLS se hai installato e configurato correttamente i certificati SSL. E per impostazione predefinita, pureftpd aprirà la porta 21 per comunicare con il client. In caso di problemi, domande o domande, commenta di seguito senza esitazione in modo che possiamo aggiornare e migliorare ulteriormente i nostri blog e contenuti.