GNU/Linux >> Tutoriels Linux >  >> Linux

Surveillance de la sécurité sous Linux avec Tripwire

Chaque administrateur système perd le sommeil de temps en temps à cause des intrusions dans le système. Personne ne veut qu'un serveur dont il est responsable soit compromis. Le problème est que, même si vous examinez régulièrement les journaux, une intrusion système vraiment efficace ne laisse pas traîner des journaux évidents. Il est donc difficile de savoir avec certitude si vos systèmes sont sécurisés.

En plus de définir SELinux sur Enforcing et en mettant en œuvre des pentests réguliers, l'un des meilleurs moyens de surveiller votre système pour les failles de sécurité est de - eh bien, surveiller votre système pour les failles de sécurité. Si cela semble plus facile à dire qu'à faire, alors vous devez essayer Tripwire. Tripwire est un outil de surveillance de l'intégrité des fichiers qui surveille les modifications apportées aux fichiers critiques de votre système. Cet article vous montre comment installer, configurer et utiliser Tripwire sur votre réseau.

Tripwire est à la fois une entreprise et une base de code open source. Vous pouvez acheter une surveillance auprès de Tripwire ou utiliser le code GPLv2 qu'ils ont mis à disposition sur GitHub. Les compromis habituels s'appliquent. Si vous payez pour cela, Tripwire fait la majeure partie du travail acharné pour vous, et tout ce que vous avez à faire est de prêter attention aux rapports. Si vous implémentez Tripwire vous-même, vous devez alors l'installer et le configurer vous-même.

Installation

Pour installer Tripwire sur RHEL ou CentOS, vous devez ajouter le référentiel Extra Packages for Enterprise Linux (EPEL). Sur RHEL 8, vous devez activer le codeready-builder option dans subscription-manager :

$ sudo repos --enable "codeready-builder-for-rhel-8-$(arch)-rpms"

Sur CentOS, vous devez activer PowerTools :

$ sudo dnf config-manager --set-enabled PowerTools

Pour installer :

$ sudo dnf install -y epel-release

Avec EPEL maintenant ajouté à votre liste de référentiels, installez Tripwire :

$ sudo dnf install -y tripwire

Définition d'un nom d'hôte

Avant de configurer Tripwire, vous devez définir un nom d'hôte pour votre serveur s'il n'en a pas déjà un. Les noms d'hôte sont un point de confusion fréquent, alors lisez mon article sur la définition des noms d'hôte pour vous assurer que vous êtes clair sur ce que vous définissez. Sur CentOS, RHEL et Fedora, vous pouvez définir un nom d'hôte avec hostnamectl :

$ sudo hostnamectl set-hostname --pretty "Rockhopper tripwire demo machine"
$ sudo hostnamectl set-hostname --static rockhopper

Génération de clés

Ensuite, vous devez générer des clés de chiffrement pour Tripwire. Après tout, le but de Tripwire est d'empêcher les attaquants de couvrir leurs traces, donc les données de Tripwire doivent être fortement cryptées.

Tout d'abord, créez une clé locale avec le twadmin outil :

$ sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key

Créez ensuite une clé de site :

$ sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key

Dans les deux cas, vous devez fournir une phrase secrète pour chaque clé. Gardez ces phrases secrètes privées et sécurisées !

Tripwire utilise deux clés différentes pour le chiffrement :la clé locale, qui est unique pour chaque serveur, et une clé de site, que vous pouvez utiliser sur tous les systèmes de votre organisation. La clé de site est une fonctionnalité importante car elle permet à un responsable informatique de dicter une politique de sécurité unique pour l'organisation, et elle peut être mise à jour de manière centralisée, signée avec la clé de site, puis distribuée avec Ansible ou scp pour une utilisation sur chaque serveur. Chaque administrateur de serveur a toujours une clé locale unique, donc même si le fichier de politique de sécurité ne peut pas être modifié, ils peuvent toujours accéder à Tripwire pour les mises à jour et les rapports.

Fichier de configuration Tripwire

