Annonce

Réduire
Aucune annonce.

[Serveur dédié] 4 - Proftpd : le serveur FTP

Réduire
Ceci est une discussion importante.
X
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel [Serveur dédié] 4 - Proftpd : le serveur FTP

    4 - Serveur FTP avec Proftpd


    4.1 Proftpd

    Serveur FTP

    ProFTPd est un serveur FTP libre très puissant, bien documenté avec une configuration simple d'accès, possédant une syntaxe proche de celle d'Apache.


    Installation

    Code:
    apt-get install proftpd
    Configuration

    Edition de la configuration :

    Code:
    vi /etc/proftpd/proftpd.conf
    Nous allons modifier les options suivantes :

    Code:
    UseIPv6 off
        Ne pas utiliser IPv6 si ce n'est pas nécessaire
    DefaultRoot ~
        Le répertoire de destination par défaut des utilisateurs est leur propre home directory.
    IdentLookups off
        Désactive l'identification distante
    RequireValidShell off
        Permet la connexion des utilisateurs qui ne possèdent pas d'accès shell (cas de ce tutoriel)
    IdentLookups off
        Désactive l'identification distante
    ServerIdent on "FTP Server ready."
        Message minimaliste affiché à la connexion
    ShowSymlinks off
        Ne pas afficher les liens symboliques
    AllowStoreRestart on
        Autoriser la reprise d'un upload de fichier (resuming)
    AllowRetrieveRestart on
        Autoriser la reprise d'un téléchargement de fichier
    Si vous ne parvenez pas à vous connecter, une parade consiste à désactiver le module SQL postgres, en commentant avec # la ligne correspondante dans le fichier /etc/proftpd/modules.conf :

    Code:
    vi /etc/proftpd/modules.conf
    Code:
    # LoadModule mod_sql_postgres.c
    Redémarrer le tout :

    Code:
    /etc/init.d/proftpd restart
    Proftpd-mysql

    Par défaut, les comptes FTP sont ceux des utilisateurs de la machine. Dans le cas d'un serveur d'hébergement, il peut être intéressant de gérer les utilisateurs et groupes indépendamment. Le module proftpd-mysql permet de stocker ces informations dynamiquement dans une base de données MySQL.

    Attention Si vous utilisez un panel d'administration (tel que DTC), cette étape est facultative, car elle sera gérée par le panel lui-même (le tutoriel prend donc fin ici).

    Proftpd-mysql s'installe grâce à APT et au paquet du même nom :

    Code:
    apt-get install proftpd-mysql
    Il faut ensuite créer la structure de la base de données. Connectez-vous en root pour définir les droits d'accès :

    Code:
    CREATE DATABASE `proftpd`;
    Code:
    GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost'
    IDENTIFIED BY motdepasse_proftpd;
    FLUSH PRIVILEGES;
    Puis mettre en place les tables :

    Code:
    USE proftpd;
    Code:
    CREATE TABLE `ftpgroup` (
    `groupname` varchar(16) NOT NULL default '',
    `gid` smallint(6) NOT NULL default '5500',
    `members` varchar(16) NOT NULL default '',
    KEY `groupname` (`groupname`)
    ) TYPE=MyISAM COMMENT='Table des groupes ProFTPD';
    
    CREATE TABLE `ftpquotalimits` (
    `name` varchar(30) default NULL,
    `quota_type` enum('user','group','class','all') NOT NULL default 'user',
    `par_session` enum('false','true') NOT NULL default 'false',
    `limit_type` enum('soft','hard') NOT NULL default 'soft',
    `bytes_up_limit` float NOT NULL default '0',
    `bytes_down_limit` float NOT NULL default '0',
    `bytes_transfer_limit` float NOT NULL default '0',
    `files_up_limit` int(10) unsigned NOT NULL default '0',
    `files_down_limit` int(10) unsigned NOT NULL default '0',
    `files_transfer_limit` int(10) unsigned NOT NULL default '0'
    ) TYPE=MyISAM COMMENT='Table des quotas ProFTPD';
    
    CREATE TABLE `ftpquotatotal` (
    `name` varchar(30) NOT NULL default '',
    `quota_type` enum('user','group','class','all') NOT NULL default 'user',
    `bytes_up_total` float NOT NULL default '0',
    `bytes_down_total` float NOT NULL default '0',
    `bytes_transfer_total` float NOT NULL default '0',
    `files_up_total` int(10) unsigned NOT NULL default '0',
    `files_down_total` int(10) unsigned NOT NULL default '0',
    `files_transfer_total` int(10) unsigned NOT NULL default '0'
    ) TYPE=MyISAM COMMENT='Table des compteurs des quotas ProFTPD';
    
    CREATE TABLE `ftpuser` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `userid` varchar(32) NOT NULL default '',
    `passwd` varchar(32) NOT NULL default '',
    `uid` smallint(6) NOT NULL default '5500',
    `gid` smallint(6) NOT NULL default '5500',
    `homedir` varchar(255) NOT NULL default '',
    `shell` varchar(16) NOT NULL default '/bin/false',
    `count` int(11) NOT NULL default '0',
    `accessed` datetime NOT NULL default '0000-00-00 00:00:00',
    `modified` datetime NOT NULL default '0000-00-00 00:00:00',
    `LoginAllowed` enum('true','false') NOT NULL default 'true',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM COMMENT='Table des utlisateurs ProFTPD'
    Editez /etc/proftpd/proftpd.conf pour activer le support MySQL en vérifiant les identifiants de connexion :

    Code:
    # Cryptage
    SQLAuthTypes Crypt
    SQLAuthenticate users* groups*
    
    # Identifiants de connexion
    SQLConnectInfo [email protected] proftpd motdepasse_proftpd
    
    # Colonnes utilisées pour les utilisateurs
    SQLUserInfo ftpuser userid passwd uid gid homedir shell
    SQLUserWhereClause "LoginAllowed = 'true'"
    
    # Colonnes utilisées pour les groupes
    SQLGroupInfo ftpgroup groupname gid members
    
    # Créer le répertoire home par défaut
    SQLHomedirOnDemand on
    
    # Mise à jour des compteurs de connexion
    SQLLog PASS updatecount
    SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
    
    # Mise à jour des compteurs de trafic
    SQLLog STOR,DELE modified
    SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
    
    # Quota
    QuotaEngine on
    QuotaDirectoryTally on
    QuotaDisplayUnits Mb
    QuotaShowQuotas on
    
    # Requêtes SQL relatives aux quotas
    
    SQLNamedQuery get-quota-limit SELECT "name, quota_type, par_session, limit_type, bytes_up_limit, bytes_down_limit, bytes_transfer_limit, files_up_limit, files_down_limit, files_transfer_limit FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
    
    SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_up_total, bytes_down_total, bytes_transfer_total, files_up_total, files_down_total, files_transfer_total FROM ftpquotatotal WHERE name = '%{0}' AND quota_type = '%{1}'"
    
    SQLNamedQuery update-quota-tally UPDATE "bytes_up_total = bytes_up_total + %{0}, bytes_down_total = bytes_down_total + %{1}, bytes_transfer_total = bytes_transfer_total + %{2}, files_up_total = files_up_total + %{3}, files_down_total = files_down_total + %{4}, files_transfer_total = files_transfer_total + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatotal
    
    SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatotal
    
    QuotaLimitTable sql:/get-quota-limit
    QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally;
    Redémarrez le service :

    Code:
    /etc/init.d/proftpd restart
    La gestion des utilisateurs dans ces tables étant relativement explicite d'après leur structure, celle-ci ne sera pas développée pour le moment. Reportez-vous à la Documentation Ubuntu Francophone si nécessaire.

    Ajoutez un enregistrement dans la table ftpuser pour chaque utilisateur, le mot de passe étant encrypté par la fonction mysql ENCRYPT. Ajoutez un enregistrement dans la table ftpgroup pour chaque groupe. Le champ members contenant les logins (en texte) des membres de ce groupe.

    Source: alsacrea


    Suivre Hackademics: Twitter, Google+, Facebook.
Chargement...
X