Portál AbcLinuxu, 27. dubna 2024 00:55

Linuxové DMZ - VIII

23. 4. 2003 | Michal Vymazal
Články - Linuxové DMZ - VIII  

Analýza LOGů neboli vyhodnocování záznamů v provozních denících.

V dnešním dílu, který následuje po menší přestávce, se podíváme na vyhodnocování záznamů v provozních denících, nebo-li log souborech a představíme si několik programů, které by nám s tím měly pomoci.

Michal Vymazal

Sami asi dobře víte, že do těchto souborů ukládají veškeré unixové (a Linux samozřejmě nevyjímaje) systémy své provozní záznamy. Vlastní soubory pak nalezneme v adresáři /var/log (není to nahodilé umístění, vzpomínáte na hierarchickou strukturu adresářů?). Není jich tu zrovna málo a jejich obsah se neustále mění. To proto, že systém sem zapisuje neustále nové a nové informace. A nyní se dostáváme k "jádru pudla". Totiž, jak z této spousty informací získat určitý přehled. Jistěže existuje řada nástrojů, která nám v tomto směru dokáží vypomoci.

Tím prvním je logcheck. Tedy nástroj, který umí prohlížet vybrané log soubory, jejich obsah porovná s klíčovými záznamy ve svých parametrických souborech a "podezřelé" záznamy zapíše do hlášení, které nám odešle do pošty (asi by to šlo uložit rovnou do souboru, ale uznejte, proč si to jednoduše neposlat do schránky?).

Logcheck

Anglický popis najdete například zde (freeos.com), český popis je zde (linuxzone.cz)

Stručně řečeno: Logcheck (nověji též pod názvem Logsentry) pracuje se dvěma seznamy klíčových slov. Do prvního seznamu administrátor zařadí klíčová slova týkající se důležitých stavů, o kterých chce být informován. Druhý seznam obsahuje klíčová slova týkající se obvyklých stavů a událostí, které nevyžadují pozornost administrátora a budou potlačeny. Logcheck pak prohledá všechny zadané soubory (jejich seznam má v samostatném parametrickém souboru) a vyhledá v nich veškeré záznamy obsahující klíčová slova z prvního seznamu. Pak ještě log porovná s druhým seznamem, kde jsou zapsána klíčová slova představující "normální hlášení", která ve výstupu naopak mít nechceme. Na výstupu je pak zkrácená verze systémového logu obsahující významné události (dle administrátorem zadaných klíčových slov) a dále také ostatní události, které administrátor nezařadil mezi "obvyklé" zprávy určené k odfiltrování. Tím je zaručeno, že budou odfiltrovány pouze ty zprávy, které administrátor dopředu ohodnotil jako nevýznamné.

Vlastní logcheck se spouští periodicky (pomocí cronu) a musí si pamatovat pozici logu, na které při posledním spuštění skončil. Jak jsem již uvedl, výstupem z logcheck je zpráva v elektronické poště, která může vypadat například takto:

hostname 2003/04/10 05:02 ACTIVE SYSTEM ATTACK!
This mail is sent by logcheck. If you do not want to receive it any more, please modify the configuration files in /etc/logcheck or deinstall logcheck.

Active System Attack Alerts
=-=-=-=-=-=-=-=-=-=-=-=-=-=
[**] [1:660:2] SMTP expn root [**]
[Classification: Web Application Attack] [Priority: 1]

