I mitt senaste inlägg installerade vi logwatch samt OSSEC. Det är nu dags att få logwatch och OSSEC spela tillsammans i samma sandlåda. I det här inlägget ska jag diskutera hur man får logwatch sammanfatta den information som genereras av OSSEC.
Distributionsalternativ
Vi har två vägar vi kan följa för att ställa in det:
- Har logwatch tolka OSSEC loggar direkt.
- Har OSSEC skicka sina meddelanden till en Syslog typ server, kör logwatch på Syslog servern.
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. Problemet vi kommer att stöta på men innebär OSSEC varning filen. Loggposterna inte får normaliseras. 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 filtrera och sammanfatta varningsinformation.
Om vi går med alternativ # 2 kommer vi att kräva en annan låda att fungera som vår centraliserad loggning server. I syfte att ha den OSSEC-servern acceptera loggposterna från icke-agent system, har den för att lyssna på UDP/514. Detta är samma port som används av en centraliserad loggning server, och du kan inte ha två ansökningar dela på samma port (utom med Windows, men uttag tillgång är mycket rörigt). På plussidan kommer larm posterna blir normaliseras när de överförs till syslog servern så skapar en logwatch sammanställning skript kommer att bli mycket lättare. Vidare vet logwatch redan till de vanliga Syslog filerna, 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-kort. Detta beror på att 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 lagra information som genereras av OSSEC.
Så om det låter som jag styra dig mot alternativ # 2, du är helt korrekt. Med det sagt, jag ska faktiskt till att omfatta alternativ # 1 eftersom det är en betydligt mer komplicerad installation.
Hantering av 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: Ending rootcheck scan.
2010/02/18 14:27:06 ossec-syscheckd: INFO: Start syscheck scan.
2010/02/18 14:39:21 ossec-syscheckd: INFO: Ending 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 kommer att behöva skapa ett skript som vi kan kalla när det behövs som förstår formatet som visas ovan.
Börja med att flytta in 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 den här sidan:
Använd logwatch ": datum ';
min $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;
$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');
if ($ Debug> 5) {
print stderr "DEBUG: Inside ApplyLongDate ... \ n";
print stderr "DEBUG: Söker:". $ SearchDate. "\ N";
}
while (definierad ($ ThisLine = <STDIN>)) {
if ($ ThisLine = ~ m / ^ $ SearchDate / o) {
print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..: ..: .. / /;
skriva ut $ ThisLine;
}
}
# VI: shiftwidth = 3 syntax = perl tabstop = 3 et
När du sparar filen måste vi nu att ställa in rätt behörigheter:
chmod 755 applylongdate
Konfigurera loggfiler
Nästa vi måste berätta för logwatch var 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 den huvudsakliga OSSEC loggfilen:
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 avsluta filen. Därefter kommer vi att skapa konfigurationsfilen för återstående loggfiler:
VI ossec-alert.conf
Innehållet i denna filen ska som följer:
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. De standardbehörigheter bör vara acceptabel för vår inställning.
Konfigurering av OSSEC Tjänster
Sedan behöver vi definiera OSSEC tjänster och identifiera vad vi vill använda som en titel när rapporter genereras. Så här skapar den första filen:
cd / etc / logwatch / conf / services
VI ossec.conf
Innehållet i denna fil är ganska enkel:
Title = "OSSEC meddelanden"
Logfile = ossec
När du är klar kan du spara och avsluta. Vi måste skapa en större 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 Posterna
Sedan behöver vi tala om för logwatch hur du formaterar loggposterna i rapporten. Vi kommer att behöva skapa en anpassning manus för varje uppsättning av tjänster. Vi kommer att börja med att använda en logwatch medföljande testskript, bara för att 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 den skriptet bör utgöra det som följas:
#! / Bin / bash
# Det här är så fint script som visar dig raderna du kommer att
# Att bearbeta och rapportera. Det kommer först att visa
# Standard miljövariabler och sedan tar STDIN och
# Dumpa det tillbaka ut till STDOUT.
# Dessa är de vanliga miljövariabler. Du kan definiera
# Mer i din tjänst config fil (se ovan).
echo "Datumintervall: $ LOGWATCH_DATE_RANGE"
echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Level: $ LOGWATCH_DEBUG"
# Nu tar STDIN och dumpa det till STDOUT
katt
Skapa nu din andra skript:
VI ossec-alert
och inkluderar exakt samma innehåll:
#! / Bin / bash
# Det här är så fint script som visar dig raderna du kommer att
# Att bearbeta och rapportera. Det kommer först att visa
# Standard miljövariabler och sedan tar STDIN och
# Dumpa det tillbaka ut till STDOUT.
# Dessa är de vanliga miljövariabler. Du kan definiera
# Mer i din tjänst config fil (se ovan).
echo "Datumintervall: $ LOGWATCH_DATE_RANGE"
echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Level: $ 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 *
Testa 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 om varje tjänst, en i taget:
logwatch-service ossec | less
logwatch-service ossec-varning | less
Ytterligare anpassning
När du får allt det ovanstående fungerar kan du fokusera på att få logwatch att filtrera och sammanfatta loggposterna. Logwatch är ganska flexibel och du kan anpassa produktionen något sätt du vill. En av de trevliga sakerna med ovanstående testskriptet ovan är att den visar dig exakt vad du har att arbeta med. Så med lite reguljärt uttryck magi kan du sammanfatta poster som du finner lämpligt. För vissa idéer, kolla in filerna under:
/ Usr / share / logwatch / scripts / tjänster
Dessa är de förvalda sammanfattningen skript som medföljer logwatch. Specifikt ta en titt på filerna "pam" och "sshd". De är bra exempel på både en enkel och en komplicerad uppsättning sammanfattande filter.
När du utveckla dina skript noga till $ LOGWATCH_DETAIL_LEVEL "variabel. Detta kommer att tillåta dig att anpassa utnivån av rapporten beroende på hur mycket informationsnivån användaren är ute efter. Till exempel, medan du fortfarande i ovanstående tjänster katalogen genom att köra 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öka efter filen för en viss textsträng. I detta 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 samma som variabeln $ LOGWATCH_DETAIL_LEVEL ". Detta är att spara dem lite skriva.
Tryck nu på snedstreck knappen igen följt av Enter. Detta kommer att gå igenom filen till nästa förekomst av "detalj". Du bör se:
if ($ Detaljer> = 20) {
SEK Användare {$ USER} {$ Host} {$ Metod} + +;
} Else {
if ($ Host! ~ / $ IgnoreHost /) {
SEK Användare {$ USER} {$ Host} {"(alla)"} + +;
Notera författaren ger mer information om detaljnivån är inställd på 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 författaren belånade denna teknik.
Nu sida ner till slutet av filen och du bör se detta uttalande:
if (nycklar% OtherList) {
print "\ n ** Omatchade Inlägg ** \ n";
print "$ _: $ OtherList {$ _} (s) \ n" foreach nycklar% OtherList;
}
Detta avsnitt är mycket viktigt, eftersom det är en slutlig catchall. 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, är hur jag vill att du ska hantera det.
Ovanstående uttalande tjänar samma syfte vid tolkning av loggfilen. All tidigare "om" uttalanden försöka matcha en viss textsträng i loggposten för att formatera det ordentligt. Detta inlägg säger "Om du inte har matchas och tryckt en särskild loggpost ännu, skriva ut den i ett avsnitt med titeln" ** Omatchade Poster ** ". Detta steg är mycket viktigt för utan det vi aldrig kommer att se oväntade poster. Det är de oväntade poster som är förmodligen den viktigaste och mest intressanta.
Exec Sammanfattning
Både OSSEC och logwatch är utmärkta gratis verktyg. OSSEC utmärker vid 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 förstå vad som pågår. Genom att kombinera de två verktyg som du kan skapa en mycket mer robust försvar på djupet hållning. Hela blir större än summan av delarna.



