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:
- Har logwatch tolka OSSEC loggarna direkt.
- 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:


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.
Glad jag kunde hjälpa till!
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