Veuillez garder à l'esprit la Sainte Trinité de la sécurité de l'information :C (confidentialité), I (intégrité) et A (disponibilité). Ainsi, lorsque nous parlons de renforcement de la configuration, vous devez tenir compte de la technologie avec laquelle vous travaillez, des informations protégées, de la manière dont les informations sont utilisées au sein de l'organisation et des menaces. Sur la base de ces réponses, et éventuellement d'autres, vous pouvez commencer à déterminer lesquels des locataires sont les plus importants et sur quoi vous concentrer.
Au niveau du système de fichiers, vous êtes généralement plus intéressé par l'intégrité et la disponibilité. La confidentialité des informations doit probablement être gérée à un niveau différent, mais la manière dont vous disposez vos systèmes de fichiers et dont vous les utilisez doit garantir que les informations sont à la fois fiables et toujours disponibles en cas de besoin.
Une chose à garder à l'esprit lors de la disposition de vos partitions sont les modes de défaillance. Généralement, cette question est de la forme :"Que se passe-t-il lorsque la partition x se remplit ?"
Que se passe-t-il si votre partition stockant le système d'exploitation est pleine ? Des choses étranges se produisent parfois lorsque /
remplit. Parfois, le système se bloque. Parfois, aucune nouvelle session de connexion ne peut avoir lieu. Parfois, le système refuse de démarrer.
De tous les modes de défaillance, celui-ci est le plus difficile à caractériser strictement car ses symptômes sont les plus susceptibles de changer en fonction du système d'exploitation, de la version du noyau, de la configuration, etc. Certains systèmes de fichiers, en particulier la ligne ext, réservent une certaine quantité d'espace lorsque le système de fichiers est créé. Cet espace réservé ne peut être utilisé que par l'utilisateur root et est destiné à permettre à l'administrateur système de continuer à fonctionner et à nettoyer l'espace.
Que se passe-t-il si votre partition stockant les journaux est pleine ? Vous perdez des données d'audit/de rapport et est parfois utilisé par des attaquants pour masquer leur activité. Dans certains cas, votre système n'authentifiera pas les nouveaux utilisateurs s'il ne peut pas enregistrer leur événement de connexion.
Que se passe-t-il sur un système basé sur RPM lorsque /var
est plein ? Le gestionnaire de packages n'installera ni ne mettra à jour les packages et, selon votre configuration, peut échouer en mode silencieux.
Remplir une partition est facile, surtout lorsqu'un utilisateur est capable d'y écrire. Pour vous amuser, exécutez cette commande et voyez à quelle vitesse vous pouvez créer un fichier assez volumineux :cat /dev/zero > zerofile
.
Cela va au-delà du remplissage des partitions également, lorsque vous placez des emplacements sur différents points de montage, vous pouvez également personnaliser leurs options de montage.
Que se passe-t-il lorsque /dev/
n'est pas monté avec noexec
? Depuis /dev
est généralement supposé être maintenu par le système d'exploitation et ne contenir que des périphériques qu'il était fréquemment (et parfois encore) utilisé pour masquer des programmes malveillants. Laissant de côté noexec
vous permet de lancer les binaires qui y sont stockés.
Pour toutes ces raisons, et bien d'autres encore, de nombreux guides de durcissement aborderont le partitionnement comme l'une des premières étapes à effectuer. En fait, si vous construisez un nouveau serveur, comment partitionner le disque est presque exactement le premier chose que vous avez à décider, et souvent les plus difficiles à modifier par la suite. Il existe un groupe appelé Center for Internet Security qui produit des tas de guides de configuration faciles à lire. Vous pouvez probablement trouver un guide pour votre système d'exploitation spécifique et voir tous les détails qu'ils peuvent dire.
Si nous examinons RedHat Enterprise Linux 6, le schéma de partitionnement recommandé est le suivant :
# Mount point Mount options
/tmp nodev,nosuid,noexec
/var
/var/tmp bind (/tmp)
/var/log
/var/log/audit
/home nodev
/dev/shm nodev,nosuid,noexec
Le principe de tous ces changements est d'éviter qu'ils s'impactent les uns les autres et/ou de limiter ce qui peut être fait sur une partition spécifique. Prenez les options pour /tmp
par exemple. Cela signifie qu'aucun nœud de périphérique ne peut y être créé, qu'aucun programme ne peut y être exécuté et que le bit set-uid ne peut être défini sur rien. De par sa nature même, /tmp
est presque toujours inscriptible dans le monde entier et est souvent un type spécial de système de fichiers qui n'existe qu'en mémoire. Cela signifie qu'un attaquant pourrait l'utiliser comme un point de transit facile pour supprimer et exécuter du code malveillant, puis planter (ou simplement redémarrer) le système effacera toutes les preuves. Depuis la fonctionnalité de /tmp
ne nécessite aucune de ces fonctionnalités, nous pouvons facilement désactiver les fonctionnalités et éviter cette situation.
Les emplacements de stockage des journaux, /var/log
et /var/log/audit
sont découpés pour aider à les protéger de l'épuisement des ressources. De plus, auditd peut effectuer certaines actions spéciales (généralement dans des environnements de sécurité plus élevés) lorsque son stockage de journaux commence à se remplir. En le plaçant sur sa partition, cette détection de ressource fonctionne mieux.
Pour être plus verbeux, et citez mount(8)
, voici exactement ce que sont les options utilisées ci-dessus :
noexec N'autorisez pas l'exécution directe de fichiers binaires sur le système de fichiers monté. (Jusqu'à récemment, il était possible d'exécuter des binaires de toute façon en utilisant une commande comme /lib/ld*.so/mnt/binary. Cette astuce échoue depuis Linux 2.4.25 / 2.6.0.)
nodev Ne pas interpréter les caractères ou bloquer les périphériques spéciaux sur le système de fichiers.
nosuid N'autorisez pas les bits set-user-identifier ou set-group-identifier à prendre effet. (Cela semble sûr, mais est en fait plutôt dangereux si vous avez installé suidperl(1).)
Du point de vue de la sécurité, ce sont de très bonnes options à connaître car elles vous permettront de mettre des protections sur le système de fichiers lui-même. Dans un environnement hautement sécurisé, vous pouvez même ajouter le noexec
option à /home
. Il sera plus difficile pour votre utilisateur standard d'écrire des scripts shell pour le traitement des données, par exemple l'analyse des fichiers journaux, mais cela l'empêchera également d'exécuter un binaire qui élèvera les privilèges.
N'oubliez pas non plus que le répertoire personnel par défaut de l'utilisateur root est /root
. Cela signifie qu'il sera dans le /
système de fichiers, pas en /home
.
Le montant exact que vous accordez à chaque partition peut varier considérablement en fonction de la charge de travail du système. Un serveur typique que j'ai géré nécessitera rarement une interaction de personne et en tant que tel le /home
la partition n'a pas besoin d'être très grande du tout. Il en va de même pour /var
car il a tendance à stocker des données plutôt éphémères qui sont créées et supprimées fréquemment. Cependant, un serveur Web utilise généralement /var/www
comme terrain de jeu, ce qui signifie que cela doit également être sur une partition séparée ou /var/
doit être rendu grand.
Dans le passé, j'ai recommandé ce qui suit comme référence.
# Mount Point Min Size (MB) Max Size (MB)
/ 4000 8000
/home 1000 4000
/tmp 1000 2000
/var 2000 4000
swap 1000 2000
/var/log/audit 250
Ceux-ci doivent être revus et ajustés en fonction de l'objectif du système et du fonctionnement de votre environnement. Je recommanderais également d'utiliser LVM et de ne pas allouer l'intégralité du disque. Cela vous permettra d'agrandir ou d'ajouter facilement des partitions si cela est nécessaire.
Le découpage en une ou plusieurs partitions n'est pas vraiment un problème de sécurité mais de fiabilité . L'idée est que si l'une de vos partitions plante, alors vous perdez le contenu de celle partition, mais les autres partitions sont correctes. De plus, si vous remplissez cette partition, les autres partitions ne sont pas affectées. Chaque partition peut avoir son propre système de fichiers, et tous les types de systèmes de fichiers ne sont pas équivalents en termes de performances dans divers contextes (bien que la plupart des systèmes de fichiers soient généralement aussi bons les uns que les autres dans la plupart des contextes). Sur certains PC, le processus de démarrage peut avoir des difficultés à accéder plus loin que les premiers gigaoctets du disque en raison des particularités historiques de cette architecture, qui sont trop horrifiantes pour être rappelées ici; donc, /boot
est souvent mieux défini comme une partition séparée de taille limitée et située en premier sur le disque.
Si vous souhaitez appliquer un chiffrement au niveau de la partition, vous risquez de rencontrer des problèmes si vous chiffrez trop -- à savoir, le code qui effectue le déchiffrement doit être situé à l'extérieur de ladite partition. Cela dépend beaucoup du produit de chiffrement réel (certains peuvent intégrer le code de déchiffrement dans le chargeur de démarrage).
Notez que plus vous divisez votre disque en partitions, moins l'ensemble devient flexible. Lorsqu'une partition se remplit, elle est pleine et le reste, même si d'autres partitions ont de l'espace libre (LVM peut aider à faire face à cela, vous pouvez donc dire "oui" lorsque le programme d'installation du système d'exploitation vous demande si vous souhaitez utiliser LVM) . Plus vous créez de partitions, plus ce problème devient probable et difficile.
Le chemin le plus simple et le plus sûr consiste à laisser le programme d'installation du système d'exploitation choisir les partitions comme bon lui semble. Ne continuez pas à changer la taille des partitions tant que vous n'avez pas une connaissance et une expérience précises de ce que cela implique. N'oubliez pas de faire des sauvegardes régulières. On s'attend à ce qu'après quelques mois, vous souhaitiez réinstaller votre système d'exploitation pour "faire les choses correctement", et ce n'est pas nécessairement une mauvaise idée, alors ne vous inquiétez pas. Il s'agit d'un outil d'apprentissage, pas d'un serveur qui passera en production.
Je regarderais cela d'une manière différente des autres intervenants jusqu'à présent :si vous examinez un tas d'exploits, alors toutes les menaces sont possibles et le bac à sable du système où vous le faites autant que possible semble être une précaution utile. Xen est un moyen facile de le faire. Il peut utiliser des images de disque sur un autre système de fichiers, mais si vous savez que vous allez l'utiliser, je vous suggère de laisser des partitions de disque séparées (et assurez-vous qu'elles ne sont pas montées automatiquement sur votre Dom0).
Je ne sais pas si Kali fonctionne bien en tant que Xen Dom0. Ubuntu semble au moins avoir des problèmes. Vous pourriez envisager de laisser de la place pour XenServer ou une autre version spécialisée de Xen Dom0. [Edit :Je ne sais pas à quoi ressemblent les netbooks de nos jours, mais je suppose que XenServer ne les cible pas vraiment... Peut-être une autre distribution plus simple qui fonctionne bien avec Xen en tant que Dom0. Vous pourrez peut-être configurer une installation Kali qui s'exécute de manière autonome ou en tant que DomU si la recherche d'exploits est une tâche moins courante.]
Sur les systèmes BSD, j'ai entendu parler de méthodes de renforcement impliquant le partitionnement pour monter autant que possible en lecture seule et en utilisant des drapeaux immuables. Je suppose qu'il existe au moins certains systèmes Linux où une configuration similaire est possible, mais il semble que Kali soit basé sur Debian et j'ai l'impression que vous ne pouvez pas vraiment faire cela sur Debian [modifier :à moins de monter un FS inscriptible sur ce qui serait encore malaisé à maintenir dans le temps]. Dans tous les cas, je ne suggérerais pas cela pour une machine à usage général et ne le mentionnerais que si vous êtes plus généralement intéressé par toutes les façons dont le partitionnement pourrait être utilisé. Pour votre objectif, placez les menaces sur un système que vous pouvez supprimer et recréer facilement.