- Change language to:
Hoe automatiseer je je logfile filtering?
Je logfiles in de gaten houden.
Lance Spitzner
Last Modified: 19 July, 2000
Translated: 13 December, 2003
Logs zijn erg belangrijk om je systeem succesvol te kunnen draaien. Ze vertellen ons wat er wel, en wat er niet gebeurd. Aan de andere kant, logs kunnen erg overvloedig zijn, ons snel overdonderen met infomratie. Ze worden snel waardeloze logfiles die disk space innemen. Dit artikel laat zien hoe we dit kunnen oplossen door geautomatiseerde logfile filtering te doen. Hierdoor heb je meer tijd, en krijg je alleen de informatie die je wilt.
Filtering
Logs zijn een geweldig bezit, echter ze worden vaak genegeerd. Je hebt te weinig tijd om ze door te nemen, zou het niet geweldig zijn om dit proces te automatiseren, een proces dat de logfiles voor jouw bekijkt, en jouw alleen de informatie geeft die je nodig hebt. Dat is precies wat we hier gaan doen. Ik ga laten zien hoe je je logs filtered voor de informatie die je nodig hebt, en daarna laat ik zien hoe we dat alarmeren.
Het eerste deel van dit artikel laat zien hoe je een plan maakt over wat je wilt filteren, en hoe je gealarmeerd wilt worden. Het tweede deel zal de filtering implementeren. Voor dit artikel, zal ik gebruik maken van Swatch als filter, dit is geschreven door Todd Atkins. We zullen ook sendmail logs gebruiken als voorbeeld voor het filtering proces. Je kunt deze richtlijnen echter op allerlei logs toepassen.
Where to begin
Het beste kun je starten met een plan. Er zijn hiervoor 3 stappen nodig. De eerste stap is definieren wat je wilt zien, welke informatie je nodig hebt uit je systeemlogging. De tweede stap is bepalen welke logfiles deze informatie bevatten. De derde stap is het bepalen van de trigger, wat definieerd de kritische informatie?
Bijvoorbeeld: Laten we zeggen dat je bezorgd bent over de veiligheid van je sendmail, specifieker, je wilt weten wanneer iemand jouw mailserver probeerd te gebruiken als spam-relay. Je wilt ook weten wanneer iemand probeerd om ongeautoriseerde informatie te verschaffen door middel van SMTP commando’s, zoals expn. We hebben nu de eerste stap volbracht in ons stappenplan.
De tweede stap is bepalen wat de bron is, of welke logfile deze informatie bevat. De beste plek om dit te vinden is /etc/syslog.conf, deze configuratie file laat zien welke informatie waarheen gelogged wordt. Voor mail bijvoorbeeld zien we dat alle mail informatie vestuurd wordt naar /var/log/syslog op ons Solaris systeem (/var/log/maillog voor Linux).
goalith #cat /etc/syslog.conf | grep mail
mail.debug ifdef(`LOGHOST’, /var/log/syslog, @loghost)
De laatste stap is bepalen wat de trigger is. Welke specifieke regel in de logfile bepaald de informatie die we zoeken. Voor sendmail zijn we op zoek naar twee triggers.
- De trigger die ongeautoriseerde ip adressen laat zien die onze mailserver als mail-relay willen gebruiken.
- De trigger die laat zien wanneer iemand probeerd het expn commando te gebruiken welke is uitgeschakeld.
De beste manier om de trigger te bepalen is om het incident na te bootsen wanneer je je logfiles bekijkt met /usr/bin/tail. Als je dit niet kan doen op een productie systeem, zoek dan een test machine waar je de trigger op kan nabootsen. Allereerst, laten we het incident nabootsen voor de eerste trigger. Ongeautoriseerd gebruik van je mailserver als mail-rely. Vanaf een ongeautoriseerd ipadres, proberen we de mailserver als relay te gebruiken. Met /usr/bin/tail zien we de logregel in /var/log/syslog (Verwijzing naar Figure A).
Hier zien we een error melding van iemand bij moo.com die probeerd email over onze mailserver te relayen, een potentieel teken van spam. Dit is de trigger voor ongewenste mail-relay. Let op de eror, deze laat ook het ip-adres zien, welke het afkomst domain bepaald.
Laten we nu de tweede trigger na bootsen, ongeautoriseerd gebruik van het expn commando. Telnet naar de SMTP port en voer expn uit. Volg ondertussen de /var/log/syslog file met tail Refer to Figure B).
We zien een error melding van iemand bij mook.com die probeerd de gebruikersnaam root uit te klappen. Dit is de trigger voor als iemand probeerd het expn commando probeerd te exploiten. Let op de error, deze laat ook het ip-adres zien, welke het afkomst domain bepaald.
We hebben nu de eerste drie stappen gedaan in ons stappenplan voor geautomatiseerde logfile filtering. We hebben eerst gedefinieerd welke informatie belangrijk voor ons is, ongeautoriseerd gebruik van onze mailserver als mail-relay en het gebruik van het expn commando. Hierna hebben we de logfiles gedefinieerd welke deze informatie bevatte, /var/log/syslog. Als laatste hebben we gedefinieerd welke triggers er zijn door de incidenten na te bootsen. We zijn nu klaar om onze geautomatiseerde logfile filtering te bouwen.
SWATCH
SWATCH, “The Simple WATCHer and filter”, is een perl programma ontwikkeld door Todd Atkins welke je realtime je logfiles volgt. Swatch volgt je logs en zoekt op bepaalde triggers, wanneer deze triggers gevonden worden geeft swatch een alarm af op een door jouw bepaalde manier. In ons geval gaan we implementeren dat swatch ons alarmeerd wanneer iemand aan het rommelen is met onze sendmail.
Het programma is extreem makkelijk om te installeren. Swatch komt met een handig installatie script dat alle libraries, handleidingen en perl bestanden naar de juiste directories copieerd. Wellicht moet je een aantal perl modules compileren en installeren, het installatie script laat je dit weten. Wanneer je klaar bent met installeren, is het enigste dat overblijft het maken van een configuratie bestand en dan het programma opstarten. Je kan Swatch downloaden vanaf deze locatie.
Het configuratie bestand, geheten swatchrc, is het hart van Swatch. Dit tekst bestand verteld swatch welke logfiles hij in de gaten moet houden, welke triggers er zijn, en wat hij moet doen als hij een trigger waarde tegenkomt. Swatch werkt door te zoeken in de logfile met behulp van regular expressions die de trigger waarde zoekt gedefinieerd in swatchrc. Wanneer er een trigger waarde gevonden wordt, start het de alarmerings procedure gedefinieerd in swatchrc. Swatch monitored de files in realtime, gebruik makende van /usr/bin/tail.
We zullen nu een swatchrc bestand maken voor onze sendmail logging welke we hierboven besproken hebben. Het doel is om sendmail emailtjes te laten versturen wanneer iemand met onze mailserver rommelt. We hebben al eerder besloten dat dit ongeautoriseerde pogingen tot mail-relay zijn en ongeautoriseerd gebruik van het expn commando. De opbouw van een swatchrc bestand is als volgend. Het bestaat uit vier velden, de eerste twee velden zijn verplicht. De laatste twee zijn optioneel. Het eerste veld is
/patroon/patroon/
Hier is patroon een reguliere expressie waar swatch naar zoekt. Dit is onze trigger. Het tweede veld is
Action,action

