Die Kombination Logwatch und OSSEC - Teil 4

18. Februar 2010 von Chris Lassen Sie eine Antwort »

In meinem letzten Beitrag haben wir installiert Logwatch sowie OSSEC. Es ist nun Zeit, sich Logwatch OSSEC und spielen zusammen in der gleichen Sandbox. In diesem Beitrag werde ich erörtern, wie Logwatch bekommen, um die Informationen durch OSSEC generiert zusammenzufassen.

Deployment-Optionen

Wir haben zwei Wege, die wir verfolgen, es aufzusetzen kann:

  1. Haben Logwatch analysieren die OSSEC Logs direkt.
  2. Haben OSSEC senden ihre Warnungen an einen Syslog-Server-Typ, laufen dann Logwatch auf der Syslog-Server.

Der Nutzen für die Option Nr. 1 ist, dass wir nur noch ein System. Logwatch wird auf dem System als Host für die OSSEC Server ausgeführt werden. Das Problem, das wir gehen, um in ausgeführt werden, jedoch beinhaltet die OSSEC Alert-Datei. Log-Einträge nicht normiert zu werden. Dies bedeutet, das Format kann von Eintrag zu Eintrag zu ändern, und kann sogar über mehrere Zeilen verteilt. Es wird zu einem wahren Alptraum, ein Skript, das Logwatch filtern und zusammenfassen, werden die Alarm-Informationen zu erstellen.

Wenn wir mit der Option # 2 gehen, benötigen wir ein anderes Feld als unsere zentrale Protokollierung-Server fungieren. Um die haben OSSEC Server akzeptieren Log-Einträge aus Nicht-Agenten-Systeme, hat es bis auf UDP/514 hören. Dies ist der gleiche Port von einem zentralen Logging-Server verwendet, und Sie können nicht zwei Anwendungen teilen sich den gleichen Port (außer bei Windows, aber Socket-Zugang ist extrem chaotisch). Auf der positiven Seite, werden die Alarm-Einträge normalisiert, wenn sie an den Syslog-Server übertragen werden, so die Schaffung eines Logwatch Zusammenfassung Skript wird viel einfacher sein lassen. Weiterhin Logwatch bereits weiß um die Standard-Syslog-Dateien, so dass wir weniger Anpassungsarbeiten zu tun haben.

Schließlich erwähnte ich in einem früheren Beitrag, dass nicht OSSEC wurde entwickelt, um eine SIM sein. Das ist, weil es nicht nehmen alles, nur die Ereignisse, die eine Warnung generiert. Also wir sind wahrscheinlich zu einer zentralisierten Server sowieso wollen, und es Sinn macht, haben sie speichern die Informationen durch OSSEC generiert.

Also, wenn es, wie ich mich in Richtung lenken Sie Option Nr. 2 klingt, sind Sie absolut richtig. Mit dieser sagte, ich bin eigentlich vor sich geht zur Deckung Option Nr. 1, da es ein weit komplexeres Setup ist.

Der Umgang mit Datum / Zeit Stempel

Werfen Sie einen Blick auf die wichtigsten OSSEC Logfile und Sie sollten sehen, wie die folgende:

[Root @ fubar logs] # tail -3 / var / OSSEC / logs / ossec.log

2010.02.18 12.32.05 OSSEC-rootcheck: INFO: Ending rootcheck Scan.

2010.02.18 14.27.06 OSSEC-syscheckd: INFO: Ab syscheck Scan.

2010.02.18 14.39.21 OSSEC-syscheckd: INFO: Ending syscheck Scan.

Beachten Sie die Darstellung des Datums / Zeitstempel wird formatiert. Dies ist anders als die meisten Anwendungen, so dass das erste, was wir tun müssen, ist zu sagen Logwatch, wie man mit diesem Format umgehen. Wir müssen ein Skript, das nennen wir, wenn nötig, die versteht der gezeigten Form erstellen können.

Beginnen Sie mit dem Einzug in das gemeinsame Verzeichnis scripts:

cd / usr / share / logwatch / scripts / shared

