Je me demandais si le profil renforcé de Gentoo était vraiment plus sécurisé que nimporte quelle autre distribution (comme Debian, RHEL, Arch … ). Pour ceux qui ne le savent pas, Gentoo hardened permet à un système dêtre construit à léchelle du système avec des options GCC de durcissement spécifiques (pie, ssp, relro, …) et dautres petites choses (grsec / selinux …).

Par exemple, je sais quArch Linux ne construit pas tous les binaires avec ces indicateurs de durcissement GCC, donc cela implique-t-il une sorte de souci de sécurité?

Je sais quOpenVPN est construit sans PIE et partiel relro. Cela signifie-t-il que si un exploit est trouvé contre OpenVPN, une installation dArch peut être moins sécurisée quune installation Gentoo?

TL; DR: est-ce un réel avantage dutiliser Gentoo Hardened par rapport à toute autre distribution dans termes de sécurité des binaires?

Réponse

Tout est dans la source! Gentoo hardened est une distribution axée sur la sécurité au profil durci vraiment est très important pour le rendre vraiment sécurisé.

Mais vaut-il la peine dêtre compilé? Une grande question parmi les forums Linux.

Regardons le profil renforcé Gentoo en termes de sécurité:

pendant quil ajoute quelques secu rity cest si peu que ça ne vaut pas la peine dans la plupart des cas. Il fournit plus de sécurité sur une distribution binaire car tout le monde a les mêmes binaires et un attaquant na pas besoin de deviner où un morceau de code spécifique peut être chargé, mais en exécutant une distribution source, votre espace dadressage est déjà assez unique. Le seul cas où il fournit une certaine sécurité lorsquun attaquant essaie de deviner une adresse pour un exploit, faire une mauvaise estimation fera probablement planter le processus et il sera rechargé sur une nouvelle adresse. Avez-vous des données suffisamment précieuses pour quun attaquant puisse passer par là Si vous le faites, vous devriez utiliser un profil renforcé, mais la sécurité physique et le chiffrement du disque sont plus importants car si cela en vaut la peine, il sera plus facile de vous voler.

Sachez quil ny a pas de profil de bureau renforcé, ce qui rendra la tâche un peu plus difficile si vous prévoyez de lutiliser sur un bureau.

Une autre raison est que si vous voulez utiliser quelque chose comme SELinux (qui ne nécessite pas de profil renforcé) qui vous donne un contrôle très fin sur le contrôle d’accès mais qui est également très restrictif. Je pense que cela ne vaut la peine que pour les grands réseaux avec de nombreux utilisateurs et différents niveaux daccès aux données sensibles.

Javais besoin de certaines fonctionnalités de SELinux mais je me suis contenté dutiliser AppArmor dune manière inhabituelle pour les accomplir car SELinux pose trop de problèmes. Tout ce que fait AppArmor est de fournir une isolation des processus ou un sandboxing. Si un attaquant accède via un exploint, il ne pourra accéder quaux fichiers auxquels le service exploité a accès. Je lutilise avec un profil catch all qui empêche lexécution de tous les répertoires inscriptibles et personnels du monde, et laccès aux clés ssh / pgp, aux trousseaux de clés, etc. Cela fonctionne bien pour les serveurs et les bureaux et nest pas trop restrictif. Et si jai besoin dexécuter du code depuis mon répertoire personnel pour le développement, je peux lancez un shell sans restriction via sudo. Je peux laisser mon ordinateur portable déverrouillé avec le portefeuille ouvert (jutilise le module kwallet pam) et il vous sera très difficile dobtenir quelque chose comme des clés ssh ou des mots de passe (jai aussi des correctifs pour kwallet donc il nécessite un mot de passe ord pour afficher les mots de passe enregistrés), mais les programmes qui en ont besoin y ont accès.

