Kombinera logwatch och OSSEC - Del 4

18 feb 2010 av Chris Lämna en kommentar »

I min senaste inlägget installerade vi logwatch samt OSSEC. Det är nu dags att få logwatch och OSSEC spela tillsammans i samma sandlåda. I detta inlägg ska jag diskutera hur man kan få logwatch att sammanfatta den information som genereras av OSSEC.

Driftsättningsalternativ

Vi har två vägar vi kan följa för att ställa upp detta:

  1. Har logwatch tolka OSSEC loggarna direkt.
  2. Har OSSEC skicka sina meddelanden till en Syslog typ server, kör sedan logwatch om syslog-server.

Nyttan för alternativ # 1 är att vi bara behöver ett system. Logwatch kommer att köras på systemet värd för OSSEC servern. Det problem vi kommer att stöta på men innebär OSSEC alert filen. Logga poster inte får normaliserats. Detta innebär att formatet kan ändras från uppgift till uppgift, och kan även spridas över flera rader. Det kommer att bli en riktig mardröm att skapa en logwatch skript som kommer att filtrera och sammanfatta varningsinformation.

Om vi ​​går med option # 2 kommer vi att kräva en annan låda att agera som vår centraliserad loggning server. För att få OSSEC servern acceptera loggposter från icke-agent-system, har det att lyssna på UDP/514. Detta är samma port som används av en centraliserad loggning server och du kan inte ha två applikationer delar samma port (förutom med Windows, men uttaget är extremt rörigt). På plussidan, kommer meddelandet posterna blir normaliserade när de överförs till syslog-server så att skapa en logwatch sammanställning skript kommer att bli mycket lättare. Vidare vet logwatch redan till den standard syslog-filer, så vi kommer att ha mindre anpassning att göra.

Slutligen nämnde jag i ett tidigare inlägg som OSSEC inte är avsedd att vara ett SIM. Detta eftersom det inte spela in allt, bara de händelser som genererar en varning. Så vi förmodligen kommer att ha en central server i alla fall, och det är vettigt att ha det lagrar informationen som genereras av OSSEC.

Så om det låter som jag styr dig mot alternativ # 2, du är helt korrekt. Med det sagt, jag ska faktiskt till att omfatta alternativ # 1 eftersom det är en långt mer komplicerad installation.

Att handskas med datum / tid Frimärken

Ta en titt på de viktigaste OSSEC loggfilen och du bör se ut ungefär så här:

[Root @ Fubar loggar] # tail -3 / var / ossec / logs / ossec.log

2010/02/18 00:32:05 ossec-rootcheck: INFO: Slutdatum rootcheck scan.

2010/02/18 14:27:06 ossec-syscheckd: INFO: Start syscheck scan.

2010/02/18 14:39:21 ossec-syscheckd: INFO: Slutdatum syscheck scan.

Notera hur datum / tid stämpel formateras. Detta är annorlunda än de flesta applikationer, så det första vi behöver göra är att berätta logwatch hur man skall hantera detta format. Vi behöver skapa ett skript som vi kan kalla när det behövs som förstår det format som anges ovan.

Börja med att flytta in i den delade skript katalogen:

cd / usr / share / logwatch / scripts / delad

Använd din favorit editor, skapa en fil med namnet "applylongdate":

VI applylongdate

Här är vad du behöver inne i den filen. Känn dig fri att kopiera / klistra in från denna sida:

Använd logwatch ": datum ';

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

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

if ($ Felsök> 5) {

print stderr "debug: Inside ApplyLongDate ... \ n";

print stderr "debug: Söker:". $ SearchDate. "\ N";

}

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

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

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

PRINT $ ThisLine;

}

}

# VI: shiftwidth = 3-syntax = perl tabstop = 3 m

När du sparar filen måste vi nu ställa in rätt behörighet:

chmod 755 applylongdate

Konfigurera loggfilerna

Nästa vi måste berätta logwatch där OSSEC loggfiler finns. Varje gång du lägger till nya loggfiler eller skapa nya tjänster för att övervaka i logwatch bör du placera dina ändringar i filen / etc / logwatch katalogen. Vi kommer att skapa två konfigurationsfiler. Den första kommer att hantera OSSEC meddelanden, och den andra kommer att hantera OSSEC varningar och aktiva förändringar svar.

