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-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 |
#
Connecte les Anonymous vers /home/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/
Copyright © 04/02/2004, Arnofear
![]() |
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 |