I mitt siste innlegg installerte vi Logwatch samt OSSEC. Det er nå på tide å få Logwatch og OSSEC spille sammen i samme sandkassen. I dette innlegget vil jeg diskutere hvordan komme Logwatch å oppsummere den informasjonen som blir generert av OSSEC.
Distribusjon Options
Vi har to veier vi kan følge for å sette dette opp:
- Har Logwatch analysere OSSEC logger direkte.
- Har OSSEC sende sine meldinger til en Syslog typen server, og deretter kjøre Logwatch på Syslog server.
Fordelen til alternativ nr. 1 er at vi bare trenger ett system. Logwatch skal kjøres på systemet vert for OSSEC server. Problemet vi skal kjøre inn likevel innebærer OSSEC varselet fil. Loggoppføringer ikke får normalisert. Dette betyr at formatet kan endre seg fra oppføring til oppføring, og kan også spre seg over flere linjer. Det kommer til å bli en ekte mareritt å lage en Logwatch skript som vil filtrere og oppsummere varselet informasjon.
Hvis vi går med alternativ nr. 2, vil vi kreve en annen boks til å handle som vår sentralisert logging server. For å få OSSEC serveren godta loggoppføringene fra ikke-agent systemer, har det å lytte på UDP/514. Dette er den samme porten som brukes av en sentralisert logging server, og du kan ikke ha to programmer deler de samme port (unntatt med Windows, men socket tilgangen er ekstremt rotete). På pluss-siden, vil varsle oppføringene blir normalisert når de er overført til syslog serveren slik skape en Logwatch sammendrag manus vil være langt enklere. Videre vet Logwatch allerede om standard Syslog filene, så vi vil ha mindre tilpasning arbeid å gjøre.
Til slutt nevnte jeg i et tidligere innlegg at OSSEC ikke er designet for å være et SIM. Dette er fordi det ikke ta opp alt, bare hendelser som genererer et varsel. Så vi er sannsynligvis kommer til å ha en sentralisert server uansett, og det er fornuftig å ha den lagre informasjonen blir generert av OSSEC.
Så hvis det høres ut som jeg styrer deg mot alternativ # 2, du er absolutt korrekt. Med det sagt, jeg faktisk kommer til å dekke alternativ # 1 som det er et langt mer komplisert oppsett.
Dealing med dato / klokkeslett Frimerker
Ta en titt på de viktigste OSSEC logfile og du skal se omtrent slik ut:
[Root @ Fubar logger] # 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: Starter syscheck scan.
2010/02/18 14:39:21 ossec-syscheckd: INFO: Ending syscheck scan.
Legg merke til måten dato / klokkeslett-stempel er formatert. Dette er annerledes enn de fleste applikasjoner, så det første vi trenger å gjøre er å fortelle Logwatch hvordan man skal håndtere dette formatet. Vi må lage et skript som vi kan ringe når det trengs som forstår formatet vist ovenfor.
Start med å flytte inn i den delte scripts katalogen:
cd / usr / share / logwatch / scripts / delt
Bruk din favoritt editor, lage en fil som heter "applylongdate":
VI applylongdate
Her er hva du trenger innsiden av den filen. Føl deg fri til å kopiere / lime inn fra denne siden:
Bruk Logwatch ': datoer';
my $ 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: Looking For". $ SearchDate. "\ N";
}
while (definert ($ ThisLine = <STDIN>)) {
if ($ ThisLine = ~ m / ^ $ SearchDate / o) {
print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..:..:.. / /;
print $ ThisLine;
}
}
# Vi: shiftwidth = 3 syntaks = perl tabstop = 3 et
Når du lagrer filen, har vi nå må sette de riktige tillatelser:
chmod 755 applylongdate
Konfigurer loggfilene
Neste vi trenger å fortelle Logwatch hvor OSSEC log filene ligger. Hver gang du legger til nye loggfiler eller lage nye tjenester til å overvåke i Logwatch, bør du plassere endringer under / etc / logwatch katalogen. Vi skal lage to konfigurasjonsfiler. Den første vil håndtere OSSEC meldinger, og den andre vil håndtere OSSEC varsler og aktiv respons endringer.
La oss starte med å opprette konfigurasjonsfilen for de viktigste OSSEC loggfilen:
cd / etc / logwatch / conf / loggfiler
VI ossec.conf
Innholdet i filen skal være som følger:
Logfile = / var / ossec / logs / ossec.log
* ApplyLongDate =
Du kan nå lagre og avslutte filen. Deretter vil vi lage config-filen for de resterende loggfiler:
VI ossec-alert.conf
Innholdet av denne filen bør være som følger:
Logfile = / var / ossec / logs / aktiv-responses.log
Logfile = / var / ossec / logs / alarmer / alerts.log
Logfile = / var / ossec / logs / brannmur / firewall.log
Når du er ferdig, lagre og avslutte. Standard tillatelsene bør være akseptabelt for oppsett vår.
Konfigurere OSSEC Services
Deretter må vi definere OSSEC tjenester og identifisere hva vi vil bruke som en tittel når rapportene er generert. Her er hvordan du lager den første filen:
cd / etc / logwatch / conf / tjenester
VI ossec.conf
Innholdet i denne filen er ganske enkelt:
Title = "OSSEC Meldinger"
Logfile = ossec
Når du er ferdig kan du lagre og avslutte. Vi trenger å skape en mer fil i denne katalogen:
VI ossec-alert.conf
Innholdet i denne filen skal være:
Title = "OSSEC Alerts"
Loggfil = ossec-varsling
Når du er ferdig, lagre og avslutte som vanlig.
Parsing oppføringene
Deretter må vi fortelle Logwatch hvordan du formaterer loggoppføringene i rapporten. Vi må skape en tilpasning skript for hvert sett av tjenester. Vi skal starte med å bruke en Logwatch medfølgende testskriptet, bare for å kontrollere at alt fungerer.
Start med å flytte inn i den aktuelle katalogen:
cd / etc / logwatch / scripts / tjenester
Bruk din favoritt editor for å lage ditt første skript:
VI ossec
Innholdet i manuskriptet bør være som følger:
#! / Bin / bash
# Dette er så fint skript som vil vise deg de linjene du vil
# Være prosessering og rapportering på. Det vil først vise
# Standard miljøvariabler og så tar det STDIN og
# Dumpe det rett ut igjen til STDOUT.
# Dette er standard miljøvariabler. Du kan definere
# Mer i din tjeneste config fil (se ovenfor).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Nivå: $ LOGWATCH_DEBUG"
# Nå tar STDIN og dumpe det å STDOUT
cat
Nå opprette din andre skript:
VI ossec-varsling
og omfatter nøyaktig samme innhold:
#! / Bin / bash
# Dette er så fint skript som vil vise deg de linjene du vil
# Være prosessering og rapportering på. Det vil først vise
# Standard miljøvariabler og så tar det STDIN og
# Dumpe det rett ut igjen til STDOUT.
# Dette er standard miljøvariabler. Du kan definere
# Mer i din tjeneste config fil (se ovenfor).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Detalj Nivå: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Nivå: $ LOGWATCH_DEBUG"
# Nå tar STDIN og dumpe det å STDOUT
cat
Til slutt må vi stille de riktige tillatelsene:
chmod 755 ossec *
Testing Setup
Den enkleste måten å teste vår nye oppsettet er å kjøre kommandoen:
logwatch | less
Hvis du bare ønsker å se endringene, kan du kjøre en rapport på hver service, en om gangen:
logwatch-service ossec | less
logwatch-service ossec-varsling | less
Videre Customization
Når du får alle de ovennevnte arbeider, kan du fokusere på å få Logwatch å filtrere og oppsummere loggoppføringene. Logwatch er ganske fleksibel, og du kan tilpasse resultatet slik du vil. En av de fine ting om ovenstående testskriptet er høyere enn at den viser deg nøyaktig hva du har å jobbe med. Så med litt regulært uttrykk magi kan du oppsummere oppføringene som du anser som passende. For noen ideer, sjekk ut filene ligger under:
/ Usr / share / logwatch / scripts / tjenester
Disse er standard sammendraget skript som følger med Logwatch. Spesifikt, ta en titt på filene "pam" og "sshd". De er gode eksempler på både et enkelt og et komplekst sett av sammendrag filtre.
Etter hvert som du utvikler din scripts, betaler nær oppmerksomhet til $ LOGWATCH_DETAIL_LEVEL "variable. Dette vil tillate deg å tilpasse utgangsnivået av rapporten avhengig av hvor mye ordrikhet brukeren er ute etter. For eksempel, mens du fremdeles er i tjenestene ovenfor katalogen, kjører du følgende kommando:
mindre sshd
Når den første siden av filen innholdet vises, skriver:
/ Detalj <Enter Key>
Den omvendte skråstreken lar oss søke filen for en bestemt tekststreng. I dette tilfellet er vi søker etter ordet "Detalj". Når du trykker Enter søket vil hoppe gjennom filen til den finner den første forekomsten av tekststrengen. Det vil også markere søkestrengen. I den første kampen vil du merke at forfatteren tildelt variabelen "$ Detalj" å være den samme som variabelen $ LOGWATCH_DETAIL_LEVEL ". Dette er for å spare dem noen skrive.
Nå trykker backslash-tasten igjen etterfulgt av Enter-tasten. Dette vil hoppe gjennom filen til den neste forekomsten av "Detalj". Du bør se:
if ($ Detalj> = 20) {
$ Brukere {$ Bruker} {$ Host} {$ Method} + +;
} Else {
if ($ Host! ~ / $ IgnoreHost /) {
$ Brukere {$ Bruker} {$ Host} {"(alle )"}++;
Merk forfatteren gir mer informasjon om detaljnivået er satt til 20 (halvveis mellom lav og medium) eller høyere. Hold hopping gjennom filen, og du vil se andre eksempler hvor forfatteren leveraged denne teknikken.
Nå side ned til slutten av filen, og du bør se denne uttalelsen:
if (nøkler% OtherList) {
print "\ n ** Enestående Entries ** \ n";
print "$ _: $ OtherList {$ _} tid (s) \ n" foreach nøkler% OtherList;
}
Denne delen er ekstremt viktig, da det er en endelig CatchAll. Tenk på en brannmur policy for et øyeblikk. De fleste av oss å skape en endelig regel som sier: "Hvis jeg ikke spesifikt tillate at et trafikkbilde gjennom, benekte det." Med andre ord, hvis noe uventet skjer, er det slik jeg vil at du skal håndtere det.
Ovennevnte uttalelse tjener samme formål under analyse av logfile. Alle de tidligere "hvis" uttalelser forsøk på å matche en bestemt tekststreng i loggen oppføring for å formatere den skikkelig. Dette innlegget sier "Hvis du ikke har matchet og skrevet en spesifikk loggoppføring ennå, skrive det ut i et avsnitt med tittelen" ** Enestående Entries ** ". Dette trinnet er ekstremt viktig fordi uten det vi aldri får se uventede oppføringer. Det er de uventede oppføringer som er trolig den viktigste og mest interessante.
Exec Summary
Både OSSEC og Logwatch er utmerket gratis verktøy. OSSEC utmerker seg ved å advare deg når et visst angrep mønster finner sted. Logwatch er et fantastisk verktøy for å oppsummere en tid blings av logger, slik mennesker kan faktisk gjøre oppfatning av hva som skjer. Ved å kombinere de to verktøyene kan du lage et langt mer robust forsvar i dybden holdning. Det hele blir større enn summen av delene.