Låt oss börja med att skapa konfigurationsfilen för de viktigaste OSSEC loggfil:

cd / etc / logwatch / conf / loggfiler

VI ossec.conf

Innehållet i filen ska som följer:

Logfile = / var / ossec / logs / ossec.log

* ApplyLongDate =

Du kan nu spara och stänga filen. Därefter kommer vi att skapa konfigurationsfilen för återstående loggfiler:

VI ossec-alert.conf

Innehållet i denna fil bör vara så följas:

Logfile = / var / ossec / logs / aktiv responses.log

Logfile = / var / ossec / logs / varningar / alerts.log

Logfile = / var / ossec / logs / brandvägg / firewall.log

När du är klar, spara och avsluta. Standardinställningen behörigheter bör vara acceptabel för vår inställning.

Konfigurera OSSEC Tjänster

Sedan behöver vi definiera OSSEC tjänster och identifiera vad vi vill använda som rubrik när rapporterna genereras. Så här skapar den första filen:

cd / etc / logwatch / conf / tjänster

VI ossec.conf

Innehållet i denna fil är ganska enkelt:

Title = "OSSEC Meddelanden"

Loggfil = ossec

När du är klar kan du spara och avsluta. Vi behöver skapa en mer fil i denna katalog:

VI ossec-alert.conf

Innehållet i den här filen bör vara:

Title = "OSSEC alarm"

Logfile = ossec-alert

När du är klar, spara och avsluta som vanligt.

Analysera Inlägg

Sedan behöver vi berätta logwatch hur du formaterar loggposterna i rapporten. Vi behöver skapa en anpassning manus för varje uppsättning tjänster. Vi kommer att börja med en logwatch medföljande testskript, bara se till att allt fungerar.

Börja med att flytta in i lämplig katalog:

cd / etc / logwatch / scripts / tjänster

Använd din favorit editor för att skapa din första manus:

VI ossec

Innehållet i manus bör vara som följer:

#! / Bin / bash

# Det är så trevlig skript som visar dig de linjer du kommer

# Vara bearbetning och rapportering på. Det kommer först visa

# Standard miljövariabler och sedan tar det STDIN och

# Dumpa det rätt tillbaka ut till STDOUT.

# Detta är standard miljövariabler. Du kan definiera

# Mer i din tjänst konfigurationsfil (se ovan).

echo "Datumintervall: $ LOGWATCH_DATE_RANGE"

echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nu tar STDIN och dumpa det till STDOUT

katt

Skapa nu din andra skriptet:

VI ossec-alert

och inkluderar exakt samma innehåll:

#! / Bin / bash

# Det är så trevlig skript som visar dig de linjer du kommer

# Vara bearbetning och rapportering på. Det kommer först visa

# Standard miljövariabler och sedan tar det STDIN och

# Dumpa det rätt tillbaka ut till STDOUT.

# Detta är standard miljövariabler. Du kan definiera

# Mer i din tjänst konfigurationsfil (se ovan).

echo "Datumintervall: $ LOGWATCH_DATE_RANGE"

echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"

echo "Temp Dir: $ LOGWATCH_TEMP_DIR"

echo "Debug Nivå: $ LOGWATCH_DEBUG"

# Nu tar STDIN och dumpa det till STDOUT

katt

Slutligen måste vi ställa in rätt behörigheter:

chmod 755 ossec *

Test Setup

Det enklaste sättet att testa vår nya inställning är att köra kommandot:

logwatch | less

Om du bara vill se dina ändringar kan du köra en rapport för varje tjänst, en i taget:

logwatch service ossec | less

logwatch-service ossec-alert | less

Ytterligare anpassning

När du får alla ovanstående fungerar, kan du fokusera på att få logwatch att filtrera och sammanfatta loggposter. Logwatch är ganska flexibelt, och du kan anpassa produktionen precis som du vill. En av de trevliga saker om ovanstående provning skriptet är ovan att den visar dig exakt vad du har att arbeta med. Så med lite reguljärt uttryck magi du kan sammanfatta de poster som du finner lämpligt. För några idéer, kolla in de filer som finns under:

/ Usr / share / logwatch / scripts / tjänster

