RSS

Le serveur FTP, ProFTPD sous Debian 6

21 Déc

Ce tutoriel vous présente comment installer le serveur FTP Proftpd lié à MySQL sous Linux Debian Squeeze ainsi que la gestion de vos utilisateurs dans une table MySQL avec encryption des mots de passe en MD5

Lorsque vous avez beaucoup d’utilisateurs devant envoyer des données sur vos serveurs via FTP, il n’est pas forcément nécessaire de créer un compte utilisateur local à chacun. Il peut être alors intéressant d’utiliser des utilisateurs stockés dans une base de données MySQL à l’aide du module MySQL de ProFTPd.

Cette installation vous permettra de gérer vos utilisateurs dans une table mysql et d’encrypter les mots de passe en MD5.

Les droits des fichiers uploadés seront : utilisateur ftp et groupe www-data
Il est donc nécessaire qu’apache2 par exemple soit déjà installé.

L’exemple suivant utilisera :
La base : proftpd
La table : utilisateur
L’utilisateur mysql : userftp
Avec comme mot de passe : passftp

Nous allons donc commencer par installer Proftpd, rien de plus simple :

apt-get update
apt-get install proftpdLecture des listes de paquets… Fait
Construction de l’arbre des dépendances
Lecture des informations d’état… Fait
Note: sélection de « proftpd-basic » au lieu de « proftpd »
Les paquets supplémentaires suivants seront installé :
libfile-copy-recursive-perl proftpd-basic update-inetd
Paquets suggérés :
proftpd-doc proftpd-mod-mysql proftpd-mod-pgsql proftpd-mod-ldap proftpd-mod-odbc proftpd-mod-sqlite openbsd-inetd inet-superserver
Les NOUVEAUX paquets suivants seront installés :
libfile-copy-recursive-perl proftpd-basic update-inetd
0 mis à jour, 3 nouvellement installés, 0 à enlever et 13 non mis à jour.
Inst libfile-copy-recursive-perl (0.38-1 Debian:6.0.6/stable [all])
Inst update-inetd (4.38+nmu1+squeeze1 Debian:6.0.6/stable [all])
Inst proftpd-basic (1.3.3a-6squeeze4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64])
Conf libfile-copy-recursive-perl (0.38-1 Debian:6.0.6/stable [all])
Conf update-inetd (4.38+nmu1+squeeze1 Debian:6.0.6/stable [all])
Conf proftpd-basic (1.3.3a-6squeeze4 Debian:6.0.6/stable, Debian-Security:6.0/stable [amd64])

Installer le module proftpd-mod-mysql :

apt-get install proftpd-mod-mysql

Activer la gestion des modules SQL :

nano /etc/proftpd/modules.conf

Décommenter les lignes suivantes :

LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
LoadModule mod_sql_passwd.c

Ajouter le paramétrage de la gestion des utilisateurs par mysql ainsi que l’encryption MD5 :

nano /etc/proftpd/proftpd.conf

Ajouter la section suivante :

<Global> ServerIdent     Off IdentLookups    Off# Set the user and group that the server normally runs at.
User            ftp
Group           www-data

CreateHome      on 711
SQLAuthTypes    MD5
SQLPasswordEngine on
SQLPasswordEncoding hex
SQLEngine         on
SQLBackend      mysql
SQLAuthenticate users
SQLConnectInfo  proftpd@localhost userftp passftp
SQLUserInfo     utilisateur nom mot_de_passe uid gid repertoire shell
SQLDefaultUID   XXX
SQLDefaultGID   XX
SQLMinID        100
AllowOverWrite  on
AllowForeignAddress     on
ListOptions « -a »
<Directory ~>
AllowOverWrite on
</Directory>

DefaultRoot ~

SQLLogFile /var/log/proftpd/mysql.log
ExtendedLog /var/log/proftpd/auth.log AUTH auth

</Global>

Remplacer XX par le GID du groupe www-data :

cat /etc/group | grep www-data
www-data:x:33:

Donc XX = 33

Remplacer XXX par le UID de l’utilisateur ftp :

cat /etc/passwd | grep ftp
ftp:x:106:65534::/home/ftp:/bin/false

Donc XXX = 106

Se connecter à MySQL et créer la base de données et la table qui va bien :

mysql -u root -proot_password

CREATE DATABASE proftpd ;

USE proftpd;

CREATE TABLE `utilisateur` (
`nom` varchar(255) NOT NULL default  »,
`mot_de_passe` varchar(255) NOT NULL default  »,
`uid` int(11) default ‘101’,
`gid` int(11) default ‘65534’,
`repertoire` varchar(255) default NULL,
`shell` varchar(255) default ‘/bin/sh’,
UNIQUE KEY `nom` (`nom`),
KEY `i_nom` (`nom`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Insérer un nouvel utilisateur :

INSERT INTO utilisateur VALUES (‘aitibourek’, md5(‘password_aitibourek’), ‘106’, ‘33’, ‘/home/www/aitibourek.org’, ‘/bin/sh’) ;

On créé le dossier correspondant à l’utilisateur FTP avec les bons droits :

mkdir /home/www/aitibourek.org
chown ftp:www-data /home/www/aitibourek.org

Enfin on redémarre le service Proftpd pour prendre en compte les changements :

/etc/init.d/proftpd restart

L’encryption MD5 fonctionne évidemment aussi bien avec la fonction MD5() de MySQL qu’avec la fonction MD5() de PHP

Pour aller plus loin : http://www.proftpd.org/docs/contrib/mod_sql_passwd.html

——————————————————————————————————-

Le serveur FTP, ProFTPD

Nous allons installer et configurer un serveur FTP, j’ai retenu ProFTPD qui est très simple et rapide à configurer.

On l’installe: Code :

apt-get install proftpd

Aptitude vous demandera comment installer ProFTPD :
Choisissez « standalone » pour démarrer ProFTPD indépendamment.

Configuration

Ouvrez proftpd.conf : nano /etc/proftpd/proftpd.conf

1
2
3
4
5
6
7
8
9
10
11
# Le nom de votre serveur FTP (sera affiché à la connexion) :
ServerName "Le serveur FTP de monsite.fr"

# Vérifiez que ServerType est bien "standalone" :
ServerType standalone

# Dé-commentez cette ligne pour que les utilisateurs restent dans leurs dossier:
DefaultRoot ~

# Vous pouvez changer le port pour des raisons de sécurité (défaut : 21)
Port 2121

Vous pouvez donc redémarrer ProFTPD :

/etc/init.d/proftpd restart

Pour vous connecter, utilisez le même compte qu’avec SSH.

Nous pouvons donc créer des comptes utilisateurs facilement :

adduser <nom>

# Exemple pour monsite.fr :
adduser monsitefr --home /var/www/monsite.fr/
# Quand vous vous connecterez, vous serez dans /var/www/monsite.fr/

# Pour savoir plus d'arguments
man adduser
Publicités
 
Poster un commentaire

Publié par le décembre 21, 2012 dans Admin Linux

 

Étiquettes : ,

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :