Je pense à mettre tout mon serveur Linux sous contrôle de version en utilisant git. La raison derrière cela est que cela pourrait être le moyen le plus simple de détecter les modifications / rootkits malveillants. Tout ce que je penserais naïvement est nécessaire pour vérifier l'intégrité du système: montez la partition linux chaque semaine à peu près en utilisant un système de secours, vérifiez si le référentiel git n'est toujours pas tempéré puis émettez un état git pour détecter les modifications apportées au système .
Mis à part le gaspillage évident dans l'espace disque, y a-t-il d'autres effets secondaires négatifs?
Est-ce une idée totalement folle?
Est-ce même un moyen sûr de vérifier les rootkits, car je devrais probablement exclure au moins / dev et / proc?
Réponses:
C'est une "mauvaise idée" (tm). En plus de tout le reste, votre référentiel fonctionnera lentement comme tout le monde et s'aggravera à mesure que chaque révision sera conservée.
Essayez une gestion centralisée, comme marionnette / cfengine / chef. Cela gardera les choses comme vous l'attendez et annulera les changements inattendus.
Combinez cela avec quelque chose comme iwatch pour obtenir des e-mails de modifications de fichiers non autorisées.
Combinez cela avec des fichiers rpm / deb si nécessaire pour déployer des applications personnalisées.
Ajoutez quelque chose comme rkhunter ou chkrootkit de temps en temps pour les coups de pied et vous devriez être prêt à partir.
Travail accompli.
la source
Une autre alternative consiste à mettre en place Tripwire , qui est un logiciel sous GPL que les araignées à travers tous les fichiers importants sur votre système et détermine qui ont changé de façon que vous avez défini comme inacceptable. Le changement peut être défini aussi simplement que mtime, via le numéro d'inode, jusqu'à des sommes de contrôle cryptographiquement solides.
Il faut un peu de configuration et de réglage si vous ne voulez pas obtenir beaucoup de rapports tous les soirs sur les fichiers modifiés dans
/var/run
, les modifications des fichiers client DHCP dans/etc
, etc., mais si vous rencontrez ce problème, cela peut être très utile en effet.La base de données de propriétés du fichier est signé avec une clé non connue à la machine, ce qui vous aide à avoir confiance qu'aucun outil a changé malicieusement la base de données ou les binaires Tripwire. Pour une certitude absolue, vous pouvez graver une copie des outils et des bases de données tripwire sur un support en lecture seule, qui peut être monté sur le serveur et utilisé pour vérifier toutes les modifications depuis la gravure du disque, si une analyse judiciaire complète est nécessaire.
Si vous allez faire cela, il est très important de configurer et de faire fonctionner tripwire avant que la machine ne soit déployée en production, ou vous ne pouvez jamais être complètement sûr qu'un utilisateur malveillant n'a pas eu la possibilité d'infecter la machine avant était filaire.
la source
Je ne pense pas que cela fonctionnera probablement, mais en tant qu'expérience, j'aimerais voir ce qui se passe si vous faites cela avec juste le dossier / etc. C'est là que la plupart des informations de configuration sont conservées.
la source
@Sirex a déjà fourni une très bonne réponse, mais si vous voulez faire un pas de plus en matière de sécurité, la meilleure façon d'y faire face est d'abord la prévention puis la détection.
Essayez de configurer un système avec / filesystem monté en lecture seule. Faire / tmp un ramfs séparé monté avec noexec, option nodev. Pour que le système fonctionne, il suffit vraiment que / var soit monté en lecture-écriture. Donc, sous / var, montez un fs avec rw, noexec, nodev et supprimez les autorisations d'écriture sur / var / tmp (afaik, il est rarement nécessaire aux démons et cela devrait être configurable). Utilisez également un correctif de sécurité pour votre noyau pour limiter davantage l'accès aux ressources par les utilisateurs, essayez grsec par exemple. Utilisez un pare-feu avec les règles les plus restrictives possibles.
Certaines distributions fournissent une documentation complète sur le renforcement du système. Par exemple:
la source
Je pense que c'est une bonne idée d'analyser les changements qu'un outil fait dans votre système:
... Supprimer la VM
Vous devrez ajouter un grand nombre de dossiers au
.gitignore
fichier, mais comme proc, etc.la source
Pour les situations où vous souhaitez simplement conserver certains dossiers de l'ensemble du système de fichiers sous contrôle de version, l'approche suivante peut fonctionner:
Tout d'abord, créez un référentiel Git au
/
niveau:Créez ensuite un
/.gitignore
qui ne met en liste blanche que certains dossiers, par exemple en liste blanche uniquement/path/to/versioned/config/folder/
(basé sur /programming//a/11018557/320594 ):Créez ensuite un premier commit:
Et puis ajoutez les dossiers supplémentaires que vous souhaitez sous contrôle de version à la demande.
PS:
En plus de la méthode précédente, si vous devez garder / etc / sous contrôle de version, vous préférerez peut-être utiliser
etckeeper
( https://etckeeper.branchable.com/ ) pour versionner ce dossier spécifique car il est plus spécialisé à cet effet ( par exemple, il s'engage automatiquement après l'installation des packages).la source