Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Ce tutorial a été écrit par un débutant d’où de possibles incohérences ou barbarismes aux yeux des initiés.
Protfpd est un serveur FTP sous license GPL dont la syntaxe de configuration se rapproche fortement de celle d’Apache. Il gère les utilisateurs multiples et les serveurs virtuels.
Sous une session SSH :
$sudo apt-get update $sudo apt-get install proftpd
Ceci installe donc la dernière version de proftpd qu’il reste à configurer.
$sudo vim /etc/proftpd/proftpd.conf
Le fichier de configuration apparaît, il devrait être déjà bien rempli. Les lignes auxquelles porter attention sont commentées. Appuyez sur “i” pour passer en mode de modifications puis sur Echap lorsque vous avez terminé.
ServerName "dedibox"
ServerType standalone # Mode de fonctionnement du serveur
ShowSymlinks on
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
MaxInstances 30
Port 21 # Port sur lequel le serveur sera accessible. Je conseille de laisser 21 pour un
# serveur de fichier standard et de créer un hôte virtuel sur un autre port pour
# le FTP d'administration (fichiers sensibles)
UseReverseDNS off # Pas de résolution DNS, ca accélère un peu ;)
LogFormat traff "%b %u"
DefaultRoot ~ # Dossier racine : celui dans lequel l'utilisateur arrivera et sera chrooté.
# C'est le paramètre le plus important, et il faut prendre garde de ne pas
# permettre un accès total dangereux ! (ex. / )
# Ici chaque utilisateur atterri dans son dossier personnel (/home/utilisateur)
<Global>
DeferWelcome off # On cache le nom du serveur à la connexion pour plus de sécurité
TimeoutNoTransfer 600 # Temps maximum en seconde sans transfert avant la déconnexion par le serveur
TimeoutStalled 600
TimeoutIdle 1200 # Temps maximum en seconde d'inactivité avant la déconnexion par le serveur
DisplayLogin /etc/ftp_wel.msg # Fichier texte contenant le message à afficher au client lors de la connexion.
# Dans notre cas il faudra le créer dans /etc/ftp_wel.msg
DisplayFirstChdir /etc/ftp_chd.msg # Fichier texte contenant le message affiché lorsque le client change de
# répertoire
DenyFilter *.*/
PassivePorts 50000 60000 # Plage de ports que le serveur pourra utiliser pour les connexions passives.
User nobody
Group nogroup
Umask 022 022
AllowStoreRestart on # On autorise la reprise des uploads
AllowRetrieveRestart on # et des téléchargements
</global>
Include /etc/ftp-virtualhost.conf # On inclut les fichiers d'hôtes virtuels qui nous permettrons d'avoir plusieurs
FTP
On quitte vim en sauvegardant les modifications :
:wq
Et voilà pour la partie générale. Ainsi chaque utilisateur peut se connecter avec son login/mot de passe et atterri dans son dossier personnel. Reste à créer les hôtes virtuels pour l’administration et l’upload de sites !
Vous aurez surement dans la dernière ligne de mon fichier de configuration, je fais appel à un fichier d’hôtes virtuels pour alléger la configuration. Celui-ci n’existe pas à l’installation, nous allons le créer et le modifier :
$ sudo vim /etc/ftp-virtualhost.conf
Le fichier est automatiquement crée. N’oubliez pas le sudo1) si vous n’êtes pas en root !
On va créer un FTP d’administration et laisser un accès anonyme.
<VirtualHost votreip>
ServerName "FTP Admin" # Nom du FTP pour l'administrateur
Port 2121 # Port sur lequel ce serveur sera accessible différent de celui précisé
auparavant
PassivePorts 50000 60000
TransferLog /var/log/proftpd/proftpd-admin.log # On logue les actions
ListOptions -A # On affiche les fichiers cachés (on est admin tout de même !)
MaxLoginAttempts 2 # Pas trop d'erreurs de login, on évite les attaques Brute Force
RequireValidShell on
<Limit LOGIN>
Order Allow,Deny
AllowUser darwin # On accepte exclusivement un utilisateur à se connecter.
Deny from all # les autres restent à la porte
</Limit>
DefaultRoot ~ # Ici c'est chacun son credo. Vous pouvez soit laisser l'accès libre à la racine
(ce que je n'aime pas particulierement), soit au dossier contenant votre site
web (/var/www/) ou autre ...
<Directory /> # On limite les commandes que peut réaliser l'utilisateur dans le dossier /
(s'il en a l'accès)
HideNoAccess on
<Limit CWD DIRS PASV PORTS>
AllowAll
</Limit>
<Limit ALL>
DenyAll
</Limit>
</Directory>
<Directory /var/www>
<Limit ALL>
AllowAll
</Limit>
</Directory>
<Directory ~>
<Limit ALL>
AllowAll
</Limit>
</Directory>
</VirtualHost>
<VirtualHost votreip> # FTP anonyme
ServerName "Dedibox public"
Port 21
Umask 027
TransferLog /var/log/proftpd/proftpd-anonymous.log
IdentLookups off
<Limit LOGIN>
DenyAll
</Limit>
MaxClients 2 # Nombre de connexions anonymes simultanées
AccessGrantMsg "Bienvenue, serveur public." # Message au login.
<Anonymous ~ftp> # Répertoire anonyme : /home/ftp/pub
UserAlias anonymous ftp
RequireValidShell off
AnonRequirePassword off
HideUser root
HideGroup root
TransferRate RETR 100.0:1024000 # Option très pratique pour limiter la bande passante à 100 ko/sec
# pour les fichier de plus de 1 mo.
<Limit LOGIN>
AllowAll
</Limit>
<Limit RNFR STOR APPE STOU RNTO DELE RMD CHMOD SITE_CHMOD WRITE SITE XCUP XRMD XPWD> # On empêche l'écriture et autres...
DenyAll
</Limit>
</Anonymous>
</VirtualHost>
On quitte vim :
:wq
et on redémarre proftpd
$ sudo /etc/init.d/proftpd restart
Le tour est joué, sur le port 21 vous pouvez vous connecter en anonyme et avec les logins d’un utilisateur, vous êtes limités au dossier personnel et la bande passante est préservée.
Sur le port 2121, seul un utilisateur peut se connecter et accéder aux dossiers sensibles (que vous avea paramétrées). Il peut modifier les fichiers
.
Pour faire fonctionner proftpd en mode sécurisé soit en utilisant les protocoles SSL/TLS. Voici la marche à suivre.
On génére tout d’abord le certificat ainsi que la clé.
openssl req -new -x509 -nodes -days 365 -out /etc/ssl/certs/proftpd.cert.pem -keyout /etc/ssl/certs/proftpd.key.pem
Là , vous aurez à répondre à quelques questions (en autres, le pays, l’adresse e-mail de contact).
Ensuite on édite le fichier proftpd.conf
$ sudo vim /etc/proftpd.conf
On va ajouter les lignes suivantes à notre présente configuration.
# Support TLS TLSEngine on # On = mode sécurisé uniquement | Off = mode sécurisé et non sécurisé (OFF) TLSRequired on # On log.. (créé le sous-répertoire au besoin) TLSLog /var/log/proftpd/proftpd.tls_log # Protocole TLSProtocol SSLv23 TLSOptions NoCertRequest # Certificat et clef TLSRSACertificateFile /etc/ssl/certs/proftpd.cert.pem TLSRSACertificateKeyFile /etc/ssl/certs/proftpd.key.pem TLSVerifyClient off
On quitte vim :
:wq
Puis on redémarre proftpd
$ sudo /etc/init.d/proftpd restart
A partir de cet instant, votre serveur ftp est disponible en connexion sécurisée.
Une petite astuce pour permettre d’accéder à votre répertoire www facilement : il suffit de le monter dans un dossier utilisateur. Ainsi lorsque je me connecte avec l’utilisateur darwin sur le port 21 j’arrive dans mon dossier personnel dans lequel se trouve le dossier www ! J’ai donc mes fichiers persos et la possibilité de modifier mon site.
- Créer un dossier www dans le répertoire de l’utilisateur :
$ cd /home/utilisateur $ mkdir www
- Créer un script montant le dossier www d’apache dans le www de l’utilisateur :
$ cd /etc/init.d $ sudo vim mount_www
Ajoutez:
#!/bin/bash echo Montage de www sur /home/votreutilisateur/www mount --bind /var/www /home/votreutilisateur/www
Quittez vim en enregistrant :
:wq
- Ajoutez le script au démarrage de la machine :
$ sudo update-rc.d mount_www defaults $ sudo chmod +x mount_www
- On exécute le script ou on redémarre (haha …)
$ sudo ./mount_www Montage de www sur /home/votreutilisateur/www
Connectez vous sur votre serveur ftp avec l’utilisateur, le dossier www contient bien les sites.
Et voilà !
Darwin.