Ensuite, vous devez créer un fichier de configuration de base pour Tripwire. La plupart des valeurs par défaut dans la configuration sont acceptables, et rien n'est nécessaire à modifier à moins que vous ne sachiez que votre système diffère de manière significative de ce que vous voyez dans l'exemple de fichier de configuration fourni à /etc/tripwire/twcfg.txt . Par défaut, Tripwire utilise sendmail pour vous envoyer des alertes par e-mail. Si vous utilisez postfix, il n'est cependant pas nécessaire de le modifier, car postfix fournit sendmail pseudonymes. Les emplacements de vos clés de chiffrement et de votre fichier de stratégie sont également définis dans le fichier de configuration. Vérifiez donc qu'ils sont corrects.

Lorsque vous êtes satisfait des options de configuration, utilisez twadmin pour valider le texte de configuration et l'écrire dans un fichier appelé /etc/tripwire/tw.cfg , qui est signé avec la clé du site. La signature du fichier de configuration nécessite la phrase secrète de votre clé de site.

$ sudo twadmin --create-cfgfile --site-keyfile=/etc/tripwire/site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg

Syntaxe du fichier de stratégie

Le fichier de politique est l'endroit où vous mettez la plupart du travail pour Tripwire. Votre politique Tripwire dicte les fichiers à surveiller et ceux à ignorer, et ceux qui se situent quelque part entre les deux. Les deux extrêmes sont tout aussi importants. Si vos rapports Tripwire quotidiens envoient un faux positif pour chaque fichier utilisateur qui change au cours d'une journée de travail, vous apprendrez rapidement à ignorer complètement vos rapports Tripwire.

L'exemple de fichier de politique fourni avec l'installation EPEL de Tripwire est construit autour d'une installation complète d'une station de travail Fedora. Vous devez le personnaliser pour votre système à moins que vous n'exécutiez une installation complète de Fedora Workstation, mais sa lecture vous donne une idée de ce que contient un fichier de politique standard. Pour décoder la notation Tripwire, passez en revue le twpolicy(4) page de manuel.

Les fichiers de stratégie peuvent être complexes, et il peut être utile de les considérer davantage comme un Sass ou Makefile qu'un fichier de configuration. Vous pouvez créer des variables , ou utilisez des règles par défaut, et des rules , et même des conditionals pour régir la manière dont Tripwire traite les répertoires et fichiers individuels.

