Implantation

Ce tutoriel développe la mise en place d'un serveur FTP constitué de Virtual Hosts et d'un accès Anonymous.


Installation des packages

proftpd-1.2.9-3.x.rpm
proftpd-anonymous-1.2.9-3.x.rpm

proftpd-1.2.10-10_i386.deb
proftpd-common-1.2.10-10_i386.deb



Configuration de /etc/proftpd.conf

# Nom du serveur FTP des utilisateurs locaux.
ServerName "Server Alex.fr"

# Port d'écoute pour le serveur FTP des utilisateurs locaux.
# le port 21 sera réservé pour les connections anonymous.

Port 2111

# email de l'administrateur ProFTPd.
ServerAdmin ftp@alex.fr

# "standalone" signifie que c'est moi qui démarre le serveur par la commande /etc/init.d/proftpd start
# "inetd" signifie que c'est par le meta-deamon xinetd qu'il sera démarré.
#(bien mettre inetd meme si le meta-deamon s'appel xinetd).
ServerType standalone

# Est utile que si l'on veut utiliser des VirtualHosts, sinon ce n'est pas la peine de l'indiquer.
DefaultServer on

# Autorise les clients à reprendre les Uploads vers vous.
# A déactiver si on n'autorise pas les Uploads.
AllowStoreRestart on

# Autorise la reprise des téléchargements.
AllowRetrieveRestart on

# Pour éviter d'être vulnérable aux attaques de type DoS laissez le nombre de processus enfants à 30 maximum.
# Ce paramètre n'est valable que si vous fonctionnez en mode "standalone"
# Si vous êtes en mode "inetd" vous devrez configurer le nombre de processus enfants maximum dans le server xinetd.
MaxInstances 30

# Permet au serveur de rechercher lui même dans /etc/passwd la validité des
# mots de passe (Utile pour NIS). Laisser par défaut sur "off".
PersistentPasswd off

# Active un arrangement des lignes pour plus de compatibilité.
MultilineRFC2228 on

# Evite le blocage de ProFTPd pendant le temps de réponse de résolution DNS.
UseReverseDNS off

# Option de logging pour cette zone vers ce fichier.
TransferLog /var/log/proftpd/proftpd-alex.log

# Formats des logs.
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"

# Permet de chrooter les utilisateurs FTP locaux dans leur home directory.
DefaultRoot ~


# Tout ce qui est défini dans <Global> s'applique à l'ensemble du contexte de configuration, même VirtualHost.
<Global>

# Règle sous quel User et Group sera lancer le serveur FTP.
User nobody
Group nogroup

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022 022

# Définit la plage des ports passifs que ProFTPd utilisera pour répondre aux clients.
PassivePorts 49152 65534


# Enregistre les accès sur les fichiers et répertoires.
ExtendedLog /var/log/proftpd/access.log WRITE,READ write

# Enregistre tout les logins.
ExtendedLog /var/log/proftpd/auth.log AUTH auth

# Force l'option de directory listings (NLST, LIST et STAT) à -l
ListOptions "-l"

# Autorise le remplacement d'anciens fichiers par des nouveaux, si l'utilisateur à le droit en écriture bien sur.
<Directory />
     AllowOverwrite on
</Directory>

# Permet de ne pas donner d'informations sur le serveur.
DeferWelcome off

# On indique au serveur FTP d'utiliser ou non le fichier /etc/ftpusers pour savoir qui a le droit de se connecter.
# Par défaut ce fichier est utilisé par ProFTPd.
UseFtpUsers on

# Le premier message qui sera affiché quand quelqu'un se connectera
ServerIdent on "Server FTP ready"

# Message d'accueil
AccessGrantMsg "Bienvenue %u sur Alex.fr"

# Autorise le téléchargement ou upload distant directement depuis un autre serveur FTP sans passer par le PC de l'user.
AllowForeignAddress on

# Permet de déconnecter le client au bout de "x" secondes :
#

# S'il n'y a aucune activité de son coté.
TimeoutIdle 600

# S'il n'y a aucune activité entre la saisie du login et du passwd.
TimeoutLogin 300

# S'il n'opère aucun transfert.
TimeoutNoTransfer 300

# S'il a stoppé le transfert.
TimeoutStalled 3600

# Autorise seulement les noms de fichiers normaux (caractères alphanumérique) et non des codes shell.
PathAllowFilter "[a-zA-Z0-9]"

# Refuse l'upload de fichiers .ftpaccess ou .htaccess
PathDenyFilter "(\.ftp)|(\.hta)[a-z]+$"

# N'autorise pas de passer des printf-Formats.
AllowFilter "^[a-zA-Z0-9@~ /,_.-]*$"
DenyFilter "%"

# Cache les liens symboliques.
ShowSymlinks off


</Global>

# Permet de prendre en compte le fichier suivant.
Include /etc/proftpd-virtualhost.conf



Configuration de /etc/proftpd-virtualhost.conf

# VirtualHost Réservé au webmaster. Adresse du serveur FTP.
<VirtualHost 192.168.1.1>

