Même si passer par le protocole SFTP pour se connecter à son serveur suffit dans le cadre d'une utilisation personnelle, donner un accès SSH aux utilisateurs du serveur peut s'avérer dangereux. Mettre en place un serveur FTP peut, dans ce cas là, s'avérer intéréssant pour donner un accès limité à un dossier spécifique à nos utilisateurs. Nous allons voir la mise en place d'un serveur FTP simple avec ProFTPD.
Installation
Commençons par installer ProFTP en passant par le gestionnaire de paquet
sudo apt-get install proftpd
Une fois l'installation terminée, dans le cadre bleu, sélectionnez l'option standalone, ainsi le serveur FTP sera toujours lancé. Avec inetd, le serveur ne sera lancé qu'au moment où il détecte une nouvelle connexion.
Configuration
Pour gérer nos utilisateurs nous allons directement utiliser le système d'utilisateur de Linux (il est possible de passer par une base de données mysql mais la configuration devient alors plus complexe).
adduser MON_USER
La commande adduser
va automatiquement créer un dossier personnel dans le dossier /home
avec les bonnes permissions. En revanche, on ne souhaite pas que l'utilisateur aient un accès SSH à notre machine. On peut modifier la configuration SSH afin de spécifier les utilisateurs autorisés à se connecter via SSH. Dans /etc/ssh/sshd_config
AllowUsers root MON_USER_SSH
(Ceci est un exemple, on peut retirer root si notre utilisateur SSH est dans la liste des sudoers).
C'est tout ce qu'il y a à faire ! Vous devriez déjà pouvoir vous connecter en FTP à votre marchine avec le mot de passe définit lors de l'étape adduser
. Si vous avez un parefeu activé, pensez à ouvrir le port 21.
En revanche, l'utilisateur a actuellement accès à tout le serveur. Même si il n'a pas les droits d'écriture, il peut quand même voir des fichiers relativement sensibles. On va donc bloquer l'utilisateur dans son dossier personnel. Pour cela on modifie la configuration de ProFTPD
sudo vim /etc/proftpd/proftpd.conf
Et nous allons dé-commenter la ligne où se trouve DefaultRoot. Ainsi
quand l'utilisateur se connectera il ne pourra pas aller dans les autres dossiers, et restera dans son dossier /home/MON_USER.
Il ne nous reste plus qu'a relancer ProFTP
sudo service proftpd restart
Gestion des quotas
Si on donne des accès FTP à n'importe qui, il peut être judicieux de limiter la quantité d'information qui peut être uploadée. Pour cela on va utiliser le système de quota.
Installation
sudo apt-get install quota
Une fois cet outil installé on doit modifier les options de montage de notre système de fichier racine.
sudo vim /etc/fstab
On peut activer un quota par utilisateur usrquota
et/ou par groupe grpquota
.
UUID=dfd8be75-01ee-a2c3-46d4-1283e44fcdba / ext4 errors=remount-ro,usrquota,grpquota 0 1
Une fois cette modification faite il faut remonter le système de fichier
sudo mount -o remount /
Nous pouvons maintenant créer les fichiers d'index.
sudo quotacheck -cgum /
c
permet d'indiquer que l'on souhaite créer de nouveaux fichiers d'indexu
permet d'indiquer que l'on crée un index pour les utilisateursg
permet d'indiquer que l'on crée un index pour les groupesm
indique qu'il est inutile de remonter la système de fichier en READ ONLY pendant le scan.
Maintenant nous pouvons activer le système de quota
sudo quotaon /
Configuration des quotas
Une fois cette installation faite, nous pouvons enfin gérer les quotas pour nos utilisateurs à l'aide de la commande :
sudo edquota NOTRE_USER
Cette commande ouvre le fichier de configuration de notre utilisateur.
Disk quotas for user NOTRE_USER (uid 1001):
Filesystem blocks soft hard inodes soft hard
/dev/sda1 4556 0 1000 2 0 0
Il y a plusieurs colonnes que l'on peut éditer :
- Filesystem représente le nom du système de fichier sur lequel on a activé les quota
- blocks représente le nombre de blocks actuellement utilisés (1000 blocks ~= 1Mo
- soft est une limite qui peut être temporairement dépassée pendant une période définie
- hard est une limite fixe qui ne peut être dépassée
- inodes représente le nombre d'inodes actuellement utilisés (nombre de fichiers)
- soft est une limite qui peut être temporairement dépassée pendant une période définie
- hard est une limite fixe qui ne peut être dépassée
Si vous voulez vérifier vos quotas vous pouvez utiliser les commandes
sudo quota NOTRE_USER
# Pour un rapport global
repquota -a