DEDIBOX-NEWS.COM

Le Forum Non Officiel de la DEDIBOX

Vous n'êtes pas identifié.

 

Préambule

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.

Installation

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.

Configuration

$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 !

Les hôtes virtuels

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 :).

Mode SSL/TLS

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.

Astuce Apache

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.

Conclusion

Et voilà !

Darwin.

1) exécute la commande avec les droits du superutilisateur
 
  installation/serveur_ftp_-_proftpd.txt · Dernière modification: 2008/04/19 09:42 82.231.93.116 (cyrilpop)
 

Pied de page des forums

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson