Dans mon dernier post, nous avons installé Logwatch ainsi que OSSEC. Il est maintenant temps de Logwatch et OSSEC jouer ensemble dans le même sandbox. Dans ce post, je vais discuter de la façon d'obtenir Logwatch pour 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 est que nous besoin d'un seul 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 sont pas normalisées. Cela signifie que le format peut changer 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 Logwatch filtre et résumer les informations d'alerte.
Si nous passons avec l'option # 2, nous aurons besoin d'une autre boîte d'agir comme notre serveur de journalisation centralisée. Afin d'avoir le serveur OSSEC accepter les entrées du journal de la non-agents, il a pour é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 aura normalisés quand ils sont transmis au serveur Syslog afin de créer un script de synthèse Logwatch sera beaucoup plus facile. En outre, Logwatch sait déjà sur les fichiers Syslog standard, donc nous aurons moins de travail de personnalisation à faire.
Enfin, je l'ai mentionné dans un précédent poste que OSSEC n'est pas conçu pour être une carte SIM. C'est parce qu'il n'a pas tout enregistrer, 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 d'avoir le stocker les informations générées par OSSEC.
Donc, si ça sonne comme je vous orienter vers l'option # 2, vous avez absolument raison. Cela dit, je vais encore pour couvrir l'option # 1 car c'est une configuration beaucoup plus complexe.
Traiter avec date / heure
Jetez un oeil sur le fichier de log principal OSSEC et vous devriez voir semblable à la suivante:
[Root @ fubar logs] # 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 numérisation.
18/02/2010 14:39:21 ossec-syscheckd: INFO: Fin syscheck numérisation.
Notez la façon dont le timbre à date / heure actuelle est formaté. Ceci est différent de la plupart des applications, donc la première chose que nous devons faire est de dire Logwatch 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:
l'utilisation Logwatch ': Les dates';
my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;
$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');
if ($ Debug> 5) {
print STDERR "DEBUG: ApplyLongDate intérieur ... \ n";
print STDERR "DEBUG: Looking for:". $ SearchDate. "\ N";
}
while (defined ($ thisline = <STDIN>)) {
if ($ thisline = ~ m / ^ $ SearchDate / o) {
Imprimer thisline $ = ~ s / ^ .... \ / .. \ / .. ..:..:.. / /;
print $ 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 Log
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 traitera des alertes et des changements OSSEC réponse active.
Commençons par créer le fichier de configuration pour le fichier journal principal OSSEC:
cd / etc / logwatch / conf / logfiles
ossec.conf vi
Le contenu du fichier doit être aussi suivies:
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 aussi suivies:
LogFile = / var / ossec / logs / active-responses.log
LogFile = / var / ossec / logs / alertes / alerts.log
LogFile = / var / ossec / logs / firewall / 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 faire pour créer le premier fichier:
cd / etc / logwatch / conf / services
ossec.conf vi
Le contenu de ce fichier est assez simple:
Titre = "OSSEC Messages"
LogFile = ossec
Une fois terminée, 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.
Parsing 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; juste pour que tout fonctionne bien sûr.
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 aussi suivies:
#! / Bin / bash
# Ceci est un script aussi beau que vous montrera les lignes que vous allez
# Être le traitement et les rapports sur. Il va d'abord afficher les
# Variables d'environnement standard et ensuite il prend STDIN et
# Dump it de retour 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 STDOUT c'est de vidage
cat
Maintenant créez votre second script:
vi ossec alerte
et comprennent le contenu exact même:
#! / Bin / bash
# Ceci est un script aussi beau que vous montrera les lignes que vous allez
# Être le traitement et les rapports sur. Il va d'abord afficher les
# Variables d'environnement standard et ensuite il prend STDIN et
# Dump it de retour 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 STDOUT c'est de vidage
cat
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 d'alerte ossec | less
Une personnalisation plus poussée
Une fois que vous obtenez tous les travailler au-dessus, vous pouvez vous concentrer sur l'obtention Logwatch de filtrer et de résumer les entrées du journal. Logwatch est assez flexible, et vous pouvez personnaliser la sortie comme vous le souhaitez. Une des choses gentilles sur le script de test ci-dessus est supérieure à celle 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 situés sous:
/ Usr / share / logwatch / scripts / services
Ce sont les scripts de synthèse par défaut inclus avec Logwatch. Plus précisément, ont 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é 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 assigné la variable "$ Détail" pour être la même que la variable $ LOGWATCH_DETAIL_LEVEL ". C'est pour leur faire économiser quelques frappes.
Maintenant, appuyez sur la touche antislash nouveau suivi par la touche Entrée. Ce sera un saut dans le dossier à la prochaine occurrence de "Détail". Vous devriez voir:
if ($ Détail> = 20) {
Utilisateurs $ {$ utilisateur} {$ host} {$ Méthode} + +;
} Else {
if ($ Host! ~ / $ IgnoreHost /) {
Utilisateurs $ {$ utilisateur} {} {$ Host "(tous )"}++;
Remarque de l'auteur fournit de plus amples informations, si le niveau de détail est fixé à 20 (mi-chemin entre basse et moyenne) ou supérieure. Gardez sauter à travers le fichier et vous verrez d'autres exemples où l'auteur de cette technique à effet de levier.
Maintenant la page jusqu'à la fin du fichier et vous devriez voir cette déclaration:
if (keys% autreliste) {
print "\ n ** Entrées ** inégalée \ n";
print "$ _: $ autreliste {$ _} heure (s) \ n" foreach autreliste keys%;
}
Cette section est extrêmement important, car il est un fourre-finale. 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 à travers, le nier". En d'autres termes, si quelque chose d'inattendu arrive, voilà comment je veux que vous pour y faire face.
La déclaration ci-dessus a le même objectif lors de l'analyse du fichier journal. Toutes les précédentes instructions "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 indique «Si vous n'avez pas adapté et imprimé une entrée de journal spécifique encore, l'imprimer dans une section intitulée« Entrées ** ** incomparable ". Cette étape est extrêmement importante parce que sans elle nous ne verrons jamais les entrées inattendues. Il est des entrées inattendues qui sont probablement les plus importantes et plus intéressantes.
Résumé Exec
Les deux OSSEC et Logwatch sont d'excellents outils gratuits. OSSEC excelle à vous avertir quand un modèle d'attaque connus a lieu. Logwatch est un outil formidable pour résumer un morceau de temps de grumes afin humains peuvent réellement donner un sens à ce qui se passe. En combinant les deux outils, vous pouvez créer une défense beaucoup plus robustes en profondeur la posture. L'ensemble devient supérieure à la somme des parties.