# Nom du serveur FTP Réservé au webmaster.
ServerName "Server FTP Admin"

# Port différent de celui utilisé par Anonymous (21) et les utilisateurs locaux.
Port 2100

# Option de logging pour cette zone vers ce fichier.
TransferLog /var/log/proftpd/proftpd-admin.log

# Pour limiter le nombre de tentatives de login.
MaxLoginAttempts 2

# ProFTPd vérifie si l'utilisateur à bien un shell valide.
RequireValidShell on

# Accepte uniquement le login webmaster.
<Limit LOGIN>
     Order Allow,Deny
     AllowUser
webmaster
     Deny from all
</Limit>

# Permet de chrooter les autres personnes que webmaster, malgré
# la restriction de login ci-dessus.

DefaultRoot ~ !webmaster

AccessGrantMsg "Bienvenue %u sur le Serveur FTP Admin"

# Autorise seulement ces deux commandes dans /
<Directory />
     <Limit CWD DIRS>
          Allow 192.168.0.0/24
          Allow 192.168.1.0/24
     </Limit>
     <Limit ALL>
          DenyAll
     </Limit>
</Directory>

# Refuse toutes les commandes dans /var/www/html/webmail.
<Directory /var/www/html/webmail>
     <Limit ALL>
          DenyAll
     </Limit>
</Directory>

# Autorise toutes les commandes dans /var/www/html.
<Directory /var/www/html>
     <Limit ALL>
          AllowAll
     </Limit>
</Directory>

# Autorise toutes les commandes dans /var/www/cgi-bin.
<Directory /var/www/cgi-bin>
     <Limit ALL>
          AllowAll
     </Limit>
</Directory>

# Autorise toutes les commandes dans /var/log/apache.
<Directory /var/log/apache>
     <Limit ALL>
          AllowAll
     </Limit>
</Directory>


</VirtualHost>


# VirtualHost Réservé aux Anonymous.
<VirtualHost 192.168.1.1>

# Nom du serveur FTP Réservé aux Anonymous.
ServerName "Server FTP Public"

Port 21
Umask 027

# Option de logging pour cette zone vers ce fichier.
TransferLog /var/log/proftpd/proftpd-anonymous.log


# Permet de ne pas vérifier l'identité du login amonymous.
IdentLookups off

# Refuse la connexion des Utilisateurs disposant d'un login, pour autoriser seulement les connexions Amonymous.
<Limit LOGIN>
     DenyAll
</Limit>

# Limite le nombre des clients différents qui peuvent se connecter.
MaxClients 10 "Sorry, max %m users -- try again later"

AccessGrantMsg "Bienvenue %u sur le Serveur FTP Public"

Include /etc/proftpd-anonymous.conf

</VirtualHost>



Configuration de /etc/proftpd-anonymous.conf

# Connecte les Anonymous vers /var/ftp/pub
<Anonymous ~ftp/pub>

# Connecte les Anonymous vers /home/ftp
<Anonymous ~ftp>


User ftp
Group ftp

# Fait d'anonymous un alias à ftp, en se logant sous anonymous, ils sont appelés ftp.
UserAlias anonymous ftp

# Ignore la vérification d'un shell pour anonymous.
RequireValidShell off

# Permet de ne pas rechercher dans le système, le mot de passe.
AnonRequirePassword off

# Pour qu'un message soit affiché à la connexion vous pouvez créer un fichier 'welcome.msg' à la racine (ici ~ftp/pub).
DisplayLogin welcome.msg

# Pour signaler que le client est remonté à la racine vous pouvez créer un fichier '.message' qui s'affichera.
DisplayFirstChdir message

# Permet de cacher tous les fichiers appartenant à "root".
HideUser root
HideGroup root

# Limite la bande passante à 30K/s pour les commandes suivantes.
# Ne limite pas la bande passante pour des fichiers inférieur ou égal à
1000KB.
TransferRate
APPE,STOR,RETR,STOU 30.0:1024000

<Limit LOGIN>
     AllowAll
</Limit>

# Limite les commandes suivantes :
# De renommer, de supprimer des fichiers des répertoires, changer les permissions, d'écrire ...
<Limit RNFR RNTO DELE RMD CHMOD SITE_CHMOD WRITE SITE XCUP XRMD XPWD>
     DenyAll
</Limit>

# Autorise l'upload vers le répertoire uploads uniquement.
<Directory uploads/*>

     <Limit READ>
          DenyAll
     </Limit>

# Autorise le stockage de fichiers et création de répertoires mais pas l'effacement.
     <Limit STOR MKD>
          AllowAll
     </Limit>

</Directory>

</Anonymous>


Configuration de /etc/ftpusers

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody




Sources :
http://www.alcove-labs.org/fr/
http://lea-linux.org/reseau/


Dernière modification : 04/05/05

 

Copyright © 04/02/2004, Arnofear

Contrat Creative Commons Ce document est publié sous licence Creative Commons
Paternité - Pas d'Utilisation Commerciale - Partage des Conditions Initiales à l'Identique :
http://creativecommons.org/licenses/by-nc-sa/3.0/deed.fr