Benutzen Sie Ihre Lieblings-Editor eine Datei namens "applylongdate":

vi applylongdate

Hier ist was Sie in dieser Datei benötigen. Fühlen Sie sich frei zu kopieren / einfügen von dieser Seite:

verwenden Logwatch ': zurückgeht;

my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;

$ SearchDate = Zeitfilter ('% Y /% m /% d% H:% M:% S');

if ($ Debug> 5) {

print STDERR "DEBUG: Inside ApplyLongDate ... \ n";

print STDERR "DEBUG: Suche nach:". $ SearchDate. "\ N";

}

while (defined ($ ThisLine = <STDIN>)) {

if ($ ThisLine = ~ m / ^ $ SearchDate / o) {

print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..: ..: .. / /;

print $ ThisLine;

}

}

# Vi: shiftwidth = 3 = Syntax Perl tabstop = 3 et

Sobald Sie die Datei speichern, müssen wir jetzt die richtigen Berechtigungen gesetzt werden:

chmod 755 applylongdate

Konfigurieren Sie die Log-Dateien

Als nächstes müssen wir sagen, wo die Logwatch OSSEC Log-Dateien befinden müssen. Immer, wenn Sie neue Log-Dateien hinzufügen oder erstellen Sie neue Dienste in Logwatch überwachen, sollten Sie Ihre Änderungen unter der / etc / logwatch Verzeichnis abgelegt werden. Wir werden zwei Konfigurationsdateien zu erstellen. Der erste übernimmt OSSEC Nachrichten, und die zweite wird OSSEC Warnmeldungen und aktive Reaktion Veränderungen umzugehen.

Lassen Sie uns, indem Sie die Konfigurationsdatei für die Haupt-OSSEC Log-Datei zu starten:

cd / etc / logwatch / conf / logfiles

vi ossec.conf

Der Inhalt der Datei sollte wie folgt sein:

LogFile = / var / OSSEC / logs / ossec.log

* = ApplyLongDate

Jetzt können Sie speichern und schließen Sie die Datei. Als nächstes erstellen wir die Konfigurationsdatei für die restlichen Log-Dateien:

vi OSSEC-alert.conf

Der Inhalt dieser Datei sollte wie folgt sein:

LogFile = / var / OSSEC / logs / aktiv-responses.log

LogFile = / var / OSSEC / logs / Warnungen / alerts.log

LogFile = / var / OSSEC / logs / Firewall / firewall.log

Einmal ausfüllen, speichern und schließen. Die Standard-Berechtigungen sollte akzeptabel sein, für unser Setup.

Konfigurieren OSSEC Dienstleistungen

Als nächstes müssen wir die OSSEC Dienstleistungen zu definieren und zu identifizieren, was wir als Titel verwenden, wenn die Berichte erzeugt werden sollen. Hier ist, wie die erste Datei zu erstellen:

cd / etc / logwatch / conf / Dienstleistungen

vi ossec.conf

Der Inhalt dieser Datei ist recht einfach:

Title = "OSSEC Nachrichten"

LogFile = OSSEC

Einmal abschließen können Sie speichern und schließen. Wir müssen noch eine Datei in diesem Verzeichnis zu erstellen:

vi OSSEC-alert.conf

Der Inhalt dieser Datei sollte sein:

Title = "OSSEC Warnungen"

LogFile = OSSEC-Alarm

Einmal abgeschlossen, speichern und schließen wie gewohnt.

Parsen der Einträge

Als nächstes müssen wir Logwatch sagen, wie man die Log-Einträge im Bericht formatieren. Wir müssen eine Anpassung Skript für jeden Satz von Dienstleistungen zu schaffen. Wir werden durch die Verwendung eines Logwatch mitgelieferten Test-Skript zu starten, nur um sicherzustellen, dass alles funktioniert.

Starten Sie, indem Sie in das entsprechende Verzeichnis:

cd / etc / logwatch / scripts / Dienstleistungen

Benutzen Sie Ihre Lieblings-Editor, um Ihre erste Skript zu erstellen:

