Différences entre les versions de « Grsecurity »

De BlaxWiki
Aller à la navigationAller à la recherche
(Page créée avec « '''Patch de sécurité Grsecurity pour Linux''' Grsecurity est un patch ayant pour but d'élever le niveau de sécurité du Kernel. Pour réaliser cela, ce patch ajoute un c... »)
 
 
Ligne 40 : Ligne 40 :
* A moins de définir des ACL très complexes, il n'est pas possible de halter / rebooter une machine si les ACL sont activées (même si l'on est passé en gradm -a, car c'est init qui lance les scripts de halt/reboot, et non pas le shell du root qui lance la commande halt ou reboot). Toute tentative de halt/reboot sans avoir désactivé complètement les ACL (par gradm -D) se traduira par le fait que la plupart des scripts /etc/rc* ne fonctionneront pas correctement. La machine sera alors mise dans un état instable, et la plupart du temps passera en mode monoutilisateur: elle ne sera plus accessible par le réseau, ce qui nécessitera un déplacement physique sur la machine...
* A moins de définir des ACL très complexes, il n'est pas possible de halter / rebooter une machine si les ACL sont activées (même si l'on est passé en gradm -a, car c'est init qui lance les scripts de halt/reboot, et non pas le shell du root qui lance la commande halt ou reboot). Toute tentative de halt/reboot sans avoir désactivé complètement les ACL (par gradm -D) se traduira par le fait que la plupart des scripts /etc/rc* ne fonctionneront pas correctement. La machine sera alors mise dans un état instable, et la plupart du temps passera en mode monoutilisateur: elle ne sera plus accessible par le réseau, ce qui nécessitera un déplacement physique sur la machine...


[[Catégorie:System-Clara]]
[[Catégorie:Linux]]

Version actuelle datée du 4 mars 2009 à 12:12

Patch de sécurité Grsecurity pour Linux

Grsecurity est un patch ayant pour but d'élever le niveau de sécurité du Kernel. Pour réaliser cela, ce patch ajoute un certain nombre de fonctionnalités au kernel :

  • Protection de l'espace d'adressage (pile non éxecutable, allocation d'adresses mémoire aléatoire, interdiction d'accès aux devices /dev/mem, /dev/kmem/, /dev/port), suppression d'informations sensibles (dans /proc))
  • Protection du Filesystem (restrictions des liens dans /tmp, restriction des processus visibles par les users)
  • Augmentation des messages de logs (log des mount/umount, changement d'heures, signals...)
  • PID aléatoires, restriction de la commande dmesg au root
  • Protections Réseau (ID des packets aléatoires, ports source aléatoires)
  • et enfin, implémentation d'ACL (Access Control Lists), ce qui permet de resteindre l'accès à des fichiers ou des repertoires (meme au root !) sauf à certains processus.

Pour plus d'informations, consulter le site de Grsecurity: http://www.grsecurity.net

La documentation des ACL est difficilement accessible par un browser graphique, il vaux mieux utiliser lynx :

lynx http://www.grsecurity.net/gracldoc.htm

Utilisation

Toutes les fonctions autres que les ACL sont choisies lors de la compilation du Kernel. Elles sont activées au boot et ne peuvent pas être désactivés (sauf si l'on permet de gerer grsecurity gràce à sysctl, mais permettre cela retire 90% de l'interet de grsecurity).

Par contre, les ACL ne sont pas activées automatiquement au boot. Il faut lancer une commande spéciale pour les activer :(gradm), voir ci-dessous.

Les ACL sont définies dans un répertoire spécial : /etc/grsec. Le fichier princial est /etc/grsec/acl, c'est ce fichier qui contient l'ACL par défaut (ACL utilisée pour tous les processus n'ayant pas des droits spéciaux). Par mesure de clarté, on peut définir les ACL dans plusieurs fichiers et include ces fichiers depuis le fichier principal grâce à une directive <include>.

gradm permet la gestion des ACL : activation, rechargement, désactivation globale, désactivation pour un processus (shell) et ses fils. La plupart des options de gradm nécessitent la frappe d'un mot de passe spécial (qui est défini grace à la commande gradm -P et stocké dans le fichier /etc/grsec/pw. Il ne faut PAS utiliser le même mot de passe que celui du root de la machine !! sinon tout l'intérêt de gradm est perdu (un hacker peut possiblement obtenir le mot de passe root...).

Les options suivantes sont les plus utilisées pour gradm :

  • gradm -E : active les ACL. Cett commande peut être placée dans les scripts d'initialisation de la machine (elle doit être lancée par le root, mais ne nécéssite l'utilisation du password gradm).
  • gradm -D : inverse de -E, désactive complètement les ACL. Le password gradm est nécessaire pour cette opération.
  • gradm -a : lancé depuis un shell root, donne des droits "super-super admin" au shell en question et à tous ses processus fils (c'est à dire que le shell et toutes les commandes tapées dedans par la suite ne seront plus sujets à aucune ACL). Utiliser cette commande pour modifier tout fichier protégé par les ACL (par exemple, tout fichier dans /etc (y compris et surtout les fichiers d'ACL eux memes, dans /etc/grsec), ou bien le httpd.conf...). Le password gradm est nécessaire pour passer dans cet état.
  • gradm -R : recharge les ACL (qui devaient déjà actives, c'est à dire qu'on ne peut pas faire gradm -D puis gradm -R). A utiliser après modification des fichiers ACL (modifications rendues possibles par gradm -a). Note: une fois les ACL rechargées, tout processus avec les droits spéciaux obtenus par gradm -a perdent ces droits.

Remarques diverses

  • A moins de définir des ACL très complexes, il n'est pas possible de halter / rebooter une machine si les ACL sont activées (même si l'on est passé en gradm -a, car c'est init qui lance les scripts de halt/reboot, et non pas le shell du root qui lance la commande halt ou reboot). Toute tentative de halt/reboot sans avoir désactivé complètement les ACL (par gradm -D) se traduira par le fait que la plupart des scripts /etc/rc* ne fonctionneront pas correctement. La machine sera alors mise dans un état instable, et la plupart du temps passera en mode monoutilisateur: elle ne sera plus accessible par le réseau, ce qui nécessitera un déplacement physique sur la machine...