Bonjour à tous,
Je vous propose la mise en place d’un serveur ftp.
Avec ce serveur, chacun a un espace personel et un partagé
commençons par installer vsftpd et openssl:
[code]$ su
apt-get install vsftpd openssl[/code]
le serveur ftp sécurisé a besoin d’un certificat. On le crée avec les commandes suivantes:
[code]# openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem
mv vsftpd.pem /etc/ssl/certs
chown root:root /etc/ssl/certs/vsftpd.pem
chmod 600 /etc/ssl/certs/vsftpd.pem[/code]
nous allons produire le fichier de configuration. Je me suis aidé de la page manuel vsftpd.conf. J’y ai omit les options qui ont une valeur par défaut qui me convient.
pour éditer ce fichier:
[code]$ su
sudo gedit /etc/vsftpd.conf[/code]
par exemple:
[code]async_abor_enable=YES
debug_ssl=YES
delete_failed_uploads=YES
dirlist_enable=YES
download_enable=YES
local_enable=YES
listen=YES
require_ssl_reuse=NO
ssl_enable=YES
strict_ssl_read_eof=YES
userlist_deny=NO
userlist_file=/etc/vsftpd.userlist
userlist_enable=YES
validate_cert=NO
write_enable=YES
local_umask=0111
connect_from_port_20=YES
listen_port=21
chroot_local_user=YES
chroot_list_file=/etc/vsftpd.chroot_list
ssl_ciphers=HIGH
require_ssl_reuse=NO
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
xferlog_enable=YES
xferlog_std_format=YES
ftpd_banner="Bienvenu chez ******"
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
secure_chroot_dir=/var/run/vsftpd/empty
pasv_address=
pasv_min_port=40000
pasv_max_port=40010
pasv_promiscuous=YES
pasv_enable=YES
[/code]
les option “chroot_local_user=YES” et “chroot_list_file=/etc/vsftpd.chroot_list” indiquent le fichier /etc/vsftpd.chroot_list où l’on y trouve les utilisateur locaux qui ne seront pas enfermé dans leur dossier personel. Avant de créer les utilisateurs qui pourrons se logger, nous allons créer le fichier /etc/vsftpd.chroot_list avec la commande cut (si on le fait après, il y aura des utilisateurs qui pourrons sortir de leur dossier personel):
pour faire les utilisateurs, j’ai écris ce script qui ajoute un utilisateur au système. Pour en créer plusieus, utilisez une boucle for:
ce script attribue aux utilisateur le shell /bin/false. Il faut donc l’ajouter dans le fichier /etc/shells (mettez bien >> et non pas > sinon le fichier sera effacé):
nous allons créer un utilisateur pour avoir un dossier à se partager entre les utilisateurs du serveur:
[code]# adduser commun
usermod -s /bin/false commun
chmod -R 755 /home/commun
mkdir /home/commun/pub
chmod 777 /home/commun/pub
chown commun:commun -R /home/commun
[/code]
voici le script:
#!/bin/bash
if [ $USER = "root" ]; then
if [ "$1" != "" ]; then
adduser "$1"
usermod -s /bin/false "$1"
chown root:root /home/"$1"
mkdir /home/"$1"/commun
chown commun:commun /home/"$1"/commun
chmod 755 /home/"$1"/commun
mkdir /home/"$1"/mesfichiers
chown "$1":"$1" /home/"$1"/mesfichiers
chmod 755 /home/"$1"/mesfichiers
echo "$1" >> /etc/vsftpd.userlist
echo "/home/commun /home/"$i"/commun auto bind,defaults 0 0" >> /etc/fstab
mount /home/"$i"/commun
else
echo "indiquez le nom de l'utilisateur en parametre"
fi
else
echo "script à éxecuter par root"
fi
pour rendre le script éxecutable:
Dans le fichier /etc/vsftpd.conf de mon exemple, les ports utilisés vont de 40000 à 40010. Il faudra donc ouvrir la plage de ports 40000 à 40010. De quelle manière? cela dépend de votre fournisseur d’accès, ou de votre materiel. Si Vous êtes chez free, il vous faudra vous rendre sur la page de votre compte, choisir l’onglet freebox, gérer le routeur freebox, redirection. indiquez la plage 40000 à 40010, redirigez-la vers l’adresse ip privé où se trouve votre serveur ftp, cliquez sur le plus, cliquez sur enregistrer et redémarrez votre freebox. Pour que cette adresse soit toujours la même, faite un bail dhcp permanent. Vous obtiendrez l’adresse mac avec la commande ifconfig.
on va bientôt lancer le serveur ftp. Avant cela, vérifions que nous avons bien le réseau:
arrêter avec ctrl+c
si vous n’avez pas de réseau:
Nous pouvons maintenant lancer le serveur ftp:
si vous voulez utiliser ftp-ssl, il faudra le lancer en mode passif avec l’argument -p:
Vous pouvez visualiser les connexions en temps réel avec la commande ps en argument de watch:
vous pouvez aussi voir qui a téléchargé quoi avec le fichier xferlog (sous root):
vous trouverez la syntaxe de ces lignes ici: http://www.castaglia.org/proftpd/doc/xferlog.html
et voila…