Mais quest-ce qui le rend durci? regardons également certains de ces éléments:

  • PaX est un correctif du noyau qui nous protège des débordements de pile et de tas. PaX fait cela en utilisant ASLR (randomisation de la disposition de lespace dadressage), qui utilise des emplacements mémoire aléatoires en mémoire. Chaque shellcode doit utiliser une adresse pour y accéder afin de gagner lexécution du code et, comme ladresse du tampon en mémoire est aléatoire, cest beaucoup plus difficile à réaliser. PaX ajoute une couche de protection supplémentaire en conservant les données utilisées par le programme dans une région mémoire non exécutable, ce qui signifie quun attaquant ne pourra pas exécuter le code quil a réussi à écrire en mémoire. Pour utiliser PaX, nous devons utiliser un noyau compatible PaX, comme les sources renforcées.
  • PIE / PIC (code indépendant de la position): Normalement, un exécutable a une adresse de base fixe où il sont chargés. Cest également ladresse qui est ajoutée aux RVA pour calculer ladresse des fonctions à lintérieur de lexécutable. Si lexécutable est compilé avec le support PIE, il peut être chargé nimporte où en mémoire, alors quil doit être chargé à une adresse fixe sil est compilé sans support PIE. Le PIE doit être activé si nous voulons utiliser PaX pour tirer parti de lASLR.
  • RELRO (relocation en lecture seule): lorsque nous exécutons lexécutable, le programme chargé doit écrire dans certaines sections qui ne pas besoin dêtre marqué comme inscriptible après le démarrage de lapplication. Ces sections sont .ctors, .dtors, .jcr, .dynamic et .got [4].Si nous marquons ces sections comme étant en lecture seule, un attaquant ne pourra pas utiliser certaines attaques qui pourraient être utilisées lors de la tentative dexécution de code, comme lécrasement dentrées dans une table GOT.
  • SSP ( protecteur de pile) est utilisé en mode utilisateur; il protège contre les débordements de pile en plaçant un canari sur la pile. Lorsquun attaquant veut déborder ladresse EIP de retour sur la pile, il doit également déborder le canari choisi au hasard. Lorsque cela se produit, le système peut détecter que le Canary a été écrasé, auquel cas lapplication est arrêtée, ne permettant ainsi pas à un attaquant de sauter à un emplacement arbitraire de la mémoire et dexécuter du code à partir de là.
  • RBAC (contrôle daccès basé sur les rôles): Notez que RBAC nest pas le même que RSBAC, que nous présenterons plus tard. Le RBAC est un contrôle daccès qui peut être utilisé par SELinux, Grsecurity, etc. Par défaut, le créateur dun fichier a un contrôle total sur le fichier, tandis que le RBAC oblige lutilisateur root à avoir le contrôle du fichier, quel que soit le créateur il. Par conséquent, tous les utilisateurs du système doivent suivre les règles RBAC définies par ladministrateur du système.

De plus, nous pouvons également utiliser les systèmes de contrôle daccès suivants, qui sont utilisés pour contrôler laccès entre les processus et objets. Normalement, nous devons choisir lun des systèmes décrits ci-dessous, car un seul des systèmes de contrôle daccès peut être utilisé à la fois. Les systèmes de contrôle daccès incluent les éléments suivants:

  • SELinux (Linux à sécurité renforcée)
  • AppArmor (armure dapplication)
  • Grsecurity, qui contient divers correctifs qui peut être appliqué au noyau pour augmenter la sécurité de tout un système. Si nous voulons activer Grsecurity dans le noyau, nous devons utiliser un noyau compatible Grsecurity, qui est des sources renforcées.
  • RSBAC (contrôle daccès basé sur un ensemble de règles): nous devons utiliser le noyau rsbac-sources pour construire un noyau avec le support rsbac.

Tout se résume à la grande question comme indiqué précédemment? Vaut la compilation? Cela dépend vraiment de comment ou de ce que vous sécurisez et cet effort en vaut-il la peine? Ou pourrez-vous vraiment sécuriser ce que vous ne voulez pas que les regards indiscrets voient?

Commentaires

  • Daccord, merci pour la clarification de tout ces technologies dapplication de la sécurité. Donc, si je comprends votre point, ces éléments sont très utiles pour améliorer la sécurité dun système; mais vous demandez " est-ce que ça vaut le coup de la compiler? ". Alors, pourquoi ne sont-ils pas activés par défaut dans certaines distributions majeures? Jai lu que PaX sur un bureau peut casser certains binaires (entendu parler de java ou de firefox); est-ce la seule raison?
  • La raison pour laquelle PaX et grsecurity ne sont pas les valeurs par défaut sur de nombreuses distributions est due à la politique et à lego. Les développeurs des deux ont des personnalités qui se heurtent fortement à léquipe de développement du noyau Linux. En plus de cela, ils ne souhaitent pas prendre le temps de diviser leur correctif en morceaux qui seraient acceptés en amont, et plutôt utiliser leur temps pour développer plus de fonctionnalités de sécurité.
  • Notez également que grsecurity est pas un système de contrôle daccès. Spender (créateur de grsecurity) est très irrité lorsque les gens lappellent un système de contrôle daccès et le comparent à SELinux. : P Grsecurity est une combinaison de correctifs du noyau qui augmente la sécurité du noyau en éliminant les classes de bogues. Le système de contrôle daccès RBAC dont il dispose est sans importance par rapport aux autres. Les fonctionnalités de sécurité de Grsecurity ' sont si étendues quelles prendraient beaucoup plus de place que ce qui pourrait être mis dans un seul message. Consultez grsecurity.net pour voir une liste assez complète.
  • bien quil ajoute un peu de sécurité, il ' est si petit quil ' ne vaut pas la peine dans la plupart des cas – Euh, cest totalement incorrect. Et la sécurité na vraiment rien à voir avec le fait de cacher des adresses. Je ' m étonné que cette réponse soit votée positivement.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *