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
Configuration
Edition de la configuration :
Nous allons modifier les options suivantes :
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 :
Redémarrer le tout :
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 :
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 :
Puis mettre en place les tables :
Editez /etc/proftpd/proftpd.conf pour activer le support MySQL en vérifiant les identifiants de connexion :
Redémarrez le service :
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
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
Edition de la configuration :
Code:
vi /etc/proftpd/proftpd.conf
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
Code:
vi /etc/proftpd/modules.conf
Code:
# LoadModule mod_sql_postgres.c
Code:
/etc/init.d/proftpd restart
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
Code:
CREATE DATABASE `proftpd`;
Code:
GRANT SELECT, INSERT, UPDATE, DELETE ON proftpd.* TO 'proftpd'@'localhost' IDENTIFIED BY motdepasse_proftpd; FLUSH PRIVILEGES;
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'
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;
Code:
/etc/init.d/proftpd restart
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