Dessa är standard sammanfattningen skript som medföljer logwatch. Närmare bestämt titta på filerna "pam" och "sshd". De är bra exempel på både en enkel och en komplicerad uppsättning sammandrag filter.

Som du utvecklar dina skript, ägna stor uppmärksamhet åt de $ LOGWATCH_DETAIL_LEVEL "variabel. Detta kommer att tillåta dig att anpassa utnivån i rapporten beroende på hur mycket informationsnivån användaren är ute efter. Till exempel, medan du fortfarande i ovanstående katalogtjänster, kör följande kommando:

mindre sshd

När den första sidan av filens innehåll visas, skriv in:

/ Detalj <Ange Key>

Det omvända snedstrecket låter oss Sök bland filer för en viss textsträng. I det här fallet är vi söker efter ordet "detalj". När du trycker Enter kommer sökningen att hoppa igenom filen tills den hittar den första förekomsten av textsträngen. Det kommer också att belysa söksträngen. I den första matchen kommer du att märka att författaren tilldelas variabeln "$ Detalj" att vara den samma som variabeln $ LOGWATCH_DETAIL_LEVEL ". Detta är att spara dem lite skriva.

Tryck nu på backslash igen följt av Enter. Detta kommer att hoppa genom filen till nästa förekomst av "detalj". Du bör se:

if ($ info> = 20) {

$ Användare {$ USER} {$ Host} {$ Metod} + +;

} Else {

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

$ Användare {$ USER} {$ Host} {"(alla )"}++;

Notera författaren ger mer information om detaljnivån är satt till 20 (halvvägs mellan låg-och medelstora) eller högre. Håll hoppa igenom filen och du kommer att se andra exempel där upphovsmannen belånade denna teknik.

Nu sida ner till slutet av filen och du bör se detta uttalande:

if (nycklar% OtherList) {

print "\ n ** Oöverträffad Entries ** \ n";

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

}

Detta avsnitt är mycket viktigt, eftersom det är en slutlig Fånga allt konto. Tänk på en brandvägg politik för ett ögonblick. De flesta av oss att skapa en slutlig regel som säger, "Om jag inte specifikt tillät en trafikmönstret igenom, förneka det." Med andra ord, om något oväntat händer, detta är hur jag vill att du ska hantera det.

Ovanstående uttalande tjänar samma syfte vid tolkning loggfilen. Alla de tidigare "om" uttalanden försöka matcha en specifik textsträng i loggen posten för att formatera det ordentligt. Detta inlägg säger "Om du inte har matchas och tryckt en specifik loggpost ännu, skriva ut den i ett avsnitt med rubriken" ** Oöverträffad Entries ** ". Detta steg är mycket viktigt för utan det vi aldrig kommer att se oväntade poster. Det är det oväntade poster som är förmodligen den viktigaste och mest intressanta.

Exec Sammanfattning

Både OSSEC och logwatch är utmärkta kostnadsfria verktyg. OSSEC utmärker sig varnar dig när en känd attack mönster sker. Logwatch är ett fantastiskt verktyg för att sammanfatta en tid bit av loggar så att människor kan faktiskt göra känsla för vad som pågår. Genom att kombinera de två verktygen kan du skapa en mycket mer robust försvar på djupet hållning. Helheten blir större än summan av delarna.

Relaterade inlägg:

  1. Kombinera logwatch och OSSEC
  2. Kombinera logwatch och OSSEC - Del 3
  3. Kombinera logwatch och OSSEC - Del 2
  4. Konfigurera en hantering Security Information System-Del 5
  5. Konfigurera en hantering Security Information System-Del 4

Annons

3 kommentarer

  1. John Li säger:

    Tack för bra arbete. Jag använder både OSSEC och logwatch och jag kan definitivt förbättra hållning med din vägledning här.

  2. Chris säger:

    Glad jag kunde hjälpa till! :)

  3. cozmic säger:

    Bra tips för att kombinera ossec loggar med logwatch!
    Har du lyckats att ansöka datumformat för ossec-alert loggfil också?

    Just nu får jag hela ossec-alert loggfil i min sammanfattning, inte bara det datumintervall som anges i logwatch (dvs igår). Det fungerar bra för ossec.log.

    Tack

Lämna ett svar