J'ai récemment acquis un netbook pour jouer avec, et je veux installer Kali Linux afin que je puisse commencer à apprendre sur la sécurité du réseau et exploiter le développement. Je veux l'utiliser pour en savoir autant que possible sur la sécurité.
Quelle est la meilleure façon de partitionner une box Linux pour qu'elle soit la plus résistante à un risque de sécurité? Une partition unique contenant tous les dossiers sous Linux est-elle vraiment si mauvaise?
Des points supplémentaires si vous pouvez entrer dans les détails sur les menaces possibles. Je veux apprendre autant que possible.
Veuillez garder à l'esprit la Sainte Trinité de la sécurité de l'information: C (onfidentialité), 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 façon 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 quels locataires sont les plus importants et sur quoi se concentrer.
Au niveau du système de fichiers, vous êtes généralement le plus intéressé par l'intégrité et la disponibilité. La confidentialité des informations devrait probablement être gérée sur une couche différente, mais la façon dont vous posez nos systèmes de fichiers et la façon dont vous les utilisez doit vous assurer 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. Cette question est généralement 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 /
Se remplit. Parfois, le système se bloque. Parfois, aucune nouvelle session de connexion ne peut se produire. 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 à utiliser 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 les 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'installe ni ne met à jour les packages et, en fonction de votre configuration, peut échouer en silence.
Remplir une partition est facile, surtout lorsqu'un utilisateur est capable d'y écrire. Pour le plaisir, exécutez cette commande et voyez à quelle vitesse vous pouvez créer un assez gros fichier: 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
? Puisque /dev
Est généralement supposé être maintenu par le système d'exploitation et ne contenir que des périphériques, il était fréquemment (et parfois encore) utilisé pour masquer des programmes malveillants. Laisser noexec
vous permet de lancer les binaires qui y sont stockés.
Pour toutes ces raisons, et plus encore, de nombreux guides de durcissement discuteront du partitionnement comme l'une des premières étapes à effectuer. En fait, si vous construisez un nouveau serveur, la façon de partitionner le disque est presque exactement la chose d'abord que vous avez pour décider, et souvent la plus difficile de changer plus tard. 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 spécifique système d'exploitation et voir tous les détails qu'ils peuvent dire.
Si nous regardons 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 derrière toutes ces modifications est de les empêcher de se toucher mutuellement et/ou de limiter ce qui peut être fait sur une partition spécifique. Prenez par exemple les options pour /tmp
. Cela signifie qu'aucun nœud de périphérique ne peut y être créé, aucun programme ne peut être exécuté à partir de là et le bit set-uid ne peut pas être défini sur quoi que ce soit. De par sa nature même, /tmp
Est presque toujours accessible en écriture et est souvent un type de système de fichiers spécial qui n'existe qu'en mémoire. Cela signifie qu'un attaquant pourrait l'utiliser comme un point de transfert facile pour supprimer et exécuter du code malveillant, puis planter (ou simplement redémarrer) le système effacera toutes les preuves. Étant donné que 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 supprimés pour les protéger de l'épuisement des ressources. De plus, auditd peut effectuer certaines tâches spéciales (généralement dans des environnements à sécurité élevée) lorsque son stockage de journaux commence à se remplir. En le plaçant sur sa partition, cette détection de ressources fonctionne mieux.
Pour être plus prolixe et citer mount(8)
, voici exactement les options utilisées ci-dessus:
noexec Ne pas autoriser l'exécution directe de binaires sur le système de fichiers monté. (Jusqu'à récemment, il était de toute façon possible d'exécuter des binaires 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 Ne laissez pas les bits set-user-identifier ou set-group-identifier prendre effet. (Cela semble sûr, mais est en fait plutôt dangereux si suidperl (1) est installé.)
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 l'option noexec
à /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 les empêchera également d'exécuter un binaire qui élèvera les privilèges.
Gardez également à l'esprit que le répertoire de base par défaut de l'utilisateur root est /root
. Cela signifie qu'il sera dans le système de fichiers /
, pas dans /home
.
Le montant exact que vous donnez à 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 personnelle et en tant que telle, la partition /home
N'a pas besoin d'être très grande du tout. La même chose s'applique à /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 distincte ou que /var/
Doit être agrandi.
Dans le passé, j'ai recommandé ce qui suit comme références.
# 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 examinés 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 de telles choses sont nécessaires.
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 tombe en panne, alors vous perdez le contenu de cette partition , mais les autres partitions vont bien. 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 pour la plupart aussi bons les uns que les autres dans la plupart des contextes). Sur certains PC, le processus de démarrage peut avoir des problèmes d'accès plus loin que les premiers gigaoctets du disque en raison des particularités historiques de cette architecture, qui sont trop horribles 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 le chiffrement au niveau de la partition, vous pouvez 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 reste ainsi, même si d'autres partitions ont de l'espace libre ( LVM peut aider à y faire face, donc vous voudrez peut-être pour 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 changez pas la taille des partitions avant d'avoir 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 que, après quelques mois, vous souhaitiez réinstaller votre système d'exploitation pour "le faire 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 entrera en production.
Je considérerais cela d'une manière différente de celle des autres intervenants jusqu'à présent: si vous regardez un tas d'exploits, alors toutes les menaces sont possibles et le sandboxing du système où vous faites cela autant que possible semble être une précaution utile. Xen est un moyen simple 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 distinctes (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 ces jours-ci, mais je suppose que XenServer ne les cible pas vraiment ... Peut-être une autre distribution plus simple qui fonctionne bien avec Xen comme 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 durcissement impliquant le partitionnement pour monter autant que possible en lecture seule et en utilisant des indicateurs 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 mon sentiment est que vous ne pouvez pas vraiment le faire sur Debian [edit: sauf si vous montez un _ FS dessus, ce qui serait encore difficile à maintenir dans le temps]. Dans tous les cas, je ne suggérerais pas cela pour une machine à usage général et je ne le ferais que si vous êtes plus généralement intéressé par toutes les façons dont le partitionnement pourrait être utilisé. Pour ce faire, placez les menaces sur un système que vous pouvez supprimer et recréer facilement.
Il y a beaucoup de bonnes informations dans certaines de ces réponses, mais je ne suis pas sûr qu'elles répondent vraiment à vos besoins spécifiques. Étant donné que votre objectif déclaré est d'apprendre et que vous envisagez d'utiliser ce système pour expérimenter et jouer avec Kali Linux afin d'obtenir une meilleure compréhension des questions liées à la sécurité, je viserais un système qui est rapide et facile à réinstaller plutôt qu'un système durci. ou sécurisé. Une fois que vous aurez acquis des connaissances et de l'expérience avec le système, vous serez bien mieux placé pour prendre les décisions quant à la configuration qui répond le mieux à vos besoins et correspond le mieux à votre style de travail, etc.
Certaines choses à savoir qui n'ont pas été mentionnées par d'autres.
La plupart des conseils sur le partitionnement sont partiellement obsolètes et peuvent entrer en conflit avec certaines techniques modernes utilisées pour accélérer le processus de démarrage, telles que la préconnexion et le préchargement ou la mise en cache.
Tant que vous n'avez pas vraiment une bonne idée de la façon dont vous allez utiliser un système et de la configuration de ce système, il est presque impossible d'obtenir des tailles de partition correctes. Comme l'a souligné un autre utilisateur, si Kali utilise/opt par exemple, soit vous devez créer une partition opt, soit/opt utilisera l'espace alloué à /. Si vous ne savez pas si c'est le cas ou si vous ne savez pas à quoi il sert, alors vous ne pouvez pas juger de la taille de la partition.
Les exigences que vous avez pour l'apprentissage sont très différentes de celles que vous auriez pour un système de test de stylo de production ou d'audit de sécurité/système d'enquête. Lors de l'apprentissage, ce que vous devez souvent faire est de remettre rapidement et facilement le système dans un état connu (bon) (par défaut). Pour cette raison, j'utiliserais souvent une image virtuelle, mais ce n'est pas vraiment faisable sur un netbook. Pour un système de production, de test de plumes, d'audit de sécurité, etc., je voudrais quelque chose de très protégé. Je configurerais probablement Kali sur un support en lecture seule avec un support de stockage dédié (et effaçable). Cela augmenterait ma confiance que mon système ne sera pas modifié ou altéré lorsqu'il est utilisé dans un environnement hostile et je peux avoir une confiance accrue que chaque fois que je redémarrerai le système, il reviendra à une configuration connue, etc.
Je pense que vous trouverez Kali Linux un défi pour commencer. Dire que vous allez apprendre la sécurité en utilisant Kali, c'est un peu comme dire d'aller à lern pour voler en montant dans un avion de chasse. La facilité avec laquelle vous le trouverez dépendra de votre expérience Linux et de votre connaissance des systèmes basés sur Debian. J'irais simplement avec une installation standard avec une seule partition qui peut facilement être effacée et réinstallée. Plus tard, selon ce que vous trouvez et décidez de faire, vous pouvez envisager des configurations plus robustes et sécurisées. Gardez également à l'esprit que Kali est en fait relativement nouveau et a toujours ses propres problèmes de dentition. Rester avec une installation par défaut contribuera à réduire la probabilité de déclencher des bogues dans la configuration de Kali, ce qui peut être très déroutant lorsque vous apprenez. En bout de ligne, restez simple pour commencer.
Toutes les autres réponses sont de bons points de départ.
Autrefois (début des années 90), les disques étaient suffisamment petits pour que nous ayons la possibilité d'installer l'Unix et de placer/usr sur son propre disque physique. Après l'installation, nous avons pu définir un cavalier en lecture seule sur le disque physique. À l'époque de tout le texte en clair sur Internet, il était courant de s'enraciner. La bonne chose à propos de cette configuration est que même une fois que vous avez été rooté, vous avez été protégé contre les fichiers dans/usr.
On pourrait imaginer faire quelque chose de similaire en créant/bin,/sbin et/usr sur des systèmes de fichiers qui sont ro, exec et en ayant tous les autres systèmes de fichiers noexec.