Possible Security Violations
=-=-=-=-=-=-=-=-=-=
Apr 9 18:04:48 xxx kernel: Packet log: input REJECT eth0 PROTO=6 211.147.3.62:21 X.X.X.X:21 L=40
S=0x00 I=12778 F=0x0000 T=111 SYN (#14)
Apr 9 21:22:41 xxx kernel: Packet log: input REJECT eth0 PROTO=6 80.52.13.137:3993 X.X.X.X:21 L=60
S=0x00 I=42943 F=0x4000 T=54 SYN (#14)

Unusual System Events
=-=-=-=-=-=-=-=-=-=-=

Zde jsou umístěny všechny záznamy, které logcheck nedokázal zařadit.

Vidíme, že zpráva je nadepsána jako "ACTIVE system ATTACK!". To proto, že obsahem zprávy je odstavec "Active System Attack Alerts" což znamená, že v některém z log souborů našel logcheck posloupnost klasifikovanou jako "violation", tedy pokus o narušení systému. V mém případě tedy narazil na shodu záznamu v log souboru s klíčem v parametrickém souboru /etc/logcheck/logcheck.violations (Debian Woody). Nyní je již na správci, aby z hlášení poznal, že se někdo pokouší o exploit zvaný "SMTP expn root" a pokouší se "sesvačit" váš poštovní server. Hlášení "Web Application Attack" je zde poněkud matoucí, neboť se jedná o upozornění na jiný útok, který se týkal webového serveru Apache.

Jsem opravdu zvědav jestli poznáte, o co se pokoušel "neposeda" podle hlášení z odstavce "Possible Security Violations". Měli byste to poznat z prvního řádku.

Pokud logcheck v žádném z prohledávaných log souborů nenarazí na shodu s klíči v souboru logcheck.violations, pak bude zpráva nadepsána nějak takto:

hostname 2003/04/01 14:02 system check

a bude obsahovat pouze sekce Possible Security Violations a Unusual System Events.

Tušíte ovšem správně, že na "hlídaném" stroji budete potřebovat nějakého poštovního démona alespoň v té nejjednodušší konfiguraci (tj. umím odeslat mail). Sice by tuto podmínku bylo možné obejít (např. přinutit logcheck, aby uložil hlášení do souboru a pak tento soubor vnutit nějakým skriptem na port 25 stroje, který poštovního démona má), ale to vidím jako zbytečnou komplikaci.

Z poněkud jiného soudku je nástroj (IPChains log analyzer) Firewaller. Velmi pěkný perlový nástroj na analýzu záznamů z paketového filtru ipchains. Umí moc hezký HTML výstup, ale "nepamatuje" si pozici logu od svého posledního spuštění. Já osobně to řeším tak, že skript firewaller.pl volám ze skriptu fwlogger, který vypadá takto:

#!/bin/sh
tail -500 /var/log/messages > /firewall/messages500
/firewall/firewaller.pl

Nebo-li "Prosil bych posledních 500 záznamů ze souboru /var/log/messages/ do souboru messages500".

Ve skriptu firewaller.pl ještě musíte provést tyto úpravy:

my $LOGFILE="/firewall/messages500";
my $OUTPUT="/firewall/firewall_log.html";

A je to. V souboru /firewall/firewall_log.html je nyní náš HTML výstup s "profiltrovanými" záznamy z paketového filtru. Jsou k tomu ovšem nutné dva předpoklady:

  1. Modul ipchains ukládá záznamy do logu /var/log/messages (neplatí u všech distribucí!).
  2. Bude vám pro výstup stačit "prosetí" posledních 500 řádků z /var/log/messages.

Kýžený HTML výstup pak vypadá nějak takto:

Firewaller log

1152x894, 266 kB

Vlastní soubor si můžete "poslat" např. perlovým skriptem SendEmail, k dostání na freshmeat.net. Nezapomeňte si však uvnitř skriptu správně nastavit časové pásmo!


Martin Pavlíček

IPTables logs analyzer

Další z programů, který můžeme použít k analýze logu je tato "grafická" utilitka s nazvem IPTables logs analyzer. Tento program pracuje pouze s jádry 2.4 a s paketovým filtrem NETFILTER/IPTABLES. S jeho pomocí můžete prohlížet veškeré zalogované pakety (přijaté, zahozené, maškarádované atd.). Vše dokáže zobrazit v krásné HTML stránce (viz. obrázek).

IPTables logs analyzer

Jak progam funguje?

Program IPTables logs analyzer se skládá se ze dvou rozdílných částí.

  1. "Database feeder" (připojení na databázi), který čte logy, jež produkuje iptables (např. /var/log/messages) a ukládá je do databáze.
  2. Webové rozhraní, které se stará o zobrazení dat uložených v databázi.

Co vše potřebujeme?

Mimo samotného programu IPTables logs analyzer ještě budeme potřebovat následující programy:

Nic z toho by asi neměl být problém. Nyní si možná řeknete, že provozovat na firewallu všechno výše uvedené jen kvůli analyzátoru logů je šílenost. Na tohle samozřejmě tvůrci programu mysleli. Pokud nechcete vše provozovat přímo na firewallu a máte ve své síti databázový server, web server atd., můžete činnost programu "rozdělit" takto:

Výhodou může být to, že na jeden databázový stroj můžete přijímat data z více firewallů, pouze je nutné aby na každém z nich byl nainstalován "database feeder".

Instalace

Samotná instalace je popsána v dokumentaci, kterou naleznete na domovské stránce programu. Stručně řeknu, že instalace se skládá z několika kroků:

  1. vytvoření databáze,
  2. případné upravení pravidel v paketovém filtru (musíte něco logovat, aby bylo co zobrazovat :-) ),
  3. nainstalování a zkonfigurování webového rozhraní
  4. instalace "database feederu".

Pokud si nejste jisti, jestli by se vám program líbil, můžete se podívat (vřele to doporučuji) na jakési "demo", na kterém si prohlédnete a vyzkoušíte jak program pracuje.

Fireparse

Další prográmek vytvořený v Perlu. Jedná se o skript, který dokáže vytvářet denní reporty o všech paketech, které byly zalogovány paketovým filtrem ipchains nebo iptables.

Tento report může být formátován jako prostý text či barevná HTML tabulka a můžete si jej nechat zasílat mailem či prohlížet přímo na v souboru na firewallu. Pro představu se můžete podívat na malou ukázku:

Fireparse

Jak můžete vidět na ukázce, report obsahuje všechny potřebné informace jako jsou např.:

Závěr

Tolik tedy z dnešního dílu. Doufám, že vás některý nástroj zaujme a pomůže vám při sledování logů na vašem firewallu. Pokud používáte jiný zajímavý program, tak budeme rádi, pokud se o zkušenosti podělíte v diskuzi.

Související články

Linuxové DMZ - I (Úvod do problematiky)
Linuxové DMZ - II (Zařízení v DMZ)
Linuxové DMZ - III (Modelové topologie)
Linuxové DMZ - IV (Protokoly rodiny TCP/IP)
Linuxové DMZ - V (Routery a minidistribuce LRP)
Linuxové DMZ - VI (Firewally)
Linuxové DMZ - VII (Paketové filtry)

Odkazy a zdroje

Logcheck
Firewaller
IPTables logs analyzer
Fireparse

Seriál Linuxové DMZ (dílů: 9)

První díl: Linuxové DMZ - I, poslední díl: Linuxové DMZ - IX.
Předchozí díl: Linuxové DMZ - VII
Následující díl: Linuxové DMZ - IX

Další články z této rubriky

V sobotu se uskuteční konference CryptoFest
Pozor na androidové aplikace
Silent Circle představil bezpečný smartphone Blackphone 2
Android je bezpečnější, řada hrozeb však stále přetrvává
Avast varuje před nebezpečnými aplikacemi v Google Play

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.