Une solution générale simple et efficace consiste à utiliser logcheck .
sudo apt-get install logcheck
[edit /etc/logcheck/logcheck.conf to your liking]
logcheck analyse périodiquement tous les journaux efficacement (en commençant là où ils se sont arrêtés la dernière fois), filtre ce qu'il voit pour éliminer tout ce qui est considéré comme normal et envoie éventuellement des alertes par e-mail avec tout ce qui ne correspond pas aux modèles normaux / de routine.
L'idée principale est de faire attention à l'apparition de toute entrée sérieuse dans vos fichiers journaux, tous, tout le temps, afin que vous n'ayez pas à le faire.
logcheck est hautement configurable (man logcheck
). Vous pouvez tout configurer, y compris:
- fréquence des contrôles
- quels fichiers journaux sont vérifiés
- ce qui est considéré comme normal vs non
- où envoyer les alertes (événements anormaux)
et plus. Vos modèles ignorés (normaux / routiniers) résident dans plusieurs fichiers sous /etc/logcheck/ignore.d.* et vous pouvez les personnaliser selon vos besoins; principalement, vous voudrez peut-être ajouter vos propres modèles à ignorer. Le package Ubuntu par défaut est déjà livré avec un ensemble complet de fichiers avec des motifs d'ignorance pour de nombreux services, donc il n'y a pas grand-chose à ajouter à moins que votre système ne soit inhabituel dans son fonctionnement. Il existe 3 ensembles de profils de fichiers ignorés préconfigurés : ignore.d.workstation , ignore.d.server et ignore.d.paranoid parmi lesquels vous pouvez choisir.
L'idée principale derrière logcheck est que les différents services exécutés sur un système enregistrent déjà des événements anormaux. Par exemple, sshd ou pam enregistrent déjà les échecs d'authentification. Les principaux composants manquants sont donc:
- filtrer ce qui est normal
- Le service d' alerte
Les deux sont fournis par logcheck dans un package pratique. Vous pouvez combiner logcheck avec toute autre journalisation. Par exemple, iptables peut être configuré pour syslog toutes les tentatives de connexion réseau qui ne sont pas explicitement autorisées en ajoutant les règles:
iptables -A input -j LOG
iptables -A input -j DROP
immédiatement après toutes les règles d'autorisation.
Je trouve que logcheck est beaucoup plus utile que logwatch (suggéré dans d'autres réponses) car il est livré avec un très grand nombre de règles pour ignorer ce qui est considéré comme une activité normale. Le résultat est un rapport signal / bruit beaucoup plus élevé dans les alertes qu'il envoie. YMMV.
Un autre avantage de logcheck est qu'il est orthogonal à n'importe quel service qui se connecte, donc il n'y a pas de duplication de fonction. Chaque fois que vous ajoutez un nouveau service qui utilise syslog
pour enregistrer des événements, anormaux ou non, dans n'importe quel fichier sous /var/log
vous commencez à recevoir des alertes automatiquement.
COMMENT:
Étant donné que logcheck
vient déjà préconfiguré, deux lignes en haut de cette réponse couvrent essentiellement tout ce dont vous avez besoin pour commencer. Il suffit de l'installer et de parcourir le fichier de configuration supérieur:
/etc/logcheck/logcheck.conf
pour changer votre adresse e-mail afin que les logcheck
e-mails vous alertent.
Voici une référence conviviale passant en revue la deuxième étape plus en détail . Comme Ubuntu est basé sur Debian, ces instructions devraient également fonctionner sur Ubuntu.
Voici une autre bonne référence .
Une fois l'installation terminée, le processus d'amélioration continue démarre. Au fil du temps, vous affinez vos règles pour ignorer tout ce que vous savez déjà et que vous ne pensez pas devoir inquiéter. Ce processus de raffinement est aussi simple que l'ajout de lignes de texte à un fichier dans votre éditeur de texte préféré.
Chaque ligne d'un fichier ignoré est une expression régulière étendue (voir man 7 regex
), mais vous pouvez utiliser des chaînes simples tant qu'elles correspondent à la ligne de journal que vous souhaitez ignorer. Rappelez - vous que des personnages comme *
, ?
, « + », []
, ()
sont spéciaux dans une expression régulière, donc si elles apparaissent effectivement dans les lignes de journaux, vous devez leur échapper avec une barre oblique inverse \
dans l'ignorer les fichiers.
En d'autres termes: si vous recevez une alerte que vous ne souhaitez pas recevoir, regardez la ligne de journal qui vous a été envoyée par e-mail et ajoutez un modèle qui lui correspond, comme une ligne pour tout fichier ignoré de votre choix. Je suggère d'utiliser
/etc/logcheck/ignore.d.<yourloglevel>/my-ignores
votre fichier ignorer personnel. Où se <yourloglevel>
trouve l'un de paranoid
, server
ou
workstation
(comme vous l'avez déjà sélectionné dans le fichier de configuration principal:) /etc/logcheck/logcheck.conf
. Regardez les exemples dans d'autres fichiers ignorer pour voir comment prendre en compte le texte qui change tout le temps comme les ID de processus ou les horodatages. Il y a beaucoup d'exemples existants à apprendre.
Un dernier conseil: logcheck
est livré avec un petit utilitaire utile appelé logcheck-test
qui est très pratique pour tester de nouvelles règles. man logcheck-test
pour plus de détails.