vi OSSEC

Der Inhalt des Skripts sollte wie folgt sein:

#! / Bin / bash

# Das ist so schön Skript, das zeigen Ihnen die Linien werden Sie

# Werden die Verarbeitung und die Berichterstattung über. Es zeigt zuerst die

# Standard-Umgebungsvariablen und dann dauert es STDIN und

# Dump es gleich wieder heraus zu STDOUT.

# Dies sind die Standard-Umgebungsvariablen. Sie können festlegen,

# Mehr in Ihrem Service-Konfigurationsdatei (siehe oben).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Level: $ LOGWATCH_DEBUG"

# Nun nehmen STDIN und werfen sie auf die Standardausgabe

Katze

Erstellen Sie nun Ihre zweite Skript:

vi OSSEC-Alarm

und enthalten exakt die gleichen Inhalte:

#! / Bin / bash

# Das ist so schön Skript, das zeigen Ihnen die Linien werden Sie

# Werden die Verarbeitung und die Berichterstattung über. Es zeigt zuerst die

# Standard-Umgebungsvariablen und dann dauert es STDIN und

# Dump es gleich wieder heraus zu STDOUT.

# Dies sind die Standard-Umgebungsvariablen. Sie können festlegen,

# Mehr in Ihrem Service-Konfigurationsdatei (siehe oben).

echo "Date Range: $ LOGWATCH_DATE_RANGE"

echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Level: $ LOGWATCH_DEBUG"

# Nun nehmen STDIN und werfen sie auf die Standardausgabe

Katze

Schließlich müssen wir die entsprechenden Berechtigungen gesetzt werden:

chmod 755 OSSEC *

Prüfen des Aufbaus

Der einfachste Weg, unsere neue Konfiguration zu testen ist, um den Befehl auszuführen:

logwatch | less

Wenn Sie nur um Ihre Änderungen zu sehen, können Sie einen Bericht über jeden Dienst, einer nach dem anderen:

logwatch-Service OSSEC | less

logwatch-Service OSSEC-alert | less

Weitere Anpassungen

Sobald Sie alle der oben genannten Arbeiten, können Sie darauf, Logwatch zu filtern und zusammenfassen, die Log-Einträge zu konzentrieren. Logwatch ist sehr flexibel, und Sie können die Ausgabe, wie Sie wollen. Eines der schönen Dinge über die oben genannten Test-Skript oben ist, dass es zeigt Ihnen genau, was Sie damit zu arbeiten haben. Also mit ein wenig Magie regulären Ausdruck können Sie einen Überblick über die Einträge, wie Sie für angemessen halten. Für einige Ideen, sehen Sie sich die Dateien befinden sich unter:

/ Usr / share / logwatch / scripts / Dienstleistungen

Dies sind die Standard-Skripte mit Logwatch Zusammenfassung enthalten. Genauer gesagt, haben einen Blick auf die Dateien "Pam" und "sshd". Sie sind großartige Beispiele für eine einfache und zugleich eine komplexe Reihe von Filtern Zusammenfassung.

Wie Sie Ihre Skripte entwickeln, achten Sie genau auf die $ LOGWATCH_DETAIL_LEVEL "Variable. Dies ermöglicht es Ihnen, den Ausgangspegel des Berichts je nachdem wie viel Ausführlichkeit der Nutzer sucht anpassen. Zum Beispiel, während Sie noch in der oben genannten Dienste-Verzeichnis befinden, führen Sie den folgenden Befehl ein:

weniger sshd

Wenn die erste Seite der Inhalt der Datei angezeigt wird, geben Sie in:

/ Detail <Eingabe-Taste>

Der Backslash lässt uns suchen Sie die Datei für einen bestimmten Text-String. In diesem Fall sind wir für das Wort "Detail" suchen. Sobald Sie die Eingabetaste drücken, wird die Suche durch die Datei zu überspringen, bis es die erste Instanz der Zeichenfolge findet. Ein weiterer Höhepunkt ist der Such-String. Im ersten Spiel werden Sie feststellen, dass der Autor die Variable "$ Detail" auf die gleiche wie die Variable $ LOGWATCH_DETAIL_LEVEL "sein zugewiesen. Das ist sie zu retten Tipparbeit.

