Dans mon dernier post, nous avons installé Logwatch ainsi que OSSEC. Il est maintenant temps pour obtenir Logwatch et OSSEC jouer ensemble dans le même sandbox. Dans ce post, je vais discuter de la façon d'obtenir Logwatch de résumer l'information générée par OSSEC.
Options de déploiement
Nous avons deux chemins que nous pouvons suivre pour le mettre en place:
- Avez-Logwatch analyser les logs OSSEC directement.
- Avez-OSSEC envoyer ses alertes à un serveur de type Syslog, puis exécutez Logwatch sur le serveur Syslog.
L'avantage pour l'option # 1, c'est que nous avons seulement besoin d'un système. Logwatch sera exécuté sur le système hébergeant le serveur OSSEC. Le problème que nous allons courir en revanche implique le fichier OSSEC alerte. Les entrées du journal ne se normalise. Cela signifie que le format peut varier d'entrée à l'entrée, et peut même étalée sur plusieurs lignes. Il va être un véritable cauchemar pour créer un script qui va filtrer Logwatch et résumer les informations d'alerte.
Si nous optons pour l'option # 2, nous aurons besoin de l'autre case pour agir en tant que notre serveur journalisation centralisée. Afin d'avoir le serveur OSSEC accepter les entrées du journal de la non-agents, il doit écouter sur UDP/514. C'est le même port utilisé par un serveur de journalisation centralisée, et vous ne pouvez pas avoir deux applications partagent le même port (sauf avec Windows, mais l'accès est extrêmement salissant prise). Sur le plan positif, les entrées d'alerte obtiendrez normalisée quand ils sont transmis au serveur Syslog créant ainsi un résumé du scénario Logwatch sera beaucoup plus facile. En outre, Logwatch sait déjà sur les fichiers standard de syslog, nous aurons donc moins de travail de personnalisation à faire.
Enfin, je l'ai mentionné dans un précédent post que OSSEC n'est pas conçu pour être une carte SIM. C'est parce que ce n'est pas tout enregistré, seulement les événements qui génèrent une alerte. Donc, nous allons probablement vouloir un serveur centralisé de toute façon, et il est logique de le faire stocker les informations générées par OSSEC.
Donc, si ça sonne comme je vous diriger vers l'option n ° 2, vous avez absolument raison. Cela dit, je vais en fait à couvrir l'option # 1 car il s'agit d'une configuration beaucoup plus complexe.
Traiter avec date / heure Timbres
Jetez un oeil sur le fichier de log principal OSSEC et vous devriez voir semblable à la suivante:
[Root @ fubar journaux] # tail -3 / var / ossec / logs / ossec.log
18/02/2010 12:32:05 ossec-rootcheck: INFO: fin de balayage rootcheck.
18/02/2010 14:27:06 ossec-syscheckd: INFO: Démarrage syscheck balayage.
18/02/2010 14:39:21 ossec-syscheckd: INFO: fin syscheck balayage.
Notez la façon dont le timbre à date / heure actuelle est formatée. Ceci est différent de la plupart des applications, de sorte que la première chose que nous devrons faire est de dire Logwatch la façon de traiter avec ce format. Nous aurons besoin de créer un script que nous pouvons appeler en cas de besoin qui comprend le format indiqué ci-dessus.
Commencez par déplacer dans le répertoire partagé des scripts:
cd / usr / share / logwatch / scripts / partagé
En utilisant votre éditeur favori, créez un fichier nommé "applylongdate":
vi applylongdate
Voici ce dont vous avez besoin à l'intérieur de ce fichier. N'hésitez pas à copier / coller à partir de cette page:
utiliser Logwatch ': date';
my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;
$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');
if ($ Debug> 5) {
print STDERR "DEBUG: ApplyLongDate l'intérieur ... \ n";
print STDERR "DEBUG: Looking For:". $ SearchDate. "\ N";
}
while (defined ($ thisline = <STDIN>)) {
if ($ thisline = ~ m / ^ $ SearchDate / o) {
imprimer thisline $ = ~ s / ^ .... \ / .. \ / .. ..: ..: .. / /;
imprimer thisline $;
}
}
# Vi: shiftwidth = 3 = la syntaxe perl tabstop = 3 et
Une fois que vous enregistrez le fichier, il nous faut maintenant définir les autorisations appropriées:
chmod 755 applylongdate
Configurer les fichiers journaux
Ensuite, nous devons dire Logwatch où les fichiers journaux sont situés OSSEC. Chaque fois que vous ajoutez de nouveaux fichiers journaux ou de créer de nouveaux services à surveiller dans Logwatch, vous devez placer vos modifications sous le répertoire / etc / logwatch. Nous allons créer deux fichiers de configuration. La première sera de gérer les messages OSSEC, et le second gérer les alertes et les changements de réponse OSSEC actifs.
Commençons par créer le fichier de configuration pour le fichier journal principal OSSEC:
cd / etc / logwatch / conf / fichiers de log
ossec.conf vi
Le contenu du fichier doit être comme suit:
LogFile = / var / ossec / logs / ossec.log
* = ApplyLongDate
Vous pouvez maintenant sauvegarder et quitter le fichier. Ensuite, nous allons créer le fichier de configuration pour les fichiers journaux restants:
vi ossec-alert.conf
Le contenu de ce fichier doit être comme suit:
LogFile = / var / ossec / logs / active-responses.log
LogFile = / var / ossec / logs et les alertes / alerts.log
LogFile = / var / ossec / logs / pare-feu / firewall.log
Une fois terminé, sauvegarder et quitter. Les autorisations par défaut devrait être acceptable pour notre configuration.
Configuration des services OSSEC
Ensuite, nous avons besoin de définir les services OSSEC et d'identifier ce que nous voulons utiliser comme un titre, lorsque les rapports sont générés. Voici comment créer le premier fichier:
cd / etc / logwatch / conf / services
ossec.conf vi
Le contenu de ce fichier est assez simple:
Title = "OSSEC Messages"
LogFile = ossec
Une fois terminé, vous pouvez sauvegarder et quitter. Nous avons besoin de créer un autre fichier dans ce répertoire:
vi ossec-alert.conf
Le contenu de ce fichier doit être:
Titre = "Alertes OSSEC"
LogFile = ossec-alerte
Une fois terminé, enregistrer et quitter comme d'habitude.
Analyse Les entrées
Ensuite, nous devons dire à Logwatch comment formater les entrées du journal dans le rapport. Nous aurons besoin de créer un script de personnalisation pour chaque ensemble de services. Nous allons commencer par utiliser un script de test Logwatch fourni, il suffit de faire que tout fonctionne.
Commencez par déplacer dans le répertoire approprié:
cd / etc / logwatch / scripts / services
Utilisez votre éditeur favori pour créer votre premier script:
vi ossec
Le contenu du script doit être comme suit:
#! / Bin / bash
# Ceci est un script aussi bien que vous montrera les lignes que vous allez
# Être le traitement et les rapports sur. Il va d'abord afficher la
# Variables d'environnement standard et puis il faut STDIN et
# Déverser droit reculer vers STDOUT.
# Ce sont les variables d'environnement standard. Vous pouvez définir
# Plus dans votre fichier de configuration du service (voir ci-dessus).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Niveau de détail: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Niveau de débogage: $ LOGWATCH_DEBUG"
# Maintenant, prenez STDIN et les déverser sur STDOUT
chat
Maintenant, créez votre second script:
vi ossec-alerte
et comprennent le contenu exact mêmes:
#! / Bin / bash
# Ceci est un script aussi bien que vous montrera les lignes que vous allez
# Être le traitement et les rapports sur. Il va d'abord afficher la
# Variables d'environnement standard et puis il faut STDIN et
# Déverser droit reculer vers STDOUT.
# Ce sont les variables d'environnement standard. Vous pouvez définir
# Plus dans votre fichier de configuration du service (voir ci-dessus).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Niveau de détail: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Niveau de débogage: $ LOGWATCH_DEBUG"
# Maintenant, prenez STDIN et les déverser sur STDOUT
chat
Enfin, nous avons besoin de définir les autorisations appropriées:
chmod 755 * ossec
Test de la configuration
La meilleure façon de tester notre nouvelle configuration est d'exécuter la commande suivante:
logwatch | less
Si vous voulez seulement voir vos modifications, vous pouvez exécuter un rapport sur chaque service, un à la fois:
logwatch service ossec | less
logwatch service ossec-alerte | less
Une personnalisation plus poussée
Une fois que vous obtenez tous le fonctionnement ci-dessus, vous pouvez vous concentrer sur l'obtention Logwatch pour filtrer et résumer les entrées du journal. Logwatch est assez souple, et vous pouvez personnaliser la sortie comme vous le souhaitez. Une des choses gentilles sur le script de test ci-dessus est supérieur à celui qu'il vous montre exactement ce que vous avez à travailler avec. Donc, avec une magie expression régulière peu, vous pouvez résumer les entrées que vous jugez appropriée. Pour quelques idées, consultez les fichiers qui se trouvent sous:
/ Usr / share / logwatch / scripts / services
Ce sont les scripts de synthèse par défaut inclus avec Logwatch. Plus précisément, avoir un regard sur les fichiers "pam" et "sshd". Ils sont d'excellents exemples de la fois simple et un ensemble complexe de filtres de synthèse.
Comme vous développer vos scripts, une attention particulière à l'$ LOGWATCH_DETAIL_LEVEL «variable. Cela vous permettra de personnaliser le niveau de sortie du rapport en fonction de combien de verbosité de l'utilisateur est à la recherche d'. Par exemple, lorsque vous êtes encore dans le répertoire ci-dessus les services, exécutez la commande suivante:
moins sshd
Lorsque la première page du contenu du fichier est affiché, tapez:
/ Détail <Enter key>
La barre oblique inverse nous permet de rechercher dans le fichier pour une chaîne de texte particulier. Dans ce cas, nous sommes à la recherche pour le mot "Détail". Une fois que vous appuyez sur Entrée la recherche va sauter dans le fichier jusqu'à ce qu'il trouve la première occurrence de la chaîne de texte. Il mettra également en lumière la chaîne de recherche. Dans le premier match, vous remarquerez que l'auteur attribué la variable "$ Détail" pour être la même que la variable $ LOGWATCH_DETAIL_LEVEL ". C'est pour les sauver de la frappe.
Maintenant, appuyez sur la touche barre oblique inverse a été suivie par la touche Entrée. Cela sauter à travers le fichier à l'occurrence suivante de "Détail". Vous devriez voir:
if ($ Détail> = 20) {
$ Utilisateurs {$ user} {$ host} {$ Méthode} + +;
Else {}
if ($ Host! / ~ $ IgnoreHost /) {
$ Utilisateurs {$ user} {} {$ Host "(tous)"} + +;
Notez l'auteur fournit de plus amples renseignements, si le niveau de détail est fixé à 20 (mi-chemin entre faible et moyen) ou supérieur. Gardez sauter à travers le fichier et vous verrez d'autres exemples où l'auteur à profit cette technique.
Maintenant la page jusqu'à la fin du fichier et vous devriez voir cette déclaration:
if (keys% autreliste) {
print "\ n ** Entrées ** inégalées \ n";
print "$ _: $ autreliste {$ _} temps (s) \ n" foreach autreliste keys%;
}
Cette section est extrêmement important, car il est un fourre-tout final. Pensez à une politique de pare-feu pour un moment. La plupart d'entre nous de créer une règle définitive qui dit: «Si je n'avais pas spécifiquement permettre à un modèle de trafic par le biais, le nier". En d'autres termes, si quelque chose d'inattendu se produit, c'est ce que je veux que vous pour y faire face.
La déclaration ci-dessus sert le même objectif lors de l'analyse du fichier journal. Tous de la précédente "if" tenter de faire correspondre une chaîne de texte spécifique dans l'entrée du journal afin de le formater correctement. Cette entrée dit: «Si vous n'avez pas adapté et imprimé une entrée de journal spécifique, mais, de l'imprimer dans une section intitulée" ** Entrées inégalées ** ". Cette étape est extrêmement importante parce que sans elle nous ne verrons jamais entrées inattendues. Ce sont les entrées inattendues qui sont probablement le plus important et le plus intéressant.
Résumé Exec
Les deux OSSEC et Logwatch sont d'excellents outils gratuits. Excelle OSSEC à vous avertir quand un modèle d'attaque connue a eu lieu. Logwatch est un outil formidable pour résumer un morceau moment de journaux afin de les humains peuvent effectivement donner un sens à ce qui se passe. En combinant les deux outils que vous pouvez créer une défense beaucoup plus robustes en profondeur la posture. Le son ensemble devient supérieure à la somme des parties.
Related posts:


Merci pour l'excellent travail. J'utilise à la fois OSSEC et logwatch et je peux certainement améliorer la posture avec vos conseils ici.
Glad je pouvais l'aider!
De bons conseils pour combiner les journaux OSSEC avec logwatch!
Avez-vous réussi à appliquer le format de date pour le journal ossec-alerte aussi?
À l'heure actuelle je obtenir l'ensemble ossec-alerte logfile dans mon résumé, non seulement la plage de dates spécifiée dans logwatch (c.-à-hier). Il fonctionne bien pour la ossec.log.
Merci