proftpd è il demone che offre il servizio di File Transfer Protocol del server proFTPD.
comando [opzioni] [argomenti]
opzione
Spiegazione
opzione
SpiegazioneProFTPD può essere avviato in modalità standalone o tramite il superdemone inetd/xinetd e quindi monitorato tramite tcp wrappers. La configurazione del server avviene editando il file /etc/proftpd.conf
e la sintassi per invocarlo è la seguente:
proftpd [ -hlntv ] [ -d debuglevel ] [ -c config-file ] [ -p 0|1 ]
-h
: Visualizza la guida in linea;
-l
: Visualizza i moduli compilati con proftpd;
-n
: Avvia il server in modalità Standalone, i messaggi (di log o di debug) sono visualizzati sullo standard output. Questa opzione è solitamente utilizzata in combinazione con l'opzione -d (debug) ;
-t
: Testa la correttezza sintattica del file di configurazione;
-v
: Visualizza la versione del server;
-d livello-debug
: Setta il livello di debug interno del server. Il range di valori va da 0 a 5. Valori più altri rappresentano un maggior numero di informazioni per il debug. Solitamente i messaggi di debug vengono loggati da syslog tramite la facility debug, salvo utilizzo dell'opzione -n;
-c file-configurazione
: Specifica un file di configurazione differente da quello standard;
-p 0|1
: Abilita o disabilita il supporto per le Persistent Password (riguarda il modo in cui proftpd gestisce l'autenticazione degli utenti).
Installazione di ProFTPD tramite RPM e compilazione dei sorgenti.
INSTALLAZIONE TRAMITE RPM
Il primo passo da compiere è scaricare il pacchetto RPM dal server FTP del produttore ftp://ftp.proftpd.org/. Sono disponibili per ogni versione tre pacchetti rpm:
proftpd-1.2.8-1.i386.rpm Pacchetto principale contenente il server le utility e la documentazione
proftpd-inetd-1.2.8-1.i386.rpm Pacchetto con la configurazione per l'utilizzo con inetd
proftpd-standalone-1.2.8-1.i386.rpm Pacchetto con la configurazione per l'utilizzo standalone
[root@Enigma software]#
wget ftp://ftp.proftpd.org/distrib/packages/RPMS/proftpd-1.2.8-1.i386.rpm
=> `proftpd-1.2.8-1.i386.rpm'
Resolving ftp.proftpd.org... fatto.
Connecting to ftp.proftpd.org[81.223.20.36]:21... connected.
Accesso come utente anonymous ... Login eseguito!
==> SYST ... fatto. ==> PWD ... fatto.
==> TYPE I ... fatto. ==> CWD /distrib/packages/RPMS ... fatto.
==> PORT ... fatto. ==> RETR proftpd-1.2.8-1.i386.rpm ... fatto.
Lunghezza: 579,791 (non autorevole)
100%[================================================================================>] 579,791 4.64K/s ETA 00:00
14:29:13 (4.64 KB/s) - `proftpd-1.2.8-1.i386.rpm' salvato [579791]
Successivamente a seconda di quale configurazione si desidera adottare:
[root@Enigma software]# wget
ftp://ftp.proftpd.org/distrib/packages/RPMS/proftpd-standalone-1.2.8-1.i386.rpm
[...]
[root@Enigma software]# wget
ftp://ftp.proftpd.org/distrib/packages/RPMS/proftpd-inetd-1.2.8-1.i386.rpm
[...]
Si procede quindi con l'installazione del pacchetto principale:
[root@Enigma software]# rpm -ihv proftpd-1.2.8-1.i386.rpm
Preparing... ###########################################
[100%]
1:proftpd ###########################################
[100%]
[root@Enigma homer]# rpm -qli proftpd
Tramite una query RPM è possibile visualizzare cosa è stato installato e
dove
[...]
There are two other packages you can use to setup for inetd or standalone
operation.
/etc/logrotate.d/proftpd
File per la gestione dei log con logrotate
/etc/pam.d/ftp
File per l'autenticazione tramite PAM
/home/ftp
Creazione directory per ftp anonimo
/usr/bin/ftpcount
/usr/bin/ftptop
/usr/bin/ftpwho
Utility
/usr/sbin/ftpshut
Utility amministrativa per fermare il server
/usr/sbin/in.proftpd
Link a proftpd
/usr/sbin/proftpd
Server ftp
/usr/share/doc/proftpd-1.2.8
/usr/share/doc/proftpd-1.2.8/COPYING
/usr/share/doc/proftpd-1.2.8/CREDITS
/usr/share/doc/proftpd-1.2.8/ChangeLog
/usr/share/doc/proftpd-1.2.8/Configuration.html
/usr/share/doc/proftpd-1.2.8/Configuration.sgml
/usr/share/doc/proftpd-1.2.8/GetConf
/usr/share/doc/proftpd-1.2.8/NEWS
/usr/share/doc/proftpd-1.2.8/README
[...]
usr/share/doc/proftpd-1.2.8/sample-configurations/mod_sql.conf
/usr/share/doc/proftpd-1.2.8/sample-configurations/virtual.conf
/usr/share/doc/proftpd-1.2.8/xferstats.holger-preiss
Documentazione: faq, RFC del protocollo ed esempi di configurazione ecc.
/usr/share/man/man1/ftpcount.1.gz
/usr/share/man/man1/ftptop.1.gz
/usr/share/man/man1/ftpwho.1.gz
/usr/share/man/man5/xferlog.5.gz
/usr/share/man/man8/ftpshut.8.gz
/usr/share/man/man8/proftpd.8.gz
Manuali del server e delle utility a corredo
/var/run/proftpd
Creazione directory contenente i dati di run-time
AVVIO DEL SERVIZIO: Inetd o Standalone
Nel caso in cui si scelga di utilizzare il server con inetd si dovrà installare proftpd-inetd-1.2.8-1.i386.rpm
. Questo pacchetto si occupa di installare /etc/proftpd.conf
, di inserire la entry relativa al servizio ftp in /etc/inetd.conf
e di inviare un segnale HUP ad inetd in modo che rilegga la configurazione.
Nel caso si intenda utilizzare proFTPD in modalità standalone è possibile utilizzare proftpd-standalone-1.2.8-1.i386.rpm
, il quale installa il file di configurazione base /etc/proftpd.conf
e lo script per la gestione del server /etc/rc.d/init.d/profptd
.
INSTALLAZIONE TRAMITE COMPILAZIONE DEI SORGENTI
Anche per l'installazione partendo dai sorgenti il primo passo è il download:
[root@Enigma software]# wget
ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.8.tar.gz
--14:32:24-- ftp://ftp.proftpd.org/distrib/source/proftpd-1.2.8.tar.gz
=>`proftpd-1.2.8.tar.gz' Resolving ftp.proftpd.org... fatto.
Connecting to ftp.proftpd.org[81.223.20.36]:21... connected.
Accesso come utente anonymous ... Login eseguito!
==> SYST ... fatto. ==> PWD ... fatto.
==> TYPE I ... fatto. ==> CWD /distrib/source ... fatto.
==> PORT ... fatto. ==> RETR proftpd-1.2.8.tar.gz ... fatto.
Lunghezza: 966,281 (non autorevole)
100%[================================================================================>] 966,281 4.51K/s ETA 00:00
14:35:55 (4.51 KB/s) - `proftpd-1.2.8.tar.gz' salvato [966281]
SCOMPATTAZIONE
Terminato il download si procede:
[root@Enigma software]# tar -zxvf proftpd-1.2.8.tar.gz
proftpd-1.2.8/
proftpd-1.2.8/contrib/
proftpd-1.2.8/contrib/dist/
proftpd-1.2.8/contrib/dist/rpm/
proftpd-1.2.8/contrib/dist/rpm/ftp.pamd
proftpd-1.2.8/contrib/dist/rpm/proftpd.init.d
[...]
proftpd-1.2.8/utils/scoreboard.c
proftpd-1.2.8/utils/utils.h
proftpd-1.2.8/utils/Makefile.bak
proftpd-1.2.8/utils/Makefile.in.bak
proftpd-1.2.8/stamp-h
Le directory presenti una volta scompattato il pacchetto sono:
drwxr-xr-x 4 root root 4096 mar 4 06:33 contrib
Tools e moduli aggiuntivi, ed esempi di configurazione
drwxr-xr-x 3 root root 4096 mar 4 06:33 doc
Directory contentene la documentazione
drwxr-xr-x 2 root root 4096 mar 4 06:33 include
drwxr-xr-x 3 root root 4096 mar 4 06:33 lib
drwxr-xr-x 2 root root 4096 mar 4 06:33 modules
drwxr-xr-x 2 root root 4096 mar 4 06:33 src
Directory contenente i sorgenti
drwxr-xr-x 2 root root 4096 mar 4 06:33
sample-configurations
Directory contenente esempi di configurazione
drwxr-xr-x 2 root root 4096 mar 4 06:33 utils
Directory contentente utility per il server
Nella directory principale è possibile trovare diversi file README a seconda della piattaforma utilizzata. Tutte le operazioni di configurazione e installazione avvengono dalla top level directory del programma.
CONFIGURAZIONE
Le opzioni di configurazione sono diverse, è possibile visualizzarle tramite:
[root@Enigma proftpd-1.2.8]# ./configure --help
Tra le opzioni più utilizzate abbiamo:
--prefix=/DIR
Imposta la directory di installazione del server Es.: --prefix=/etc
--sysconfdir=/DIR
Imposta la directory contenente i file di configurazione Es.: --sysconfdir/etc
--localstatedir=/DIR
Imposta la directory per le variabili di stato Es.: --localstatedir=/var
--with-modules=LIST
Include l'utilizzo di moduli aggiuntivi Es.: --with-modules=mod_sql:mod_sql_postgres
[root@Enigma proftpd-1.2.8]# ./configure --prefix=/usr
--sysconfdir=/etc --localstatedir=/var
In questo caso si specifica dove installare il software e quale siano le directory per i file di configurazione e per le variabili di stato
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
[...]
config.status: creating config.h
config.status: executing default commands
COMPILAZIONE
Una volta effettuata la configurazione è possibile lanciare la compilazione tramite il comando make:
[root@Enigma proftpd-1.2.8]# make
echo \#define BUILD_STAMP \"`date`\" > include/buildstamp.h
cd lib/ && make lib
make[1]: Entering directory `/home/homer/software/proftpd-1.2.8/lib'
[...]
INSTALLAZIONE
L'installazione avviene tramite il classico make install:
[root@Enigma proftpd-1.2.8]# make install
cd lib/ && make lib
[...]
/usr/bin/install -c -o root -g root -m 0644 ./utils/ftpwho.1 /usr/man/man1
/usr/bin/install -c -o root -g root -m 0644 ./src/xferlog.5 /usr/man/man5
[...]
AVVIO DEL DEL SERVIZIO: Inetd o Standalone
In caso di utilizzo con inetd e tcp wrappers è necessario aggiungere a
/etc/inetd.conf
la seguente riga di configurazione:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd
nel caso di utilzzo di xinetd aggiungere il file ftp sotto la directory
/etc/xinetd.d/
:
service ftp
{
flags = REUSE
socket_type = stream
instances = 50
wait = no
user = root
server = /usr/sbin/proftpd
bind = 192.168.0.2
log_on_success = HOST PID
log_on_failure = HOST RECORD
}
Nel caso si voglia utilizzare la modalità standalone è possible trovare in contrib/dist/rpm/proftpd.init.d
un esempio di script da richiamare al boot, oppure da utilizzare per le operazioni di restart, rilettura della configurazione o stop del server.
ProFTPD Server visualizza di default informazioni contenenti il proprio nome e la propria versione. Nascondere, ad un eventuale attaccante oppure ad un virus che si basi sui banner, queste informazioni rappresenta un punto di partenza per la sicurezza del proprio server.
In seguito ad un'installazione standard di ProFTPD i dati visualizzati sono i seguenti:
homer@Apollo13:~$ ftp ftp.joker.net
Connected to ftp.joker.net.
220 ProFTPD 1.2.5 Server (ProFTPD Default Installation) [Joker.Net]
[...]
La possibilità di visualizzare o meno determinate informazioni di proFTPD dipendono dal file di configurazione /etc/proftpd.conf
. In particolare è necessario agire sulle direttive di configurazione ServerName
e ServerIdent
.
E' necessario disabilitare la direttiva ServerIdent
impostandola ad off
, e cambiare il banner modificando la stringa di ServerName
. Nel caso questi valori siano utilizzati all'interno di direttive VirtualHost è necessario modificare i parametri per ogni Host Virtuale definito.
Un esempio di modifica della configurazione:
homer@Joker:/etc$ cat proftpd.conf
[...]
ServerIdent off
...
<VirtualHost ftp.joker.net>
ServerName "Joker FTP Server. Ogni accesso non autorizzato sarà punito."
Port 21
...
</VirtualHost>
<VirtualHost ftp.jokerweb.net>
ServerName "Joker WEB FTP Server. Ogni accesso non autorizzato sarà punito."
Port 21
[...]
</VirtualHost>
Dopo aver effettuato le modifiche alla configurazione non vengono più visualizzate informazioni relative al server ed alla sua versione:
homer@Apollo13:~$ ftp ftp.joker.net
Connected to ftp.joker.net.
220 Joker.Net FTP server ready.
[...]
Vsftp viene considerato un server ftp sicuro è il serve di default installato sui sistemi Red Hat dalla versone 9 in poi la configurazione si presenta molto semplice anche se nasconde un qualche insidia.
nstallazione vsftpd-2.0.1-5.i386.rpm
rpm -Uvh vsftpd-2.0.1-5..i386.rpm
è composto dai seguenti file:
* /etc/vsftp/vsftp.conf
* /etc/vsftp.ftpuser
* /etc/vsftp.user_list
* /etc/vsftp.banned_emails
Per aggiungere Vsftp al demone xinetd
Vsftp è disabilitato di default nel file /etc/xinetd.d/vsftpd :
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = usr/bin/vsftpd
nice = 10
}
disable = no per abilitarlo
riavviare il demone xinetd
/etc/init.d/xinetd restart
se si vuole invece far partire vsftp all'avvio con inet.d
chkconfig --add vsftpd
chkconfig --level 3 vsftpd on
file di configurazione principale
/etc/vsftp/vsftp.conf
# Abilita/disabilita accesso anonimo
anonymous_enable=YES
...
...
# Abilita/disabilita accesso agli user locali
local_enable=YES
...
...
# Abilita/disabilita agli utente accesso in scrittura
write_enable=YES
...
...
# Abitilità/disabilita la possibilità degli utenti anonimi di scaricare file
# ha valore solo se write_enable è decomentato
# Also, you will
# obviously need to create a directory writable by the FTP user.
# anon_upload_enable=YES
...
...
# Decomenta sei vuoi permettere agli utenti anonimi di creare nuove directory
# anon_mkdir_write_enable=YES
# Attiva i log su tutte le operazione di upload/download
xferlog_enable=YES
...
...
# Specificare il path dei log o lasciare quello di default
# xferlog_file=/var/log/vsftpd.log
# Gli utenti contenuti nel file vsftp.chroot_list non avranno accesso
# alla cartella superiore alla proprio home dir
chroot_list_enable=YES
chroot_list_file=/etc/vsftp.chroot_list
#Nel file chroot_list mettere semplicemente il nome utente che deve essere limitato
#chroot_local_user=YES (chroot_list diventa la lista degli utenti da un chrottare)
Altri file di configurazione:
/etc/vsftp/vsftp.ftpusers
Con le impostazioni di default contiene i nomi degli utenti che non hanno accesso ftp.
se userlist_enable=YES non funziona
/etc/vsftp.banned_emails
Contiene tutti gli indirizzi email che non sono ammessi con le connesioni anonime.
Esempi di configurazione:
Con questa configurazione è negato l'accesso agli utenti specificati.
anonymous_enable=No
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list (qui vanno scritti gli utenti che devono essere chrottati)
userlist_enable=YES
jed /etc/vsftpd.user_list (qui vanno aggiunti gli utenti che non devono potersi loggare in ftp)
ottieni lo stesso effetto settando :
userlist_enable=No
/etc/vsftp/vsftp.ftpusers (inserire qui le persone che non possono loggarsi in ftp)
Con questa configurazione l'accesso è permesso solo agli utenti esplicitamente dichiarati:
anonymous_enable=No
local_enable=YES
userlist_enable=YES
userlist_deny=NO
jed /etc/vsftpd.user_list (inserire qui gli utenti che posso loggarsi in ftp)
Limitare la connessione FTP a determinati HOST
Editare il file /etc/hosts.allow dovete aggiungere vsftpd: con la lista degli host
a cui è permessa la connessione ad esempio:
vsftp:127.0.0.1 (localhost)
vsftp: 192.168.1 (alla subnet )
vsftp: 212.56.23.23 212.45.69.25 (2 host specifici)
vsftp: ALL (a tutti)
Vsftp viene considerato un server ftp sicuro è il serve di default installato sui sistemi Red Hat dalla versone 9 in poi la configurazione si presenta molto semplice anche se nasconde un qualche insidia.
nstallazione vsftpd-2.0.1-5.i386.rpm
rpm -Uvh vsftpd-2.0.1-5..i386.rpm
è composto dai seguenti file:
* /etc/vsftp/vsftp.conf
* /etc/vsftp.ftpuser
* /etc/vsftp.user_list
* /etc/vsftp.banned_emails
Per aggiungere Vsftp al demone xinetd
Vsftp è disabilitato di default nel file /etc/xinetd.d/vsftpd :
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = usr/bin/vsftpd
nice = 10
}
disable = no per abilitarlo
riavviare il demone xinetd
/etc/init.d/xinetd restart
se si vuole invece far partire vsftp all'avvio con inet.d
chkconfig --add vsftpd
chkconfig --level 3 vsftpd on
file di configurazione principale
/etc/vsftp/vsftp.conf
# Abilita/disabilita accesso anonimo
anonymous_enable=YES
...
...
# Abilita/disabilita accesso agli user locali
local_enable=YES
...
...
# Abilita/disabilita agli utente accesso in scrittura
write_enable=YES
...
...
# Abitilità/disabilita la possibilità degli utenti anonimi di scaricare file
# ha valore solo se write_enable è decomentato
# Also, you will
# obviously need to create a directory writable by the FTP user.
# anon_upload_enable=YES
...
...
# Decomenta sei vuoi permettere agli utenti anonimi di creare nuove directory
# anon_mkdir_write_enable=YES
# Attiva i log su tutte le operazione di upload/download
xferlog_enable=YES
...
...
# Specificare il path dei log o lasciare quello di default
# xferlog_file=/var/log/vsftpd.log
# Gli utenti contenuti nel file vsftp.chroot_list non avranno accesso
# alla cartella superiore alla proprio home dir
chroot_list_enable=YES
chroot_list_file=/etc/vsftp.chroot_list
#Nel file chroot_list mettere semplicemente il nome utente che deve essere limitato
#chroot_local_user=YES (chroot_list diventa la lista degli utenti da un chrottare)
Altri file di configurazione:
/etc/vsftp/vsftp.ftpusers
Con le impostazioni di default contiene i nomi degli utenti che non hanno accesso ftp.
se userlist_enable=YES non funziona
/etc/vsftp.banned_emails
Contiene tutti gli indirizzi email che non sono ammessi con le connesioni anonime.
Esempi di configurazione:
Con questa configurazione è negato l'accesso agli utenti specificati.
anonymous_enable=No
local_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list (qui vanno scritti gli utenti che devono essere chrottati)
userlist_enable=YES
jed /etc/vsftpd.user_list (qui vanno aggiunti gli utenti che non devono potersi loggare in ftp)
ottieni lo stesso effetto settando :
userlist_enable=No
/etc/vsftp/vsftp.ftpusers (inserire qui le persone che non possono loggarsi in ftp)
Con questa configurazione l'accesso è permesso solo agli utenti esplicitamente dichiarati:
anonymous_enable=No
local_enable=YES
userlist_enable=YES
userlist_deny=NO
jed /etc/vsftpd.user_list (inserire qui gli utenti che posso loggarsi in ftp)
Limitare la connessione FTP a determinati HOST
Editare il file /etc/hosts.allow dovete aggiungere vsftpd: con la lista degli host
a cui è permessa la connessione ad esempio:
vsftp:127.0.0.1 (localhost)
vsftp: 192.168.1 (alla subnet )
vsftp: 212.56.23.23 212.45.69.25 (2 host specifici)
vsftp: ALL (a tutti)