Par exemple, le ReadOnly définit une règle pour les fichiers destinés à être en lecture seule. Dans ce contexte, "lecture seule" ne signifie pas que ses autorisations de fichier sont définies sur r-- (c'est-à-dire 400 ), mais qu'il n'y a généralement aucun changement attendu entre le moment de l'initialisation de Tripwire et un rapport quotidien, ou un rapport au jour le jour.

Une règle est structurée comme une ligne terminée par un point-virgule (; ) et délimité par une flèche (-> ). Ce bloc de code définit les exécutables Tripwire sur ReadOnly :

/sbin/siggen    ->   $(ReadOnly);
/sbin/tripwire  ->   $(ReadOnly);
/sbin/twadmin   ->   $(ReadOnly);
/sbin/twprint   ->   $(ReadOnly);

Le fichier d'exemple de Fedora utilise des variables pour définir la plupart des règles. Par exemple :

SEC_BIN = $(ReadOnly) ;  # Binaries that should not change

Ainsi, ses entrées pour surveiller les binaires Tripwire sont :

/sbin/siggen    ->   $(SEC_BIN);
/sbin/tripwire  ->   $(SEC_BIN);
/sbin/twadmin   ->   $(SEC_BIN);
/sbin/twprint   ->   $(SEC_BIN);

Les deux exemples ont exactement le même objectif, et la mise en œuvre est juste différente.

Utilisez l'exemple de fichier de stratégie comme point de départ et créez une stratégie pour surveiller votre système.

Génération d'un fichier de stratégie

Exclusivement à des fins de test, ajoutez cette ligne aux Tripwire Data Files rubrique :

/etc/tripwire/secrets -> $(SEC_CRIT); # proof of concept

Créer un critique fichier de test nommé secrets :

$ sudo touch /etc/tripwire/secrets

Générez votre fichier de stratégie avec twadmin :

$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt

Entrez la phrase secrète de votre clé de site lorsque vous y êtes invité.

Il en résulte un fichier signé et crypté, /etc/tripwire/tw.pol .

Initialisation de Tripwire

Une fois vos clés générées, votre configuration définie et un fichier de stratégie en place, vous pouvez maintenant initialiser Tripwire :

$ sudo tripwire --init

Entrez votre local mot de passe clé lorsque vous y êtes invité.

Si vous voyez des avertissements, lisez-les attentivement et corrigez les entrées erronées dans votre fichier de stratégie. Il n'est pas rare que votre première tentative sur un fichier de stratégie, en particulier lorsqu'il est basé sur un fichier existant, référence des fichiers qui n'existent pas réellement sur votre système. Vous pouvez résoudre ce problème en installant les fichiers manquants ou en supprimant les références à ceux-ci de votre /etc/tripwire/twpol.txt fichier maître.

Si vous deviez apporter des modifications, mettez à jour votre fichier de stratégie en le régénérant, puis réinitialisez votre base de données :

$ sudo twadmin --create-polfile \
--site-keyfile=/etc/tripwire/site.key \
/etc/tripwire/twpol.txt
$ sudo tripwire --init

Vous devriez le faire jusqu'à ce que vous ayez atteint un bon point de départ. Une fois que vous avez une base de données de départ saine, vous ne devez pas réinitialiser votre base de données, mais utilisez plutôt le tripwire commande pour vérifier l'intégrité de votre système et, éventuellement, remplacer les différences acceptables avec le --interactive choix :

$ sudo tripwire --check --interactive

Affichage des rapports

L'installation EPEL de Tripwire crée cron travaux pour exécuter des rapports Tripwire et pour envoyer des rapports par e-mail à root . Vous pouvez également générer un rapport manuel :

$ sudo tripwire --check

Cette commande enregistre un fichier de rapport dans /var/lib/tripwire/reports (ou quel que soit l'emplacement que vous avez défini dans le fichier de configuration). Pour afficher ce fichier, utilisez le twprint commande :

$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-163425.twr

Pour voir un rapport avec une erreur, modifiez les secrets testez le fichier et exécutez un rapport :

$ sudo echo 1 > /etc/tripwire/secrets
$ sudo tripwire --check

Consultez ensuite le rapport :

$ sudo twprint --print-report --report-level 1 \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr
Added: "/var/lib/tripwire/rockhopper.twd.bak
Modified: "/etc/tripwire/secrets"

En supposant que vous êtes satisfait de la modification de votre fichier de test, vous pouvez mettre à jour la base de données de Tripwire :

$ sudo tripwire --update \
--twrfile /var/lib/tripwire/reports/`hostname`-20200317-164413.twr

Protégez vos systèmes

Tripwire est un moniteur de sécurité très précis et extrêmement pédant. Arrêtez de lutter pour analyser les journaux à la recherche de signes d'intrus et faites fonctionner Tripwire pour vous. Avec Tripwire, quand quelque chose change sur un système, vous le saurez et vous pourrez le gérer en conséquence.

[ Vous voulez en savoir plus sur la sécurité ? Consultez la liste de vérification de la sécurité informatique et de la conformité. ]


Linux
  1. Crypter et décrypter des fichiers avec une phrase secrète sous Linux

  2. Analysez votre sécurité Linux avec Lynis

  3. 5 conseils pour démarrer avec la sécurité des serveurs Linux

  4. Survivre à un audit de sécurité avec Enterprise Linux

  5. Équilibrer la sécurité Linux avec la convivialité

Surveillance des hôtes Linux et Windows avec Glances

Audit de sécurité Linux avec Lynis

Surveillance de la bande passante sous Linux avec Nethogs

Surveillance du serveur Linux avec iPhone/iPad

Connectez-vous avec une clé privée SSH sous Linux et macOS

Sécurité Linux contre Windows