Proftpd

De Dinfadom - Wiki
Aller à : navigation, rechercher
Proftpd.jpg

Difficultés : Etoile.pngEtoile.png


Proftpd

Objectifs :

  • Mettre à dispositions facilement des fichiers
  • Séparation par utilisateurs
  • Clients web – interface simple pour la gestions des fichiers

pré-requis :

  • Serveur sous Debian/Ubuntu (VM ou Physique)
  • Connexion internet et accès externe configuré pour ce serveur.
  • Connexion internet avec un débit suffisamment élevé pour les échanges de fichiers.
  • Un DNS privé (si vous souhaitez qu’une utilisation local) ou public (si vous décidez de le rendre accessible sur internet) vous aurez donc besoin de créer des enregistrements A et CNAME nécessaire à notre configuration

Informations utiles :

Pour exemple :

  • Société : Dinfadom

  • nom d’hôte : ftp.dinfadom.com

  • /srv/ftp_root : seras notre dossier racine pour les données du FTP – plus précisément il accueillera les « home » des utilisateur du FTP.

  • /var/www/html : seras notre dossier racine pour les sites du serveur Apache
  • Utilisation des compte(s) local(aux) pour l'authentification de(s) utilisateur(s) (/etc/passwd et /etc/group)

Installation du Serveur :

Je vous passe les étapes d’installation, des milliers de sites vous guiderons dans ces étapes,
simplement, je vous invite à ne pas alourdir votre serveur d’une interface graphique, elle n’est absolument pas nécessaire pour notre configuration. Par contre je vous invite fortement à installer
 :

  • les outils de base du système

  • Serveur SSH

Si vous êtes pas super à l’aise avec les CLI pour l’éditions des fichiers de configurations (texte) équipez-vous de :


  • WinSCP (Windows)

  • Cyberduck (OSX)


Ces outils utilisent le protocole SSH pour se connecter à votre serveur d’ou l’importance d’installer « Serveur SSH »

Personnalisation du serveur :

Installation des outils courants :

apt-get update && apt-get upgrade -y
apt-get install vim tree mc nmap zip make git

Installation de ProFTPD :

apt-get install proftpd

Choisir « Indépendant » ou « Stand Alone » varie selon les versions. Mise en place du fichier de configuration :

vim /etc/proftpd/proftpd.conf
 ServerName                      « Dinfadom FTP"
 RequireValidShell               off
 DefaultRoot                     ~
 PassivePorts                    30000 30100
 MasqueradeAddress               ftp.dinfadom.com
service proftpd stop && service proftpd start

Installation d’une architecture LAMP – Linux Apache MySQL Php :

apt-get install apache2
apt-get install mysql-server
apt-get install php-apc php5-curl php5-ldap php5 php-pear php5-mysql php5-dev

Virtualhost : Configuration du virtualhost pour y accéder via l’URL : http://ftp.dinfadom.com

 vim /etc/apache2/sites-available/ftp.conf

 <VirtualHost *:80>
        ServerName ftp.dinfadom.com
        ServerAdmin fpicard@dinfadom.com
        DocumentRoot /srv/ftp_root/
        
        <Directory /srv/ftp_root/>
            Options FollowSymLinks Indexes
            AllowOverride Limit Options FileInfo           
            Require all granted
        </Directory>
 
 # Gestion des Logs
        ErrorLog ${APACHE_LOG_DIR}/ftp-error.log
        CustomLog ${APACHE_LOG_DIR}/ftp-access.log combined
 </VirtualHost>

Mise en place de l’interface Web – MonstaFTP :

MonstaFTP est une petite interface Web Open Sources écrite en PHP/AJAX  : il s’agit d’un client FTP "léger" accessible avec votre navigateur internet
Pour plus d’informations : monstaftp.com

Demo :

MONSTA Box Features - sources : http://www.monstahq.com

  • Connect to any remote FTP server from your browser (via client server.)
  • Drop files from your desktop onto browser to upload in real-time
  • Drop folders (in Chrome browser) from your desktop onto browser to upload files.
  • Download files from remote servers to your desktop.
  • Zip up multiple files and download to your desktop.
  • Fetch files from URLs and download directly to remote server.
  • Edit files on-screen and save to remote server.
  • Create folders and files.
  • Cut, copy, paste and rename folders and files.
  • CHMOD folder and files permissions.
  • Use any of 19 available interface languages.
  • Lock user sessions to IP address for added security.
  • Customize the open source PHP/AJAX source code.

Téléchargement et installation de MontaFTP :

 mkdir /var/www/html/monstaftp
 cd /var/www/html/monstaftp
 wget http://www.monstaftp.com/download/monsta_ftp_v1.6.4_install.zip
 unzip monsta_ftp_v1.6.4_install.zip
 rm monsta_ftp_v1.6.4_install.zip
 chown -R www-data:www-data .

