Pour débuter
Outils de base
VIM
06 min
SSH
14 min
rsync
20 min
Shell fish
13 min
Serveur HTTP
Apache
40 min
Nginx
30 min
PHP
NodeJS
Base de données
MySQL
15 min
Redis
08 min
Emails
HTTPS
FTP
ProFTPD
14 min
Sécurité
Pour le confort
Déploiement

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'index
  • u permet d'indiquer que l'on crée un index pour les utilisateurs
  • g permet d'indiquer que l'on crée un index pour les groupes
  • m 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 :

  1. Filesystem représente le nom du système de fichier sur lequel on a activé les quota
  2. 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
  3. 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