ProFTPD sur SSL/TLS

jeudi 12 mars 2009, par Minimalteck

Cet article présente une configuration simple de ProFTPD avec le support SSL/TLS : il peut donc vous servir de base pour une configuration plus élaborée, utilisant par exemple des VirtualHost, dont le concept n’est pas sans rappeler un certain Apache.

Pour l’install de Proftp, attention, c’est compliqué ;)
En root :

www:/#apt-get install proftpd

Et voilou !!! Reste plus qu’à configurer la bête : tout ce passe dans /etc/proftpd.conf.
Personnellement, je suis reparti d’une conf à ma sauce, surtout que le fichier est relativement léger… un p’tit mv /etc/proftpd.conf /etc/proftpd.conf.original par précaution, puis vi /etc/proftpd.conf :

#
# /etc/proftpd.conf
#

#######################
# REGLAGES GENERAUX : #
#######################

ServerName "FTP on WWW"

# le démon reste en mémoire et écoute les connections
ServerType standalone

#ServerAdmin root@localhost

# Utile surtout pour les "virtuals hosts"
DefaultServer on

# Autoriser l'usage de /etc/ftpusers pour interdire des users
#TO DO: voir quels comptes sont à interdire
UseFtpUsers on

# cache l'identite du serveur
ServerIdent on "FTP Server ready"
DeferWelcome on

# définition du port (standard)
Port 21

# paramétrage réponse du serveur : large compatibilité avec les clients
MultilineRFC2228 on

# Nom et groupe de l'utilisateur sous lequel Proftpd est lancé :
User nobody
Group nogroup

# Auth via PAM (par défaut)
AuthPAM on
AuthPAMConfig proftpd

# Timeout (en secondes) : règle la fermeture de la connection automatiquement
TimeoutStalled 300
TimeoutNoTransfer 300
TimeoutIdle 600

# Nombre de processus fils maximum que va utiliser proftpd : attention >30 attaque DoS
MaxInstances 20

# Nombre maximum de clients simultanés
MaxClients 10

# Nombre maximum de clients ayant le même login
MaxClientsPerHost 2

DisplayLogin welcome.msg
DisplayFirstChdir .message

# Uncomment this if you would use quota module: ???? no doc
#Quotas                         on

##########################################################

#####################
# SUPPORT SSL/TLS : #
#####################

#Sécurisation des transferts avec TLS - générer le certificat x509 via la commande :
#openssl req -new -x509 -days 365 -nodes -out /etc/ssl/certs/proftpd.cert.pem -keyout /etc/ssl/certs/proftpd.key.pem

TLSEngine on

#On force toutes les connections avec ssl
TLSRequired on

# logs
TLSLog /var/log/proftpd/proftpd.tls_log

# Protocole
TLSProtocol SSLv23

TLSOptions NoCertRequest

# Certif et key
TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem

TLSVerifyClient off

##########################################################


#####################
#   FORMATS LOGS :  #
#####################
LogFormat            default "%h %l %u %t \"%r\" %s %b"

# Log des logins
#ExtendedLog          /var/log/proftpd/proftpd.auth_log      AUTH auth

# Pour les parranos que nous sommes :
ExtendedLog          /var/log/proftpd/proftpd.paranoid_log  ALL default

#The TransferLog directive configures the full path to the "wu-ftpd style" file transfer log (par defaut)
TransferLog /var/log/xferlog

##########################################################


#####################
#    CONTEXTES :    #
#####################

# Contexte GLOBAL :

<Global>

# Limite les accès depuis Intranet : adresses privées classe B
        <Limit ALL LOGIN>
               Order Allow,Deny
               Allow from 192.168.
                DenyAll
        </Limit>

# Chrooter users : Les limiter à leur répertoire personnel
DefaultRoot ~
# NB Pour interdire le ftp à un utilisateur : Ajoutez son nom à la liste contenue dans le fichiers /etc/ftpusers

# Seul le propriétaire d'un fichier peut le modifier.
Umask  022  022

# Messages à l'utilisateur
AccessDenyMsg "Accès non autorisé pour l'utilisateur : %u."
AccessGrantMsg "Bienvenue %u. sur mon FTP."

ListOptions "-l"

HiddenStor on
# Authoriser la reprise des téléchargements :
AllowStoreRestart on
AllowRetrieveRestart on

#Filtres
DenyFilter \*.*/

ShowSymlinks on

# Authorise l'écriture d'un fichier sur un fichier portant le même nom :
AllowOverwrite on
</Global>

<Directory /home>
      <Limit  LOGIN>
               DenyAll
       </Limit>
</Directory>

<Directory /~>
        HideNoAccess on
# Filtrage par IP internes :
        <Limit LOGIN CWD CDUP RETR STOR RNFR RNTO DELE RMD MKD PWD LIST NLIST>       
                Order Allow,Deny
               Allow from 192.168.
#                DenyAll
                IgnoreHidden on
       </Limit>
</Directory>

# Contexte Pages Persos :
#<Directory ~/public_html>
#        <Limit LOGIN CWD CDUP RETR STOR RNFR RNTO DELE RMD MKD PWD LIST NLIST>
#                AllowAll
#                IgnoreHidden on
#        </Limit>       
#</Directory>


##########################################################


#####################
#   OPTIONS SUP.:   #
#####################
#Limiter la bande passante : version Sarge
#TransferRate [commande] [débit] [utilisateur/groupe] [nom de l'utilisateur/du groupe]
#pour limiter l'upload à 1Mo/sec pour tout le monde et le download à 2Mo/sec pour l'utilisateur bar on fera :
#TransferRate APPE,STOR 1048576
#TransferRate RETR 2097152 user foo


##########################################################


#####################
#   LIMIT OPTIONS:  #
#####################
# CWD Pour changer de répertoire courant
# CDUP Pour remonter d'un niveau de répertoire
# RETR Permet de demander l'envoie d'une copie du fichier passé en argument.
# STOR Permet d'envoyer un fichier à stocker sur le serveur FTP distant.
# RNFR Spécifie l'ancien nom du fichier à renommer. Doit être immédiatement suivit par la commande RNTO.
# RNTO Spécifie le nouveau nom du fichier. Ces deux commandes permettent de renommer un fichier.
# DELE Permet d'effacer un fichier.
# DELE Permet d'effacer un fichier.
# RMD Permet d'effacer un répertoire.
# MKD Permet de créer un répertoire.
# PWD Permet d'obtenir le nom du répertoire courant.
# LIST Permet d'obtenir la liste des fichiers du répertoire en paramètre, ou des détails sur le fichier dont le nom a été passé en paramètre.
# NLST Idem LIST, mais ne retourne pas d'informations sur les fichiers, seulement leur nom.

Tout est commenté… je crois que ça reste compréhensible…
Toutefois, je vous invite fortement à consulter :
- sur Léa-Linux, l’excellent article "Introduction à proftpd" ;
- le site officiel du projet ProFTPD.

texte - 5.4 ko
proftpd.conf

P.-S.

Pour continuer avec Proftpd, voyez aussi les utilisateurs virtuels et la gestions des quotas avec Mysql

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0