ProFTP
Sommaire
Installation
Pour installer ProFTPD, il suffit d'aller rechercher les sources sur le site officiel
Désarchivez l'archive avant de pouvoir passer à l'étape de compilation
Une fois désarchiver, on peux compiler notre serveur FTP. Déplacez vous dans le dossier que vous venez de désarchiver et démarrer la compilation :
- --prefix indique le dossier d'installation pour notre serveur
Une fois l'étape de configuration terminée, on peux passer à l'installation
Notre serveur FTP est maintenant installé, il nous reste plus qu'à le configurer avant de le démarrer
Configuration
Pour configurer le serveur FTP, on utilise 2 fichiers :
- /opt/proftpd/etc/proftpd.conf
- /opt/proftpd/etc/ftpusers
proftpd.conf
Ce ficher est le fichier de configuration du serveur FTP, le fichier de configuration peux ressembler à ceci (Pour les besoins du FTP dasn une DMZ ) :
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "PASS FTP Access"
#Le demon reste en memoire et ecoute les connexions
ServerType standalone
DefaultServer on
#IdentLookups off
#Message d'acceuil
ServerIdent on "Welcome to ftp.pass.be"
#Ne pas donner d'infos sur le server
DeferWelcome off
# Port 21 is the standard FTP port.
Port 21
DefaultAddress 192.168.55.12
#adresse à renvoyer pour être accessible du réseau (pour activer le mode passif)
MasqueradeAddress 193.190.248.6
#MasqueradeAddress 192.168.55.12
#Configuration du mode passif
PassivePorts 5000 5100
# PID File
PidFile /opt/proftpd/var/proftpd.pid
# Don't use IPv6 support by default.
UseIPv6 off
#Utilisation du fichier /opt/proftpd/etc/ftpusers
#Reference les utilisateurs qui ne peuvent pas e connecter au service FTP
#Exemple : root,www-data,...
UseFtpUsers on
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022
# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances 30
# Nombre maximum de clients ayant le même login
MaxClientsPerHost 5
MaxClientsPerUser 5
#Timeout
#TimeoutStalled 10
#TimeoutNoTransfer 20
#TimeoutLogin 20
#Gestion des logs
ExtendedLog /var/log/proftpd/access.log WRITE,READ write
ExtendedLog /var/log/proftpd/auth.log AUTH auth
ExtendedLog /var/log/ftp.log AUTH
SystemLog /var/log/proftpd/proftpd.log
LogFormat default "%h %l %u %t \"%r\" %s %b"
LogFormat auth "%v [%P] %h %t \"%r\" %s"
LogFormat write "%h %l %u %t \"%r\" %s %b"
SyslogFacility AUTH
#Section Administrateur
UseReverseDNS off
#ServerAdmin
MaxLoginAttempts 2
# Set the user and group under which the server will run.
User proftpd
Group proftpd
# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
# Message d'accueil après une connexion réussie
AccessGrantMsg "Connexion reussie pour %u"
# Normally, we want files to be overwriteable.
AllowOverwrite on
# Bar use of SITE CHMOD by default
#DenyAll
<Limit SITE_CHMOD>
DenyAll
</Limit>
# A basic anonymous configuration, no upload directories. If you do not
# want anonymous users, simply delete this entire <Anonymous> section.
<Anonymous ~ftp>
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Limit the maximum number of anonymous logins
MaxClients 5
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayChdir .message
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
<VirtualHost 192.168.55.12>
ServerName "FTP PASS Interne"
Port 2121
MasqueradeAddress 192.168.55.12
</VirtualHost>
ftpusers
Ce fichier à pour utilité de lister les différents noms d'utilisateurs qui ne pourront pas se connecter au serveur FTP.
On peux très bien le construire en récupérant seulement le nom des utilisateurs du système à partir du fichier /etc/passwd :
cat /etc/passwd | cut -d : -f 1 > /opt/proftpd/etc/ftpusers
Après, il ne reste plus qu'a retirer les utilisateurs qu'on autorise à se connecter au service FTP.
root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody libuuid syslog messagebus whoopsie landscape sshd proftpd anonymous
Utilisateurs
Pour ajouter un utilisateur au service FTP, il suffit de créer un utilisateur système ( Si on utilise pas les utilisateurs virtuelles) :
- -s : spécifie le shell de connexion. Dans notre cas, aucun shell de connexion n'est assigné pour une question de sécurité
- --ingroup : assigne l'utilisateur au groupe users
Il est très important que les utilisateurs de votre FTP aient des droits restreints et donc ne soient pas des utilisateurs réguliers de votre Linux d'ou le /bin/false au lieu de /bin/bash habituel. Maintenant éditez /etc/shells et rajoutez la ligne /bin/false (Si elle n'y est pas)
Démarrage/Arrêt
Démarrer
Pour démarrer le serveur FTP, il est nécessaire de lancer le script /opt/proftpd/sbin/proftpd :
- -d : permet d'indiquer le niveau de log que l'on désire ( Optionnel)
Arrêter le serveur
Pour arrêter le serveur, le seul moyen est de "killer" le process dont l'id est renseigner dans le fichier paramétré dans la configuration du serveur
Script d'automatisation
On peux automatiser les étapes ci-dessus via un script bash
#! /bin/bash
# Auteur : Devleeschauwer Denis
# Proftpd start script
#
# Avril 2012
#
#GLOBAL VARIABLES
DIRECTORY=/opt/proftpd
APPLICATION=ProFTPD
######################################################################
##########################Function####################################
######################################################################
function startInstance
{
#Commande pour demmarer ProFTPD
cd $DIRECTORY/sbin
./proftpd -d 10 > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "Start $APPLICATION Instance [OK]"
else
echo "Start $APPLICATION Instance [KO]"
fi
}
function stopInstance
{
#Commande pour arreter ProFTPD
kill -INT `cat $DIRECTORY/var/proftpd.pid` > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "Stop $APPLICATION Instance [OK]"
else
echo "Stop $APPLICATION Instance [KO]"
fi
}
case "$1" in
'start')
startInstance
;;
'stop')
stopInstance
;;
'restart')
stopInstance
sleep 5
startInstance
;;
'status')
cat $DIRECTORY/var/proftpd.pid > /dev/null 2>&1
if [ $? -eq 0 ]
then
echo "$APPLICATION Instance Running"
else
echo "$APPLICATION Instance Stop"
fi
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
exit 1
;;
esac
exit 0Démarrage système
Pour que le serveur FTP soit lancé au démarrage du système, il faut créer des liens symboliques de note script d'automatisation à différents emplacements. Ces emplacements correspondent aux différents runlevel du système
- Si il y a la lettre S, le paramètre start sera passé au script /etc/init.d/service. En revanche, si c'est la lettre K, c'est le paramètre stop qui sera passé à ce script.
- 00 correspond à une priorité d'exécution. Le service possédant le plus petit chiffre s'exécutera en premier.
Pour être sur que le service soit arrêter correctement lors de l'arrêt ou le reboot du système, nous devons faire la même opération mais en modifiant le dossier de destination et le paramètre envoyé au script
[root@ordi ~]# ln -s /etc/init.d/proftpd /etc/rc0.d/k99proftpd
Procédure
Créer un utilisateur
Pour ajouter un utilisateur à notre FTP, il faut créer un user système :
Cette procédure a été crée pour un accès de nucomat à notre FTP. Les commandes sont identiques seul le nom d'utilisateur et les noms de dossiers peuvent changer selon le cas.
- -d : Spécifie la home directory du nouvel utilisateur
- -m : Force la création de la home directory si elle n'existe pas
Ensuite, il faut assigner un mot de passe au nouvel utilisateur :
Il suffira de renter 2 fois le mot de passe quand cela est demandé.
Si nous créons un utilisateur pour un accès par des personnes extérieurs, il se peut qu'elle ne doivent qu'avoir accès au fichier placé sur le FTP et ne peuvent pas en déposer; Pour cela, il faut retirer les droits d'écriture de l'utilisateur au dossier concerné ( ex : sa Home Directory )
- -R : Pour la récursion
- -w : Pour retirer les droit en écriture ( write ) sur le dossier.
