Protocole d'installati d'un serveur FTP sur UBUNTU 12.04 prérequis: utiliser un compte administrateur savoir utiliser l'éditeur de texte en mode terminal "VI" CAHIER DES CHARGES: (Pour comprendre se que l' fait!!!) pas de compte «anymous» les utilisateurs "toto" et "tata" t des droits d'écriture/lecture l'utilisateur "titi" a seulement des droits de lecture pas de possibilité pour les utilisateurs de voir le ctenu des autres NB: lire chaque étape en entier une par une avant de taper sur le clavier ça évite de faire des bêtises ;-) il y à 12 étapes ; les commandes st encadrées, les commentaires en italiques. La méthode utilisée n'est pas académique : On modifie le compte «anymous» pour créer les utilisateurs! 0) lire le préambule!!! Si vous ne l'avez pas déjà fait, bien-entendu (cela va vous aider à comprendre se que vous faîtes) 1) installati du service proftpd sudo apt-get install proftpd installati des paquets du service (menu à l écran : opti => indépendant =>OK) touche «tabulati» pour choisir ls /usr/sbin/proftpd verificati que l'installati est effectuée (OK s'il y a des fichiers/dossiers affichés après la commande) 2) créati des répertoires des utilisateurs du FTP sudo mkdir -p /home/ftp répertoire principal du service FTP sudo mkdir -p /home/ftp/toto répertoire racine de l'utilisateur toto sudo mkdir -p /home/ftp/tata répertoire racine de l'utilisateur tata sudo mkdir -p /home/ftp/titi répertoire racine de l'utilisateur titi
3) copie du ctenu du répértoire proftpd... dans des dossiers crées pour tester le serveur une fois installé cf point n 12) (optinel mais bien pratique, pour les 4 dernières commandes) sudo mkdir -p /home/ftp/toto/toto sudo mkdir -p /home/ftp/tatat/tata sudo mkdir -p /home/ftp/titi/titi sudo cp -r /etc/proftpd/* /home/ftp sudo cp -r /etc/proftpd/* /home/ftp/toto/toto sudo cp -r /etc/proftpd/* /home/ftp/tata/tata sudo cp -r /etc/proftpd/* /home/ftp/titi/titi 4) créati d'un faux terminal... dans ubuntu pour empêcher les utilisateurs du service FTP à utiliser un vrai terminal... pour y lancer des commandes permettant la prise en main du système. Verifier si la ligne "/bin/false" existe déja dans le fichier /etc/shellgrâce à la commande : sudo cat /etc/shells Si la ligne est présente, passez à l étape 5) Sin faire les lignes de commande suivantes : sudo -s On demande à devenir «SuperUtilisateur» echo "/bin/false" >> /etc/shells /!\ bien mettre ">>" et n ">" sin le système sera HS! Car ">>" ajoute l'expressi à la suite du ctenu du fichier et ">" remplace le ctenu du fichier par l'expressi!!! exit On quitte le statut de «SuperUtilisateur» NB : Autre faç ; On peut rajouter la ligne "/bin/false" avec VI en faisant : sudo vi /etc/shells 5) a. créati du groupe d'utilisateurs du service FTP et de l'utilisateur "service FTP" b.créati de l'utilisateur "service FTP" pour le système c.modificati d appartenance de l'utilisateur "uftp" au groupe "" sudo groupadd sudo useradd -r uftp -d /home/ftp -s /bin/false sudo usermod -g uftp NB :L'utilisateur «uftp» est un utilisateur système (n physique) qui permettra de lancer le service FTP sous s nom. Et tout utilisateurs du service appartiendra au groupe
6) créati des comptes utilisateurs du service FTP sudo useradd -g -d /home/ftp/toto -s /bin/false toto On ajoute l'utilisateur toto avec un faux terminal, ayant pour répertoire de travail : «/home/ftp/toto» et appartenant au groupe sudo passwd toto On lui octroie un mot de passe, par exemple : azerty (à renseigner puis à cfirmer) sudo useradd -g -d /home/ftp/tata -s /bin/false tata On ajoute l'utilisateur tata avec un faux terminal, ayant pour répertoire de travail : «/home/ftp/tata» et appartenant au groupe sudo passwd tata On lui octroie un mot de passe, par exemple : qsdfgh (à renseigner puis à cfirmer) sudo useradd -g -d /home/ftp/titi -s /bin/false titi On ajoute l'utilisateur titi avec un faux terminal, ayant pour répertoire de travail : «/home/ftp/titi» et appartenant au groupe sudo passwd titi On lui octroie un mot de passe, par exemple : wxcvbn (à renseigner puis à cfirmer) 7) Changement d'appartenance du dossier «ftp» (root par défaut) & attributi des droits de lecture/écriture du dossier et ses sous-dossiers au groupe "" sudo chgrp /home/ftp -R sudo chmod 775 /home/ftp -R 8) éditi de la "Black Liste" des utilisateurs du service FTP sudo -s On demande à devenir «SuperUtilisateur» cat /etc/passwd cut -d":" -f1 > /etc/ftpusers Explicati de la commande : Prendre le ctenu du fichier-utilisateurs filtré par le 1er champ avant ":" c'est-à-dire le nom des utilisateurs et mettre le résultat dans le fichier de "Black Liste" nommé "ftpuser" dans le dossier «/etc/» vi /etc/ftpusers éditi du fichier "ftpusers" /!\ effacer les lignes des utilisateurs toto, tata & titi!!! exit On quitte le statut de «SuperUtilisateur»
9) copie de sauvegarde du fichier original de cfigurati sudo mv /etc/proftpd/proftpd.cf /etc/proftpd/proftpd.original.cf Permet de renommer le fichier 10) créati/éditi du fichier de cfigurati du service FTP sudo vi /etc/proftpd/proftpd.cf en copiant le ctenu ci-dessous dedans. (Tout le texte entre les deux lignes de ) (<proftpd.cf>)début du ctenu /etc/proftpd/proftpd.cf -- This is a basic ProFTPD cfigurati file. To really apply changes, reload proftpd after modificatis, if it runs in daem mode. It is not required in inetd/xinetd mode. modif by Estéban-20121127 Includes DSO modules Include /etc/proftpd/modules.cf Set to disable IPv6 support which is annoying IPv4 ly boxes. UseIPv6 If set you can experience a lger cnecti delay in many cases. IdentLookups ServerName "serveur FTP" ServerType standale DeferWelcome MultilineRFC2228 DefaultServer ShowSymlinks TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin DisplayChdir ListOptis welcome.msg.message true "-l" DenyFilter \*.*/ Use this to jail all users in their homes DefaultRoot ~ Users require a valid shell listed in /etc/shells to login. Use this directive to release that cstrain.
RequireValidShell Port 21 is the standard FTP port. Port 21 In some cases you have to specify passive ports range to by-pass firewall limitatis. Ephemeral ports can be used for that, but feel free to use a more narrow range. PassivePorts 49152 65534 If your host was NATted, this opti is useful in order to allow passive tranfers to work. You have to use your public address and opening the passive ports used your firewall as well. MasqueradeAddress 1.2.3.4 This is useful for masquerading address with dynamic IPs: refresh any cfigured MasqueradeAddress directives every 8 hours <IfModule mod_dynmasq.c> DynMasqRefresh 28800 To prevent DoS attacks, set the maximum number of child processes to 30. If you need to allow more than 30 ccurrent cnectis at ce, simply increase this value. Note that this ONLY works in standale 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 Set the user and group that the server normally runs at. User uftp Group Umask 022 is a good standard umask to prevent new files and dirs (secd parm) from being group and world writable. Umask 022 022 Normally, we want files to be overwriteable. AllowOverwrite Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords: PersistentPasswd This is required to use both PAM-based authenticati and local passwords AuthOrder mod_auth_pam.c* mod_auth_unix.c Be warned: use of this directive impacts CPU average load! Uncomment this if you like to see progress and transfer rate with ftpwho in downloads. That is not needed for uploads rates. UseSendFile TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log
Logging to /var/log/lastlog is enabled but set to by default UseLastlog In order to keep log file dates csistent after chroot, use timeze info from /etc/localtime. If this is not set, and proftpd is cfigured to chroot (e.g. DefaultRoot or <Anymous>), it will use the n-daylight savings timeze regardless of whether DST is in effect. SetEnv TZ :/etc/localtime <IfModule mod_quotatab.c> QuotaEngine <IfModule mod_ratio.c> Ratios Delay engine reduces impact of the so-called Timing Attack described in http://www.securityfocus.com/bid/11430/discuss It is by default. <IfModule mod_delay.c> DelayEngine <IfModule mod_ctrls.c> CtrolsEngine CtrolsMaxClients 2 CtrolsLog /var/log/proftpd/ctrols.log CtrolsInterval 5 CtrolsSocket /var/run/proftpd/proftpd.sock <IfModule mod_ctrls_admin.c> AdminCtrolsEngine <Limit LOGIN> AllowUser toto AllowUser tata AllowUser titi DenyALL </Limit> BlackList UseFtpUsers patch for mozilla compatibility <IfModule mod_facts.c> FactsAdvertise
Alternative authenticati frameworks Include /etc/proftpd/ldap.cf Include /etc/proftpd/sql.cf This is used for FTPS cnectis Include /etc/proftpd/tls.cf Useful to keep VirtualHost/VirtualRoot directives separated Include /etc/proftpd/virtuals.cf user toto <Anymous /home/ftp/toto> User Group UserAlias AnRequirePassword DirFakeUser DirFakeGroup RequireValidShell toto toto Limit the maximum number of toto logins MaxClients 10 "The server is full" 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 toto chroot <Directory /home/ftp/toto/> Umask 022 is a good standard umask to prevent new files and dirs Umask 022 022 <Limit WRITE> AllowAll </Limit> </Directory> </Anymous> user tata <Anymous /home/ftp/tata> User Group tata
UserAlias tata AnRequirePassword DirFakeUser DirFakeGroup RequireValidShell Limit the maximum number of tata logins MaxClients 10 "The server is fullr" 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 tata chroot <Directory /home/ftp/tata/> Umask 022 is a good standard umask to prevent new files and dirs Umask 022 022 <Limit WRITE> AllowAll </Limit> </Directory> </Anymous> user titi <Anymous /home/ftp/titi> User Group UserAlias AnRequirePassword DirFakeUser DirFakeGroup titi titi RequireValidShell Limit the maximum number of titi logins MaxClients 10 "The server is full" 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 tata chroot <Directory /home/ftp/titi/> Umask 022 is a good standard umask to prevent new files and dirs Umask 022 022 <Limit WRITE> DenyAll </Limit>
</Directory> </Anymous> Include other custom cfigurati files Include /etc/proftpd/cf.d/ (</proftpd.cf>)fin du ctenu 11) redemarage du service proftpd pour une prise en compte des nouveaux paramètres sudo service proftpd restart 12) Test du serveur : Trois méthodes : FIN A) cnexi dans un terminal avec la commande «ftp» B) On utilise un programme client «ftp» comme «FILEZILLA» C) utiliser un navigateur internet (seule méthode détaillée) avec l'url suivante: " ftp://127.0.0.1 " si vous êtes sur votre machine locale ou avec l'adresse IP de votre nouveau serveur distant!!! se cnecter avec : user: toto password: azerty par exemple pour accéder à votre espace FTP NB : Si vous êtes sur Windows 7 avec internet explorer 9 après avoir renseigné l'url faire la touche «Alt» => menu affichage, et demander une ouverture du service FTP dans une fenêtre d'explorateur de fichier, cela nécessite une nouvelle cnexi. Puis vous pouvez faire du «glisser/déposer» entre votre ordinateur et le serveur ftp. BRAVO!!!