Aller à la recherche

FreeBSD : Limiter l'usage des ressources grâce à login.conf

Tout comme limits.conf sous linux, il est possible de limiter l'utilisation des ressources du système afin d’éviter des surcharges voir des DoS avec les "classes de login".

Limiter l'utilisation des ressources avec login.conf

Les classes de login se gèrent au niveau système avec le fichier /etc/login.conf et au niveau utilisateur avec ~/.login.conf

Chaque utilisateur fait partie d'une ou plusieurs classes et chaque classe peut posséder certaines limites.

Les classes peuvent définir

  • des limites à ne pas dépasser sur les ressources système
  • des variables d’environnement
  • la manière dont le login peut se faire.

La classe d'appartenance d'un l'utilisateur se définit à la création de celui-ci ou avec l'utilitaire chpass.

Il existe une classe défaut qui est appliquée à tous les utilisateurs n'ayant aucune autre classe.

#default:\
#	:cputime=infinity:\
#	:datasize-cur=22M:\
#	:stacksize-cur=8M:\
#	:memorylocked-cur=10M:\
#	:memoryuse-cur=30M:\
#	:filesize=infinity:\
#	:coredumpsize=infinity:\
#	:maxproc-cur=64:\
#	:openfiles-cur=64:\
#	:priority=0:\
#	:requirehome@:\
#	:umask=022:\
#	:tc=auth-defaults:
#

La classe défaut à un résultat plutôt permissif en donnant aux utilisateurs un accès plutôt illimité aux ressources système.

Voici quelques variables pour la limitation des ressources

  • cputime : Contrôle la façon qu'un processus peut utiliser le temps CPU.
  • datasize : La quantité de mémoire maximale de données disponible pour un processus.
  • statcksize : La taille maximale de mémoire de pile disponible pour un processus.
  • memoryuse : La quantité de mémoire maximale qu'un processus peut verrouiller.
  • filesize : La taille maximale d'un fichier.
  • coredumpsize : La taille maximale d'un fichier coredump.
  • maxproc : Le nombre de processus qu'un utilisateur peut lancer.
  • openfiles : Le nombre de fichier que peut ouvrir un processus.

Les limites -cur (memoryuse-cur maxproc-use) sont consultatif et chaque utilisateur peut dépasser celle-ci sans problème. Les limites -max sont les limites maximale et les utilisateurs ne peuvent d'aucune manière les dépasser. Si une limite est ajoutée sans préciser si c'est consultative (avec -cur) ou maximale (avec -max) FreeBSD la considère étant maximale.

Certaines variables n'ont pas de valeur par exemple requirehome qui force l'utilisateur à avoir un répertoire d’accueil valide.

Variables d'environnement

Le fichier login.conf permet aussi de définir des variables d'environnement qui peuvent (et sont souvent) écrasées à d'autres endroits du système (~./cshrc par exemple)

Voici quelques variables d'environnement que vous pouvez définir dans login.conf

  • nologin : Interdit l'utilisateur à se connecter.
  • welcome : Message de bienvenue qui sera affiché à la connexion.
  • term : type de terminal (Attention est souvent redéfinit à différents endroits)
  • timezone : définit la valeur par défaut de la variable d'environnement $TZ
  • umask : Définit l'umask initial
  • hushlogin : Affiche aucune information durant la connexion
  • priority : Priorité par défaut des processus lancés par l'utilisateur
  • setenv : Variables d'environnement séparées par virgules

Contrôler les logins et les politique de mots de passe

Il est aussi possible de définir des options de connexion et authentification

  • passwd_format : quel hachage utiliser pour stocker les mots de passe dans /etc/master.passwd par défaut sha512
  • times.allow : période pendant laquelle les utilisateurs ont le droit de se connecter (sous format de jour et d'heure, ex ; Les utilisateurs ont le droit de se connecter les weekend de 8 à 17 heures times.allow=SaSu0800-1700:\)
  • times.deny : période pendant laquelle les utilisateurs n'ont pas le droit de se connecter : priorité à times.deny si des valeurs se chevauchent avec times.allow
  • login-retries : nombre de tentative de login avant échec

Valider les modifications

Après toute modification vous devez exécuter cap_mkdb afin de régénérer la base. cap_mkdb /etc/login.conf cap_mkdb ~/.login.conf

Voilà, à vous de tester...

La discussion continue ailleurs

URL de rétrolien : https://www.binsp.net/?trackback/35

Fil des commentaires de ce billet

Page top