Jetzt drücken Sie die Backslash-Taste erneut durch die Enter-Taste. Dies wird durch die Datei in die nächste Instanz "Detail" zu springen. Sie sollten sehen:

if ($ Detail> = 20) {

$ Users {$ User} {$ host} {$ method} + +;

} Else {

if ($ Host! ~ / $ IgnoreHost /) {

$ Users {$ User} {} {$ Host "(alle)"} + +;

Beachten Sie, der Autor liefert mehr Informationen, wenn das Detail-Level bis 20 (auf halbem Weg zwischen niedrigen und mittleren) oder höher festgelegt ist. Halten Sie springen über die Datei, und Sie werden weitere Beispiele sehen, wo der Autor diese Technik genutzt.

Jetzt Seite bis zum Ende der Datei, und Sie sollten diese Aussage:

if (keys% OtherList) {

print "\ n ** Unübertroffene Einträge ** \ n";

print "$ _: $ OtherList {$ _} time (s) \ n" foreach keys% OtherList;

}

Dieser Abschnitt ist äußerst wichtig, da sie eine endgültige Catchall ist. Denken Sie an eine Firewall-Richtlinie für einen Moment. Die meisten von uns eine endgültige Regelung, die sagt: "Wenn ich nicht ausdrücklich erlauben eine Platzrunde durch, deny it". Mit anderen Worten, wenn etwas Unvorhergesehenes passiert, ist dies, wie ich Sie damit umgehen wollen.

Die obige Aussage dient dem gleichen Zweck beim Parsen der Logfiles. Alle bisherigen "if"-Anweisungen versuchen, eine bestimmte Textzeichenfolge in der Log-Eintrag entsprechen, um es richtig zu formatieren. Dieser Eintrag sagt "Wenn du nicht abgestimmt haben und druckte einen bestimmten Protokolleintrag noch, drucken Sie es aus in einem Abschnitt mit dem Titel" ** ** Unübertroffene Einträge ". Dieser Schritt ist sehr wichtig, weil wir ohne sie nie sehen werden unerwartete Einträge. Es sind die unerwarteten Einträge, die wahrscheinlich die wichtigste und interessanteste.

Exec Zusammenfassung

Sowohl OSSEC und Logwatch sind ausgezeichnet kostenlosen Tools. OSSEC zeichnet sich bei warne dich, wenn eine bekannte Angriffsmuster stattfindet. Logwatch ist ein hervorragendes Werkzeug für die Zusammenfassung einer Zeit, Stück-Logs so Menschen tatsächlich machen kann verstehen, was los ist. Durch die Kombination der beiden Werkzeuge Ihnen einen weitaus robuster Verteidigung eingehende Haltung erzeugen kann. Das Ganze wird größer als die Summe der Teile.

Related posts:

  1. Die Kombination Logwatch und OSSEC - Teil 3
  2. Die Kombination Logwatch und OSSEC - Teil 2
  3. Die Kombination Logwatch und OSSEC
  4. Aufbau von Sicherheitssystemen Information Management System-Teil 6

Anzeige

3 Kommentare

  1. John Li sagt:

    Vielen Dank für die großartige Arbeit. Ich benutze sowohl OSSEC und logwatch und ich kann definitiv verbessern die Körperhaltung mit Praktische Infos hier.

  2. Chris sagt:

    Froh, dass ich helfen konnte! :)

  3. Cozmic sagt:

    Gute Tipps für die Kombination von OSSEC Logs mit logwatch!
    Haben Sie es geschafft, Datumsformat für die OSSEC-Alarm Logfile auch bewerben?

    Im Moment bekomme ich die ganze OSSEC-Alert-Logfile in meiner Zusammenfassung, nicht nur den Datumsbereich in logwatch (also gestern) angegeben. Es funktioniert gut für die ossec.log.

    Dank

Lassen Sie eine Antwort