Configurations :

La petite nouveauté par rapport aux versions précédentes de MonstaFTP :

  • séparation des configurations du fichier index.php.
  • config.php reprends les principaux paramètres et personnalisations de l’interface.


Éditez le fichier config.php et ajouter les éléments suivants : Vous noterez que Monstaftp utilise par défaut /tmp comme dossier temporaire, sachant que vous allez manipuler des fichiers de taille variable, il est impératif de vérifier que votre /tmp peux contenir plusieurs Go – sinon vos Upload et Download puis l’interface ne vont pas fonctionner convenablement, rien ne vous empêche de changé ce paramètre et de pointer vers le dossier de votre choix

De plus PHP vas vous autoriser par défaut un « upload_max_filesize » de 128 Mo – N’hésitez pas à aller au besoin modifier cette valeur dans le fichier php.ini (par défaut situé sur Debian/Ubuntu dans /etc/php5/apache2/)

vim /var/www/html/monstaftp/config.php
 $ftpHost = "ftp.dinfadom.com";
 $ftpPort = "21";
 $ftpMode = "1";
 $ftpSSL = "0";
 $ftpDir = "";
 $serverTmp = "/tmp"; // Linux
 // $serverTmp = "C:\\WINDOWS\\Temp\\"; // Windows
 $editableExts = "asp,ashx,asmx,aspx,asx,axd,cfm,cgi,css,html,htm,jhtml,js,php,phtml,pl,txt,xhtml";
 $dateFormatUsa = 0;
 $lockOutTime = 5;
 $versionCheck = 1;
 $showAdvOption = 1;
 $showLockSess = 1;
 $showHostInfo = 1;

VirtualHost :

vim /etc/apache2/sites-available/webftp.conf
 <VirtualHost *:80>
        ServerName webftp.dinfadom.com
        ServerAdmin fpicard@dinfadom.com
        DocumentRoot /var/www/html/monstaftp/
        
 <Directory /var/www/html/monstaftp/>
            Options FollowSymLinks Indexes
            AllowOverride Limit Options FileInfo           
 Require all granted
       </Directory>
 
 # Gestion des Logs
        ErrorLog ${APACHE_LOG_DIR}/webftp-error.log
        CustomLog ${APACHE_LOG_DIR}/webftp-access.log combined
 </VirtualHost>

Si vous avez suivi étape par étape ce petit tutoriel, il nous reste plus qu’a activer nos deux « virtualhost » à savoir :

  • ftp.conf

  • webftp.conf

A l’aide de commande suivantes :

a2ensite ftp.conf
a2ensite webftp.conf
service apache2 reload

Pour la maintenance ou si vous souhaitez les désactiver :

a2dissite ftp.conf
a2dissite webftp.conf
service apache2 reload

Maintenant notre serveur est correctement configurer donc, vous devirez pouvoir y accèder depuis votre navigateur via ;


N’oubliez pas de renseigner ces enregistrements dans votre DNS (public ou local)

Creation et suppression des utilisateurs :

Rappelez-vous lors de la configuration de Proftpd nous avons modifié un paramètre important :

RequireValidShell     off

La directive RequireValidShell configuré le serveur permet d’autoriser ou de refuser les connexions à toute personne dépourvu d’un shell /bin/bash – (accès en console au serveur – SSH ou TTY) Dorénavant un utilisateur local (/etc/passwd), ne seras qu’uniquement autorisé à se connecter sur notre serveur que via le protocol FTP, il ne sera pas autorisé à établir une connexion SSH ou TTY en directe sur le serveur.

Lors de la creation de l’utilisateur nous aurons donc à preciser certains paramètres :

  • Son dossier de depart que nous stockerons dans /srv/ftp_root/$username

  • Désactiver son shell en remplaçant /bin/bash par /bin/false

  • Ajouter l’utilisateur au groupe www-data (1003, dans l'exemple, le GID peux varié selon votre système - reportez-vous au fichier /etc/group)

Scripts : Par habitude, j’ai pris le réflexe de stocker mes scripts dans /root/Scripts/, a vous de les stocker ou bon vous sembles Voici un petit script pour la creation de nos utilisateurs :

vim /root/Script/Create_User_FTP.sh
 #!/bin/bash
 echo -n "Saisissez le nom de l'utilisateur FTP :"
 read userftp < /dev/tty
 adduser $userftp --shell /bin/false --gid 1003 --home /srv/ftp_root/$userftp

Voici un petit script pour la suppression de nos utilisateurs :

vim /root/Script/Remove_User_FTP.sh
 #!/bin/bash
 echo -n "Saisissez le nom de l'utilisateur FTP :"
 read userftp < /dev/tty
 userdel -r $userftp

Notre serveur est opérationnel ! Enjoy