In mijn laatste bericht installeerden we logwatch als OSSEC. Het is nu tijd om logwatch en OSSEC samen spelen in dezelfde zandbak. In deze post zal ik bespreken hoe om te logwatch naar de informatie die wordt gegenereerd door OSSEC samen te vatten.
Deployment Options
We hebben twee paden die we kunnen volgen om dit op te zetten:
- Hebben logwatch direct ontleden de OSSEC logs.
- Hebben OSSEC haar waarschuwingen worden verzonden naar een Syslog-server typen, ren dan logwatch op de Syslog-server.
Het voordeel voor optie # 1 is dat we slechts een systeem nodig hebben. Logwatch zal worden uitgevoerd op het systeem als gastheer van de OSSEC server. Het probleem dat we gaan tegenkomen maar heeft betrekking op de OSSEC alert bestand. Logboekvermeldingen niet krijgen genormaliseerd. Dit betekent dat het formaat kan je veranderen van de toegang tot entry, en kan zelfs verspreid over meerdere regels. Het wordt een echte nachtmerrie voor een logwatch script dat zal filteren en een overzicht van de alert informatie te creëren.
Als we met optie # 2, zullen we nodig hebben nog een box op te treden als onze centrale logging server. Met het oog op de OSSEC server log Vermelding van niet-agent systemen, heeft het te luisteren op UDP/514. Dit is dezelfde poort die wordt gebruikt door een centrale logging server, en je kunt geen twee applicaties dezelfde poort (behalve met Windows, maar socket toegang is erg rommelig). Aan de positieve kant, verschijnt de melding inzendingen krijgen genormaliseerd als ze worden doorgegeven aan de Syslog-server, zodat het maken van een samenvatting logwatch script zal veel gemakkelijker. Verder logwatch weet nu al over de standaard Syslog-bestanden, dus we hebben minder aanpassingen werk te doen.
Ten slotte heb ik vermeld in een eerder bericht dat OSSEC niet is ontworpen om een SIM-kaart te zijn. Dit komt omdat het niet alles op, alleen de gebeurtenissen die een waarschuwing genereren. Dus we gaan waarschijnlijk naar een centrale server toch wilt, en is het zinvol om te slaan van de informatie die wordt gegenereerd door OSSEC.
Dus als het klinkt alsof ik stuur je naar optie # 2, bent u absoluut correct. Met dat gezegd, ben ik eigenlijk ga optie # 1 te dekken omdat het een veel ingewikkelder.
Omgaan met datum / tijd stempels
Neem een kijkje op de belangrijkste OSSEC logfile en je ziet de volgende strekking:
[Root @ Fubar logs] # tail -3 / var / ossec / logs / ossec.log
2010/02/18 12:32:05 ossec-rootcheck: INFO: Ending rootcheck scannen.
2010/02/18 14:27:06 ossec-syscheckd: INFO: Starten syscheck scannen.
2010/02/18 14:39:21 ossec-syscheckd: INFO: Ending syscheck scannen.
Let op de manier waarop de datum / tijd stempel is opgemaakt. Dit is anders dan de meeste toepassingen, dus het eerste wat we zullen moeten doen is vertellen logwatch hoe om te gaan met dit formaat. Moeten we een script dat we kunnen bellen wanneer dat nodig is, dat begrijpt het formaat hierboven te creëren.
Begin met het verhuizen naar de gedeelde scripts directory:
cd / usr / share / logwatch / scripts / shared
Gebruik uw favoriete editor, maak een bestand met de naam "applylongdate":
vi applylongdate
Hier is wat je nodig hebt binnenkant van dat bestand. Voel je vrij om te kopiëren / plakken van deze pagina:
gebruik logwatch ': data ";
my $ Debug = $ ENV {'LOGWATCH_DEBUG'} | | 0;
$ SearchDate = TimeFilter ('% Y /% m /% d% H:% M:% S');
if ($ Debug> 5) {
afdrukken STDERR "DEBUG: Inside ApplyLongDate ... \ n";
afdrukken STDERR "DEBUG: Op zoek naar:". $ SearchDate. "\ N";
}
while (defined ($ ThisLine = <STDIN>)) {
if ($ ThisLine = ~ m / ^ $ SearchDate / o) {
print $ ThisLine = ~ s / ^ .... \ / .. \ / .. ..:..:.. / /;
print $ ThisLine;
}
}
# Vi: shiftwidth = 3 syntax = perl tabstop = 3 et
Zodra u het bestand opslaat, we moeten nu de juiste machtigingen in te stellen:
chmod 755 applylongdate
Configureren The Log Files
Vervolgens moeten we logwatch vertellen waar de OSSEC log bestanden zich bevinden. Keer dat je nieuwe log bestanden of creëren van nieuwe services te monitoren in logwatch, moet u uw wijzigingen onder de / etc / logwatch directory. We gaan twee configuratie bestanden te maken. De eerste behandelt OSSEC boodschappen, en de tweede zal behandelen OSSEC waarschuwingen en actieve respons veranderingen.
Laten we beginnen met het maken van het configuratiebestand voor de belangrijkste OSSEC logbestand:
cd / etc / logwatch / conf / logfiles
vi ossec.conf
De inhoud van het bestand moet worden als volgt:
Logboek = / var / ossec / logs / ossec.log
* ApplyLongDate =
U kunt nu te slaan en het bestand. Vervolgens maken we het configuratiebestand voor de overige logbestanden:
vi ossec-alert.conf
De inhoud van dit bestand moet worden als volgt:
Logboek = / var / ossec / logs / actief-responses.log
Logboek = / var / ossec / logs / alerts / alerts.log
Logboek = / var / ossec / logs / firewall / firewall.log
Eenmaal voltooid, op te slaan en af te sluiten. De standaard permissies moet aanvaardbaar zijn voor onze setup.
Configureren van OSSEC Services
Vervolgens moeten we de OSSEC diensten te definiëren en wat we willen gebruiken als een titel wanneer rapporten worden gegenereerd identificeren. Hier is hoe u het eerste bestand:
cd / etc / logwatch / conf / services
vi ossec.conf
De inhoud van dit bestand is vrij simpel:
Title = "OSSEC Berichten"
Logboek = ossec
Eenmaal voltooid, kunt u opslaan en af te sluiten. We moeten nog een bestand aan te maken in deze directory:
vi ossec-alert.conf
De inhoud van dit bestand moet zijn:
Title = "OSSEC Alerts"
Logboek = ossec-alert
Eenmaal voltooid, op te slaan en af te sluiten zoals gebruikelijk.
Ontleden van de inzendingen
Vervolgens moeten we logwatch vertellen hoe de logboekvermeldingen format in het rapport. We zullen een maatwerk script voor elke set van diensten te creëren. We gaan starten met een logwatch meegeleverde testscript, gewoon om er zeker alles werkt te maken.
Begin met het verplaatsen naar de juiste directory:
cd / etc / logwatch / scripts / services
Gebruik je favoriete editor om uw eerste script te maken:
vi ossec
De inhoud van het script moet worden als volgt:
#! / Bin / bash
# Dit is zo mooi script dat zal u tonen de regels die u zult
# Te verwerken en rapporteren over. Het zal eerst geeft de
# Standaard omgevingsvariabelen en dan duurt het STDIN en
# Dump het goed terug naar STDOUT.
# Dit zijn de standaard omgevingsvariabelen. U kunt definiëren
# Meer in uw dienst config-bestand (zie boven).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Level: $ LOGWATCH_DEBUG"
# Neem nu STDIN en dump het naar STDOUT
kat
Maak nu uw tweede script:
vi ossec-alert
en omvatten de exact dezelfde inhoud:
#! / Bin / bash
# Dit is zo mooi script dat zal u tonen de regels die u zult
# Te verwerken en rapporteren over. Het zal eerst geeft de
# Standaard omgevingsvariabelen en dan duurt het STDIN en
# Dump het goed terug naar STDOUT.
# Dit zijn de standaard omgevingsvariabelen. U kunt definiëren
# Meer in uw dienst config-bestand (zie boven).
echo "Date Range: $ LOGWATCH_DATE_RANGE"
echo "Detail Level: $ LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $ LOGWATCH_TEMP_DIR"
echo "Debug Level: $ LOGWATCH_DEBUG"
# Neem nu STDIN en dump het naar STDOUT
kat
Tot slot moeten we de juiste machtigingen in te stellen:
chmod 755 ossec *
De installatie testen
De eenvoudigste manier om onze nieuwe setup te testen is het uitvoeren van de opdracht:
logwatch | less
Als u alleen uw wijzigingen wilt zien, kunt u een verslag uit over elke dienst, een voor een:
logwatch-service ossec | less
logwatch-service ossec-alert | less
Verdere Customization
Zodra je al het bovenstaande werkend te krijgen, kunt u zich concentreren op het verkrijgen van logwatch te filteren en samen te vatten van de logboekvermeldingen. Logwatch is vrij flexibel, en je kunt de output aanpassen op elke gewenste manier. Een van de leuke dingen over de bovenstaande test script is vooral dat het laat zien u precies wat u moet werken. Dus met een beetje regular expression magie kun je samenvatten van de vermeldingen als u dat nodig acht. Voor een aantal ideeën, check out de bestanden zich onder:
/ Usr / share / logwatch / scripts / services
Dit zijn de standaard samenvatting van scripts die bij logwatch. In het bijzonder, hebben een blik op de bestanden "PAM" en "sshd". Ze zijn goede voorbeelden van zowel een eenvoudige en een complexe set van samenvatting filters.
Als je de ontwikkeling van uw scripts, bijzondere aandacht schenken aan de $ LOGWATCH_DETAIL_LEVEL "variabele. Dit zal u toelaten om het uitgangsniveau van het rapport afhankelijk van hoeveel breedsprakigheid van de gebruiker is op zoek naar aan te passen. Bijvoorbeeld, terwijl u nog steeds in de bovenstaande diensten directory, voer het volgende commando:
minder sshd
Als de eerste pagina van de inhoud van het bestand wordt weergegeven, typt u in:
/ Detail <Voer key>
De backslash laat ons het bestand zoeken naar een bepaalde tekststring. In dit geval zijn we op zoek naar het woord "Detail". Zodra u op Enter drukt het zoeken slaat door het bestand tot hij vindt het eerste exemplaar van de tekenreeks. Het zal ook wijzen op de zoekterm. In de eerste wedstrijd zal je merken dat de auteur de variabele "$ Detail" toegewezen aan hetzelfde te zijn als de variabele $ LOGWATCH_DETAIL_LEVEL ". Dit is hen te redden wat typwerk.
Druk nu op de backslash toets te drukken, gevolgd door de Enter-toets. Dit zal springen door het bestand naar de volgende instantie van "Detail". Je moet zien:
if ($ Detail> = 20) {
Gebruikers $ {$ user} {$ Host} {$ Methode} + +;
} Else {
if ($ Host! ~ / $ IgnoreHost /) {
Gebruikers $ {$ user} {$ Host} {"(alle )"}++;
Let op de auteur geeft meer informatie als het detail niveau is ingesteld op 20 (halverwege tussen laag-en medium) of hoger. Blijf springen door het bestand en je ziet andere voorbeelden waar de auteur leveraged deze techniek.
Nu page down aan het einde van het bestand en je ziet deze verklaring:
if (keys% OtherList) {
print "\ n ** Ongeëvenaarde Inzendingen ** \ n";
print "$ _: $ OtherList {$ _} tijd (s) \ n" foreach keys% OtherList;
}
Dit gedeelte is uiterst belangrijk, want het is een laatste catchall. Denk aan een firewall beleid voor een moment. De meesten van ons een definitieve regel die zegt: "Als ik niet specifiek een verkeerspatroon vergunning door, ontkennen". Met andere woorden, als er iets onverwachts gebeurt, dit is hoe ik wil dat je om te gaan.
De bovenstaande verklaring dient hetzelfde doel bij het parseren van het logbestand. Alle vorige "als" statements poging om een bepaalde tekst reeks wedstrijd in de logboekvermelding om naar behoren te formatteren. Dit bericht zegt: "Als u nog niet op elkaar afgestemd en drukte een specifieke log entry yet, print het uit in een hoofdstuk getiteld" ** Ongeëvenaarde Inzendingen ** ". Deze stap is zeer belangrijk, want zonder dat zullen we nooit te zien onverwacht inzendingen. Het is de onverwachte items die waarschijnlijk de belangrijkste en meest interessante.
Exec Samenvatting
Zowel OSSEC en logwatch zijn uitstekende gratis tools. OSSEC blinkt uit in het waarschuwen wanneer een bekende aanvalsvectoren patroon plaatsvindt. Logwatch is een geweldig hulpmiddel voor het samenvatten van een tijd stuk van logs, zodat mensen ook daadwerkelijk zinvol zijn van wat er gebeurt. Door het combineren van de twee tools die u kunt een veel robuuster verdediging in de diepte-houding. Het geheel wordt meer dan de som der delen.
Gerelateerde berichten:


Bedankt voor het grote werk. Ik gebruik zowel OSSEC en logwatch en ik kan zeker hier het verbeteren van de houding met de begeleiding.
Blij dat ik kon helpen!
Goede tips voor het combineren van ossec logs met logwatch!
Heb je erin slaagt om datumformaat gelden ook voor de ossec-alert logfile?
Op dit moment krijg ik de hele ossec-alert logfile in mijn samenvatting, niet alleen het datumbereik in logwatch (dat wil zeggen gisteren). Het werkt goed voor de ossec.log.
Bedankt