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é. ]