Za´padoˇceska´ univerzita v Plzni Fakulta aplikovany´ch vˇed Katedra informatiky a vy´poˇcetn´ı techniky
Bakal´ aˇ rsk´ a pr´ ace Anal´ yza a vytvoˇ ren´ı automatick´ eho syst´ emu sledov´ an´ı log˚ u
Plzeˇ n 2013
Pavel Hvˇezda
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem bakal´aˇrskou pr´aci vypracoval samostatnˇe a v´ yhradnˇe s pouˇzit´ım citovan´ ych pramen˚ u. V Plzni dne 10. kvˇetna 2013 Pavel Hvˇezda
i
Abstract This work is the result of a project that has been announced by my superˇ visor, Michal Svamberg. The objective was to create a simple and effective filtering system for University of West Bohemia for managing logs and detection system dysfunction. It is designed to be able to use an inexperienced worker. The project is accessible from web interface. The goal of this work was not to create event viewer, but a short list of anomalies, which the user wishes to display. The project was successfully put into operation on 28 April 2013. Tato pr´ace je v´ ysledkem projektu, kter´ y mi byl zad´an m´ ym vedouc´ım, Michaˇ lem Svambergem. C´ılem bylo vytvoˇrit jednoduch´ yau ´ˇcinn´ y filtrovac´ı syst´em pro potˇreby Z´apadoˇcesk´e univerzity pro spr´avu log˚ u a odhalov´an´ı disfunkc´ı syst´emu. Je navrˇzena aby ji mohl vyuˇz´ıvat i nezkuˇsen´ y pracovn´ık. Uˇziva´ celem t´eto pr´ace telsk´e prostˇred´ı je pˇr´ıstupn´e pomoc´ı webov´eho rozhran´ı. Uˇ nebylo vytvoˇrit event viewer, n´ ybrˇz naopak kr´atk´ y seznam anom´ali´ı, kter´e si s´am uˇzivatel pˇreje zobrazovat. Projekt byl u ´spˇeˇsnˇe nasazen do provozu dne 26.4.2013.
ii
Obsah ´ 1 Uvod
1
2 Technologie 2.1 Logov´an´ı . . . . . . . . . . . . . . . . . 2.1.1 Co je to log . . . . . . . . . . . 2.1.2 Zdroje / gener´atory log˚ u . . . . 2.1.3 Druhy logov´an´ı . . . . . . . . . 2.1.4 Spr´ava log˚ u . . . . . . . . . . . 2.1.5 Linux . . . . . . . . . . . . . . 2.1.6 Analyz´atory log˚ u . . . . . . . . 2.1.7 Archivace log˚ u . . . . . . . . . 2.2 Syslog . . . . . . . . . . . . . . . . . . 2.3 Datab´aze . . . . . . . . . . . . . . . . 2.4 Webov´e servery . . . . . . . . . . . . . 2.5 Webov´e rozhran´ı . . . . . . . . . . . . 2.5.1 Zabezpeˇcen´ı webov´eho rozhran´ı 2.5.2 Skripty na stranˇe serveru . . . . 2.5.3 Skripty na stranˇe klienta . . . . 2.5.4 jQuery . . . . . . . . . . . . . . 2.5.5 dataTables . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .
2 2 2 4 4 5 6 7 7 8 9 12 13 13 14 15 16 16
3 Instalace a konfigurace 3.1 Syslog-ng . . . . . . . . . . . . . . . 3.1.1 Instalace . . . . . . . . . . . . 3.1.2 Konfigurace serveru . . . . . . 3.1.3 Konfigurace klientsk´ ych stanic 3.2 MySQL . . . . . . . . . . . . . . . . 3.2.1 Instalace . . . . . . . . . . . . 3.2.2 Konfigurace . . . . . . . . . . 3.2.3 Tabulky datab´aze . . . . . . . 3.2.4 Trigger . . . . . . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
18 18 18 18 20 20 20 21 21 22
iii
. . . . . . . . .
OBSAH 3.3
OBSAH . . . . . . . . .
23 23 23 23 23 24 27 27 27
4 Zpracov´ an´ı log˚ u 4.1 Logy v syst´emu Swatcher . . . . . . . . . . . . . . . . . . . . . 4.1.1 Zpracov´an´ı log˚ u kernelu . . . . . . . . . . . . . . . . . 4.1.2 Pr´ace s logy v syst´emu Swatcher . . . . . . . . . . . .
28 28 29 30
5 Statistiky dat
32
3.4
3.5 3.6
Apache . . . . . . . 3.3.1 Instalace . . 3.3.2 Konfigurace WebAuth . . . . . 3.4.1 Instalace . . 3.4.2 Konfigurace Firewall . . . . . . PHP 5 . . . . . . . 3.6.1 Instalace . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
6 Filtry 33 6.1 Vstupn´ı filtry . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.2 Uˇzivatelsk´e filtry . . . . . . . . . . . . . . . . . . . . . . . . . 33 6.3 Tvar filtr˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 7 Regul´ arn´ı v´ yrazy
35
8 Webov´ e rozhran´ı 8.1 Advanced filtering . . 8.2 Options . . . . . . . 8.3 Tabulka v´ ypis˚ u . . . 8.4 Edit input filter . . . 8.5 Opr´avnˇen´ı a pˇr´ıstup
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
36 36 38 39 39 41
9 Moduly 9.1 addrow.php . 9.2 applydef.php 9.3 config.php . . 9.4 input.php . . 9.5 delete.php . . 9.6 deletefil.php . 9.7 form.php . . . 9.8 main.php . . 9.9 print.php . . 9.10 save.php . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
42 42 42 42 43 43 44 44 44 45 45
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
iv
OBSAH 9.11 9.12 9.13 9.14 9.15
OBSAH save2.php . . . selected.php . . table.php . . . tablsubm.php . timestamp.php
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
45 45 45 46 47
10 Z´ avˇ er
48
11 Pˇ r´ılohy
51
Uˇ zivatelsk´ a pˇ r´ıruˇ cka
51
v
Seznam obr´ azk˚ u 2.1
WebAuth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1
Era model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1 4.2 4.3
ˇ . . . . . . . . . . . . . . . . . . . 28 Infrastruktura logov´an´ı ZCU Kontextov´e menu . . . . . . . . . . . . . . . . . . . . . . . . . 30 Editace vstupn´ıho filtru . . . . . . . . . . . . . . . . . . . . . 31
5.1
Statistiky velikost´ı log˚ u pro rok 2012 . . . . . . . . . . . . . . 32
8.1 8.2 8.3
Webov´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . . . 36 Administr´atorsk´e rozhran´ı . . . . . . . . . . . . . . . . . . . . 41 Uˇzivatelsk´e rozhran´ı . . . . . . . . . . . . . . . . . . . . . . . 41
vi
´ 1 Uvod T´ema bakal´aˇrsk´e pr´ace bylo vyps´ano pˇredevˇs´ım proto, ˇze dosud neexistuje ˇz´adn´ y komplexn´ı n´astroj pro spr´avu log˚ u, kter´ y by odpov´ıdal poˇzadavk˚ um Z´apadoˇcesk´e univerzity, konkr´etnˇe pracoviˇsti CIV. Sledov´an´ı log˚ u generovan´ ych poˇc´ıtaˇci nebo servery je d˚ uleˇzit´a ˇcinnost, kter´a n´am d´av´a moˇznost predikce ud´alost´ı nebo naopak moˇznost nal´ezt odpovˇedi, proˇc se ud´alosti staly a m˚ uˇze pomoci pˇredej´ıt probl´em˚ um ovlivˇ nuj´ıc´ıch koncov´e uˇzivatele vyuˇz´ıvaj´ıc´ı sluˇzeb server˚ u. Vyv´ıjen´ y n´astroj je tedy zamˇeˇren nikoli na koncov´e uˇzivatele, ale pˇredevˇs´ım na spr´avce rozlehl´ ych s´ıt´ı, jako je napˇr´ıklad s´ıt’ Z´apadoˇcesk´e univerzity, aby jim ulehˇcil supervizi. Valn´a vˇetˇsina server˚ u vyuˇz´ıvan´ ych na ˇ ZCU funguje na r˚ uzn´ ych distribuc´ıch syst´emu Linux. Projekt by mˇel v´ yraznˇe ulehˇcit kontrolu ud´alost´ı a ˇcten´ı log˚ u, protoˇze bude shromaˇzd’ovat d˚ uleˇzit´e informace a data (logy) o cel´e poˇc´ıtaˇcov´e s´ıti na jednom m´ıstˇe a bude umoˇzn ˇovat rychl´e a efektivn´ı filtrov´an´ı a vyhled´av´an´ı s pˇrehledn´ ym webov´ ym rozhran´ım. Tak´e bude umoˇzn ˇovat filtrovat, kter´e pˇr´ıchoz´ı logy nechceme do ´ syst´emu zaznamenat trvale. Uˇcelem nebude shromaˇzd’ovat veˇsker´e logy a nahrazovat funkci event vieweru (nicm´enˇe, k t´eto funkci m˚ uˇze tak´e velice dobˇre slouˇzit). Bude slouˇzit pˇredevˇs´ım jako n´astroj, kter´ y zaˇskolen´ y a znal´ y pracovn´ık nastav´ı a m´enˇe zkuˇsen´ y kolega nebo externista vyuˇzije ke kontrole a vyhodnocen´ı log˚ u (ud´alost´ı), kter´e byly do syst´emu uloˇzeny. Pˇredpokl´adan´e mnoˇzstv´ı denn´ıch pˇr´ıchoz´ıch log˚ u do syst´emu by se mˇelo pohybovat v u ´nosn´e m´ıˇre pro spr´avu, tj. v ˇra´dech des´ıtek. Projekt byl pojmenov´an Swatcher.
1
2 Technologie 2.1 2.1.1
Logov´ an´ı Co je to log
Term´ınem log se oznaˇcuje v poˇc´ıtaˇcov´em n´azvoslov´ı soubor se z´aznamem ud´alost´ı, kter´e nastaly v monitorovan´em syst´emu. Kaˇzd´a ud´alost je zaznamen´ana jako jeden log a obsahuje informace, kter´e jednoznaˇcnˇe popisuj´ıc´ı danou ud´alost (ˇcas, p˚ uvodce, text atp.). Logy jsou z´aznamy z antivirov´ ych program˚ u, firewall˚ u, modul˚ u a dalˇs´ıch aplikac´ı v syst´emu. V dneˇsn´ı dobˇe m´a kaˇzd´a propracovanˇejˇs´ı aplikace vlastn´ı logovac´ı syst´em a prohl´ıˇzeˇc. Speci´aln´ım typem logu, kter´ y napˇr´ıklad eviduje zmˇeny opr´avnˇen´ı nebo vlastn´ıky soubor˚ u v operaˇcn´ım syst´emu je audit, tohoto druhu log˚ u vyuˇz´ıv´a Microsoft Windows. D´ıky tomuto typu logu jsme v pˇr´ıpadˇe incidentu ˇci jin´e ud´alosti schopni dok´azat konkr´etn´ımu uˇzivateli jeho ˇcinnost, popˇr´ıpadˇe konkr´etn´ı zmˇeny v syst´emu. V minulosti byly logy vyuˇz´ıv´any pˇrev´aˇznˇe k ladˇen´ı aplikac´ı ˇci probl´em˚ u, ale rozvojem v´ ypoˇcetn´ı techniky z´ıskaly na d˚ uleˇzitosti. Standard pro z´aznam programov´ ych zpr´av se naz´ yv´a Syslog. Kaˇzd´ y log tohoto standardu kromˇe vlastn´ıho textu obsahuje i dalˇs´ı informace: priority (anglick´ y term´ın pro prioritu), facility (anglick´ y term´ın pro kategorii logu), processID (anglick´ y n´azev, prakticky se jedn´a o program, kter´ y z´aznam vygeneroval, ale nen´ı to pravidlem), datetime (anglick´ y sloˇzen´ y term´ın pro ˇcas a datum spojen´ ych v jeden z´aznam), host (zdroj, myˇsleno server (stroj) kter´ y tento log vygeneroval). Pˇrijat´ y log vypad´a pro pˇr´ıklad n´asledovnˇe: mˇes´ıc | den | ˇcas | poˇc´ıtaˇc | n´azev procesu[pid] | text zpr´avy. Apr 21 06:45:25 karkinos syslog-ng[14462]: Suspending write operation because of an I/O error; fd=’30’, time_reopen=’10’ Priorita ud´av´a v´ yznamnost ud´alosti. Takov´ ychto u ´rovn´ı je 9 a jsou oznaˇceny n´asledovnˇe od nejniˇzˇs´ı k nejvyˇsˇs´ı prioritˇe: • debug - lad´ıc´ı zpr´ava, • info - informaˇcn´ı zpr´ava, 2
Technologie
Logov´an´ı
• notice - upozornˇen´ı, jedn´a se o norm´aln´ı stav syst´emu, • warning - varovn´e upozornˇen´ı, od t´eto u ´rovnˇe je bˇeˇzn´e logy zapisovat, • err - hl´aˇsen´ı o chybˇe, • crit - kritick´ y stav, • alert - oˇcek´av´a se urychlen´a reakce, • emerg - syst´em se st´av´a nepouˇziteln´ ym. Facility (kategorie) ud´av´a, od jak´e sluˇzby poch´az´ı. Facility obsahuje 12 pˇreddefinov´ ych kategori´ı: • auth - autentizace, napˇr´ıklad zpr´avy t´ ykaj´ıc´ı se pˇrihlaˇsov´an´ı / odhlaˇsov´an´ı uˇzivatel˚ u, • auth-priv - autentizace, vyhrazeno pro zpr´avy kter´e by z bezpeˇcnostn´ıch d˚ uvod˚ u mˇely b´ yt oddˇeleny od ostatn´ıch a kter´e jsou urˇceny pouze administr´atorovi syst´emu, • cron - zpr´avy od crontabu - d´emona, kter´ y zajiˇst’uje pravideln´e spouˇstˇen´ı akc´ı, • daemon - bl´ıˇze neurˇcen´e zpr´avy syst´emov´ ych aplikac´ı, • kern - zpr´avy j´adra, • lpr - zpr´avy t´ ykaj´ıc´ı se tiskov´eho syst´emu (napˇr´ıklad lpd apod.), • mail - zpr´avy MTA (obecnˇe poˇsta - napˇr´ıklad sendmail apod.), • mark - vyhrazeno pro tzv. timestamps“. Znaˇcky, kter´e se periodicky ” zapisuj´ı do logu, • news - zpr´avy NNTP serveru (diskusn´ı skupiny - Usenet news), • security - znamen´a tot´eˇz co auth“ - synonymum, ” • syslog - zpr´avy syslogu, • user - bl´ıˇze neurˇcen´e zpr´avy uˇzivatelsk´ ych aplikac´ı, • uucp - zpr´avy aplikac´ı UUCP (Unix to Unix Copy Protocol, dnes se jiˇz t´emˇeˇr nepouˇz´ıv´a). 3
Technologie
Logov´an´ı
D´ale je jeˇstˇe definov´ano 8 dalˇs´ıch kategori´ı urˇcen´ ych k libovoln´emu pouˇzit´ı. Maj´ı oznaˇcen´ı local0 aˇz local7.
2.1.2
Zdroje / gener´ atory log˚ u
Za zdroje (gener´atory) log˚ u povaˇzujeme syst´em, kter´ y generuje logy. Mohou to b´ yt napˇr´ıklad zaˇr´ızen´ı jako switche, routery, firewally, hardwarov´a zaˇr´ızen´ı, servery, stanice, popˇr´ıpadnˇe softwarov´e aplikace. Jednotliv´e zdroje, aˇc stejn´eho druhu m´ıvaj´ı rozd´ıln´ y zp˚ usob logov´an´ı. V´ yborn´ ym pˇr´ıkladem jsou operaˇcn´ı syst´emy. Logov´an´ı syst´emu MS Windows je odliˇsn´e od syst´emu Linux. MS Windows m´a pro kaˇzdou ud´alost, kter´a se v syst´emu stane pˇridˇelen´e speci´aln´ı a unik´atn´ı ID, dle kter´eho si m˚ uˇzeme danou ud´alost vyhledat, na1 pˇr´ıklad pˇr´ımo na webu Microsoft , zat´ımco syst´emy typu Linux nikoliv. V s´ıti Z´apadoˇcesk´e univerzity se jedn´a pˇredevˇs´ım o syst´emy typu Linux. Kromˇe samotn´ ych gener´ator˚ u log˚ u a logovac´ıch server˚ u se vyuˇz´ıv´a takzvan´ ych pˇrepos´ılatel˚ u (forwarders). Forwarders mohou b´ yt v lok´aln´ı s´ıti a data pouze pˇrepos´ılaj´ı na logovac´ı server (i mimo lok´aln´ı s´ıt’).
2.1.3
Druhy logov´ an´ı
Ukl´ad´an´ı log˚ u (logov´an´ı) lze prov´adˇet v´ıce zp˚ usoby. Kromˇe klasick´eho logov´an´ı na lok´aln´ı diskov´e m´edium jsou i jin´e moˇznosti, jak logovat a n´aslednˇe uchov´avat logy. Jedn´ım z tˇechto zp˚ usob˚ u je logov´an´ı pˇres s´ıt’: log je odes´ıl´an dle nˇejak´eho protokolu (standardnˇe TCP a UDP) po s´ıti na extern´ı u ´loˇziˇstˇe, kde jsou logy uchov´av´any. Jedn´a se tedy o zp˚ usob logov´an´ı, kdy jsou logy ukl´ad´any na jin´ y stroj. Mˇejme tedy poˇc´ıtaˇc nebo server, kter´ y centr´alnˇe pˇrij´ım´a logy z ostatn´ıch poˇc´ıtaˇc˚ u na nˇejak´em portu a archivuje je. Na stanici, odkud chceme logy pˇrepos´ılat, staˇc´ı v konfiguraˇcn´ım souboru uv´est jm´eno nebo IP adresu vzd´alen´eho serveru a zadat port (totoˇzn´ y s portem nastaven´ ym na serveru, kam logy chceme odes´ılat). Logovac´ımi servery naz´ yv´ame stanice (servery), kter´e pˇrij´ımaj´ı logy od gener´ator˚ u log˚ u a na z´akladˇe konfigurace je d´ale zpracov´avaj´ı. Logovac´ı servery mohou logy ukl´adat do soubor˚ u, datab´aze, jin´ ych datov´ ych u ´loˇziˇst’ nebo je pˇrepos´ılat na dalˇs´ı logovac´ı servery (pˇredevˇs´ım z 1
http://www.microsoft.com
4
Technologie
Logov´an´ı
d˚ uvodu bezpeˇcnosti, popˇr´ıpadˇe dalˇs´ı anal´ yzy). V praxi se lze setkat s r˚ uznou topologi´ı logovac´ıch server˚ u, jednotliv´e firmy maj´ı sv˚ uj postup pro pr´aci s logy. Je potˇreba si uvˇedomit, ˇze syslog jako takov´ y nem´a ˇz´adn´a opatˇren´ı pro omezen´ı pˇr´ıstupu, ˇcehoˇz lze vyuˇz´ıt k zahlcen´ı ˇci zaplnˇen´ı diskov´eho prostoru (DoS, u ´tok zp˚ usobuj´ıc´ı odepˇren´ı sluˇzby). Proto by mˇel b´ yt server, kter´ y vzd´alenˇe pˇrij´ım´a logy chr´anˇen napˇr´ıklad uˇzit´ım firewallu tak, aby pˇrij´ımal spojen´ı na UDP (ˇci jin´em protokolu, typicky jeˇstˇe TCP) a portu pouze z tˇech stroj˚ u, kter´e jsme urˇcili nebo pouze z lok´aln´ıho ˇci urˇcit´eho segmentu s´ıtˇe. Pokud je logovac´ı server pˇr´ımo v lok´aln´ı s´ıti, omezuje se nebezpeˇc´ı zahlcen´ı s´ıtˇe. Pro zajiˇstˇen´ı redundance, ˇci rozloˇzen´ı z´atˇeˇze m˚ uˇze b´ yt logovac´ıch server˚ u hned nˇekolik.
2.1.4
Spr´ ava log˚ u
Spr´ava log˚ u, anglicky log management, je popis ud´alost´ı, kter´ ymi projde log od jeho vygenerov´an´ı. Je to soubor pravidel pro pr´aci s logy (z´ısk´av´an´ı, zpracov´an´ı, ukl´ad´an´ı, prohled´av´an´ı, anal´ yza, popˇr´ıpadˇe jejich smaz´an´ı). D˚ usledn´a spr´ava log˚ u uspokojuje zvyˇsuj´ıc´ı se potˇreby zaruˇcit bezchybn´ y chod syst´em˚ u v organizac´ıch a umoˇzn ˇuje dokonal´ y pˇrehled o ud´alostech. Lze ji rozdˇelit na nˇekolik samostatn´ ych ˇc´ast´ı, ale v praxi se jedn´a o zabˇehl´ y zp˚ usob manipulace s logy, kter´ y m´a kaˇzd´a firma/instituce atp. sv´e vlastn´ı a z ˇca´sti unik´atn´ı. Pokud se jedn´a o d˚ uleˇzit´e logy a hroz´ı nebezpeˇc´ı napaden´ı hackerem, tak se proti ˇciˇstˇen´ı stop m˚ uˇze vyuˇz´ıt s´ıt’ov´a tisk´arna, kter´a kaˇzd´ y pˇr´ıhoz´ı log vytiskne, popˇr´ıpadˇe logov´an´ı pˇrez s´ıt’. Logy mohou pˇrich´azet od r˚ uzn´ ych gener´ator˚ u log˚ u a nemus´ı b´ yt vˇzdy v jednotn´em form´atu. Proces, kter´ y logy sjednocuje (prov´ad´ı normalizaci log˚ u) je v´ ypoˇcetnˇe pomˇernˇe n´aroˇcn´ y, a proto je vˇzdy lepˇs´ı zvolit pokud moˇzno jednotn´ y syst´em. Pokud nˇekdo za´ utoˇc´ı na poˇc´ıtaˇc (server), syst´emov´e logy tyto aktivity zaznamenaj´ı a aktivity u ´toˇcn´ık˚ u se daj´ı dohledat. Je bˇeˇznou prax´ı, ˇze se u ´toˇcn´ıci snaˇz´ı z´aznamy bud’ smazat nebo poupravit. ˇ je na stanic´ıch, kter´e pˇrepos´ılaj´ı logy do logovac´ıho syst´emu V r´amci ZCU nainstalov´an Syslog-ng (mluv´ıme pouze o syst´emech typu Linux), kter´ y pˇrepos´ıl´a logy na centr´aln´ı a z´aloˇzn´ı logovac´ı server (na obou serverech jsou tedy uchov´any totoˇzn´e informace). Tento syst´em sniˇzuje pravdˇepodobnost ztr´aty dat v pˇr´ıpadˇe hardwarov´e poruchy, u ´toku a z´aroveˇ n zvyˇsuje robustnost.Do syst´emu Swatcher budou odes´ıl´any veˇsker´e logy, kter´e pˇrijme pr´avˇe jeden z tˇechto logovac´ıch server˚ u. 5
Technologie
2.1.5
Logov´an´ı
Linux
Jak jiˇz bylo zm´ınˇeno, projekt Swatcher je zamˇeˇren pˇredevˇs´ım na syst´emy typu Linux. Operaˇcn´ı syst´em Linux pouˇz´ıv´a unixov´e j´adro, kter´e vych´az´ı z myˇslenek Unixu a respektuje pˇr´ısluˇsn´e standardy POSIX a Single UNIX Specification. J´adro Linuxu je v´ıce´ ulohov´e, takˇze m˚ uˇze najedou bˇeˇzet v´ıce oddˇelen´ ych proces˚ u (spuˇstˇen´ ych program˚ u), kter´e se v rychl´em sledu stˇr´ıdaj´ı na procesoru, ˇc´ımˇz vznik´a dojem jejich souˇcasn´eho bˇehu (tzv. multitasking, stejn´eho efektu lze dos´ahnout v´ıcej´adrov´ ym procesorem). Z´aroveˇ n se jedn´a o v´ıceuˇzivatelsk´ y operaˇcn´ı syst´em, na kter´em m˚ uˇze pracovat v´ıce uˇzivatel˚ u z´aroveˇ n. Proto jsou zavedeny uˇzivatelsk´e u ´ˇcty, ke kter´ ym je pˇr´ıstup chr´anˇen autentizaˇcn´ım mechanismem (kl´ıˇc, jm´eno + heslo). K tomu jsou t´eˇz zavedena pˇr´ıstupov´a opr´avnˇen´ı, kter´a umoˇzn ˇuj´ı omezit pˇr´ıstup jednotliv´ ych uˇzivatel˚ u (resp. jejich proces˚ u) k souborov´emu syst´emu (tj. soubor˚ um a adres´aˇr˚ um). V roce 1983 byl zaloˇzen projekt GNU, jehoˇz c´ılem bylo vytvoˇrit nov´ y operaˇcn´ı syst´em unixov´eho typu, kter´ y by byl sloˇzen jen ze svobodn´eho software. Zakladatelem projektu je Richard Matthew Stallman. Za t´ımto u ´ˇcelem sepsal licenci GNU GPL, pod kterou jsou ˇs´ıˇreny vˇsechny ˇca´sti syst´emu GNU. GNU se stal postupn´ ym v´ yvojem kompatibiln´ım s komerˇcn´ımi unixy. K dispozici byly vˇsechny d˚ uleˇzit´e aplikace, syst´emov´e knihovny, pˇrekladaˇc GCC, textov´ y editor a dalˇs´ı, chybˇelo jen j´adro, kter´e by zajistilo samotn´ y bˇeh syst´emu a komunikaci s hardware. Proto byl v roce 1990 zah´ajen v´ yvoj j´adra Hurd, kter´ y d´ıky modern´ı a sloˇzit´e architektuˇre nen´ı st´ale dokonˇcen. V roce 1991 Linus Torvalds zaˇcal pracovat na v´ yvoji vlastn´ıho unixov´eho j´adra. Ve ˇskole se totiˇz sezn´amil s unixov´ ym operaˇcn´ım syst´emem Minix. Minix byl ovˇsem aˇz pˇr´ıliˇs jednoduch´ y a nav´ıc k nˇemu nebylo moˇzno z´ıskat zdrojov´e k´ody. Po vyd´an´ı Linusova j´adra si okamˇzitˇe naˇslo ˇradu pˇr´ıznivc˚ u, kteˇr´ı s n´ım zaˇcali spolupracovat, vyv´ıjet. Linus pozdˇeji uvolnil zdrojov´e k´ody pod licenc´ı GNU GPL. GNU se zaˇcal pouˇz´ıvat spoleˇcnˇe s j´adrem Linux. Vznikl tak produkt se spr´avn´ ym n´azvem GNU/Linux. Spojen´ım GNU, Linuxu a dalˇs´ıch projekt˚ u vznikaj´ı takzvan´e distribuce, jeˇz jsou kompilac´ı jednotliv´ ych ˇca´st´ı, a tvoˇr´ı tak komplexn´ı operaˇcn´ı syst´em. Nikdy proto doopravdy nepracujeme jen s Linuxem nebo GNU, ale s konkr´etn´ı distribuc´ı.
6
Technologie
2.1.6
Logov´an´ı
Analyz´ atory log˚ u
Analyz´atory log˚ u jsou velice uˇziteˇcn´ ym n´astrojem pro spr´avce syst´em˚ u. Vyskytuj´ı se od jedno´ uˇcelov´ ych aplikac´ı pˇrez specializovan´e n´astroje na urˇcit´ y program (n´astroj) aˇz ke komplexnˇejˇs´ım program˚ um, kde m˚ uˇzeme pˇr´ıchoz´ı data dle moˇznost´ı filtrovat, nastavovat vyj´ımky, informace atd. Anal´ yza m˚ uˇze prob´ıhat v re´aln´em ˇcase na pˇrij´ıman´ ych a zpracov´avan´ ych datech - tuto anal´ yzu oznaˇcujeme jako real-time (RT). Dalˇs´ı moˇznost´ı je data pˇrij´ımat, ukl´adat na nˇejak´e u ´loˇziˇstˇe a n´aslednˇe z nich pak generovat napˇr´ıklad celodenn´ı statistiky. Tuto anal´ yzu naz´ yv´ame off-line anal´ yzou. RT anal´ yza se hod´ı zejm´ena na odhalov´an´ı kritick´ ych stav˚ u, kdy mus´ı b´ yt prakticky ihned informov´an spr´avce (tzv. alert). D´ıky off-line anal´ yze m˚ uˇzeme sledovat vyt´ıˇzen´ı zaˇr´ızen´ı, jejich jednotliv´ ych ˇc´ast´ı a sluˇzeb, vytv´aˇret grafy, detekovat anom´alie a podobnˇe.
2.1.7
Archivace log˚ u
Archivace log˚ u prob´ıh´a ve vˇetˇsinˇe pˇr´ıpad˚ u pˇr´ımo na logovac´ım serveru (na serveru kter´ y logy shromaˇzd’uje od ostatn´ıch stanic). Archivaci lze prov´adˇet bud’ ukl´ad´an´ım do datab´aze, kompres´ı nebo rotac´ı log˚ u. Pokud by jsme logy nijak nemazali respektive neomezovali, st´ale by se zvˇetˇsovaly a hrozilo by riziko zaplnˇen´ı disku. T´eto hrozbˇe m˚ uˇze zabr´anit pr´avˇe rotace log˚ u. Rotace log˚ u n´am m˚ uˇze usnadnit vyhled´av´an´ı. Pokud jsou logy rotov´any kaˇzd´ y den a potˇrebujeme dohledat informace z urˇcit´eho dne, nemus´ıme prohled´avat jeden velk´ y soubor, ale staˇc´ı n´am dohledat soubor jeden soubor. Pokud chceme data uchov´avat pouze urˇcit´ y ˇcas, nastav´ıme jednoduˇse poˇcet rotov´an´ı log˚ u na poˇzadovan´ y limit a starˇs´ı soubory jsou pˇri rotaci smaz´any. Postup rotace je n´asleduj´ıc´ı: 1. Soubor s n´azvem soubor.log je pˇrejmenov´an na soubor.log.1 aby mohl b´ yt vytvoˇren nov´ y log soubor.log. 2. Pˇri n´asleduj´ıc´ı rotaci je soubor.log.1 pˇrejmenov´an na soubor.log.2, soubor.log pˇrejmenov´an na soubor.log.1 aby mohl b´ yt vytvoˇren nov´ y log soubor.log. 3. Dle naˇseho nastaven´ı smaˇze soubory urˇcit´eho st´aˇr´ı (popˇr´ıpadˇe indexu). 7
Technologie
Syslog
Nejˇcastˇeji pouˇz´ıvan´ y n´astroj na OS Linux pro rotaci log˚ u je n´astroj Logrotate. Lze v nˇem nastavit: • jak ˇcasto se bude prov´adˇet rotace (dennˇe, t´ ydnˇe, mˇes´ıˇcnˇe nebo po pˇrekroˇcen´ı urˇcit´e velikosti logu), • kolik rotac´ı zpˇetnˇe chceme zachovat, • typ komprimace a v´ ybˇer algoritmu, • pr´ava pro pˇr´ıstupy, • nastaven´ı akc´ı pˇred a po rotaci (restart Apache atd.).
2.2
Syslog
Pro sb´ır´an´ı ud´alost´ı na u ´rovni jednotliv´ ych poˇc´ıtaˇc˚ u / server˚ u slouˇz´ı typ aplikace zvan´ y syslog. P˚ uvodn´ı syslog vznikl v roce 1980 jako souˇca´st projektu Sendmail2 . Syslog si vedl tak dobˇre, ˇze se stal takov´ ym nepsan´ ym standardem v unixov´em svˇetˇe. Nakonec ho standardizovala skupina IETF3 . Jelikoˇz m´a pomˇernˇe dlouhou tradici, vˇetˇsina program˚ u generuj´ıc´ıch z´aznamy ho podporuje. Tak´e se kolem jeho protokolu vytvoˇrila ˇrada implementac´ı: Syslogd, Syslog-ng4 , Msyslog5 nebo Rsyslog6 . Syslog-ng a Rsyslog jsou k dost´an´ı v bal´ıˇcc´ıch vˇetˇsiny distribuc´ı. Autorem Syslog-ng je Bal´azs Scheidler, kter´ y v roce 1998 portoval Nsyslogd na Linux. Na Nsyslogd byla zaloˇzena prvn´ı vyd´an´ı, ale pozdˇeji Bal´azs pˇrepsal j´adro cel´eho programu a vznikl tak Syslog-ng, jak ho zn´ame a pouˇz´ıv´ame dnes. Za takto kr´atkou dobu se stal velmi popul´arn´ı a napˇr´ıklad Debian, Archlinux nebo SuSE ho maj´ı jako v´ ychoz´ı syslogger. Rainer Gerhards, prim´arn´ı autor Rsyslog se rozhodl napsat syslog d´emona kter´ y by se mohl srovnat se Syslog-ng. Jm´eno Rsyslog“ poch´az´ı ze slov syslog ” a spolehliv´ y(reliable). 2
http://www.sendmail.com/sm/open_source/ http://www.ietf.org/ 4 http://www.balabit.com/network-security/syslog-ng 5 http://sourceforge.net/projects/msyslog/ 6 http://www.rsyslog.com/ 3
8
Technologie
Datab´aze
Vˇsechni v´ yˇse vyjmenovan´ı daemoni se liˇs´ı pˇrev´aˇznˇe v maliˇckostech a to pˇredevˇs´ım v mnoˇzstv´ı podp˚ urn´ ych bal´ıˇck˚ u a modul˚ u, jako jsou moˇznosti ukl´adat logy do datab´aze, moˇznosti filtrov´an´ı log˚ u a dalˇs´ıch. M˚ uj v´ ybˇer byl ale z´ uˇzen´ y na daemony, kteˇr´ı umˇej´ı zajistit logov´an´ı do datab´aze bezplatnˇe (viz bod 2.3), z d˚ uvodu dalˇs´ı manipulace s daty. Pro projekt Swatcher zvolil Syslog-ng z d˚ uvodu, ˇze se stal standardnˇe dod´avan´ ym bal´ıˇckem pro syst´em Debian, kter´ y je v s´ıti Z´apadoˇcesk´e univerzity nejvyuˇz´ıvanˇejˇs´ı. K ukl´ad´an´ı do datab´aze je pouˇzit modul syslog-ng-mod-sql, kter´ y je od verze Debian Wheezy dostupn´ y jako standardn´ı bal´ıˇcek a je tedy bezplatn´ y.
2.3
Datab´ aze
Dalˇs´ım d˚ uleˇzit´ ym krokem pro pˇr´ıpravu na efektivn´ı filtrov´an´ı je v´ ybˇer datab´aze a n´avrh datab´azov´eho modelu. Datab´azov´ ych syst´em˚ u je hned nˇekolik, 7 8 9 10 napˇr´ıklad MySQL , PostgreSQL , Oracle , Firebird , Microsoft SQL Server11 . • MySQL obsahuje 2 vrstvy. Prvn´ı vrstva, kter´a je u ´plnˇe nahoˇre obsahuje sluˇzby, jeˇz nejsou jedineˇcn´e pro MySQL. Ve druh´e vrstvˇe se nach´az´ı valn´a ˇc´ast mozku MySQL, vˇcetnˇe k´odu pro rozbor (parsing), anal´ yzu, optimalizaci a pro vˇsechny zabudovan´e funkce. Na t´eto u ´rovni se nach´az´ı veˇsker´a funkcionalita, kter´a se poskytuje prostˇrednictv´ım u ´loˇzn´ ych engin˚ u. Tˇret´ı vrstva obsahuje u ´loˇzn´e enginy. Ty maj´ı na starosti ukl´ad´an´ı a z´ısk´av´an´ı vˇsech dat uloˇzen´ ych v MySQL. Server komunikuje su ´loˇzn´ ymi enginy prostˇrednictv´ım API u ´loˇzn´ ych engin˚ u. Toto rozhran´ı skr´ yv´a rozd´ıly mezi jednotliv´ ymi u ´loˇzn´ ymi enginy a ˇcin´ı je na vrstvˇe dotaz˚ u velmi transparentn´ımi. API obsahuje nˇekolik des´ıtek n´ızko´ urovn ˇov´ ych funkc´ı, kter´e prov´adˇej´ı operace jako zah´ajit transakci“ nebo ” z´ıskat ˇr´adek, kter´ y m´a tento prim´arn´ı kl´ıˇc“. ” • PostgreSQL je plnohodnotn´ ym relaˇcn´ım datab´azov´ ym syst´emem s otevˇren´ ym zdrojov´ ym k´odem. PostgreSQL umoˇzn ˇuje bˇeh uloˇzen´ ych 7
http://www.mysql.com/ http://www.postgresql.org/ 9 http://www.oracle.com/index.html 10 http://www.firebirdsql.org/ 11 https://www.microsoft.com/sqlserver/cs/cz/ 8
9
Technologie
Datab´aze
procedur napsan´ ych v nˇekolika programovac´ıch jazyc´ıch, v Perlu, v Pyhon, v jazyku C. PostgreSQL je ˇs´ıˇren pod BSD licenc´ı, kter´a je nejliber´alnˇejˇs´ı ze vˇsech open source licenc´ı. Tato licence umoˇzn ˇuje neomezen´e bezplatn´e pouˇz´ıv´an´ı, modifikaci a distribuci PostgreSQL a to at’ pro komerˇcn´ı nebo nekomerˇcn´ı vyuˇzit´ı. Plnˇe podporuje ciz´ı kl´ıˇce, operace JOIN, triggery a uloˇzen´e procedury. • Oracle je multiplatformn´ı datab´azov´ y syst´em s velice pokroˇcil´ ymi moˇznostmi zpracov´an´ı dat, vysok´ ym v´ ykonem a snadnou ˇsk´alovatelnost´ı. Tento syst´em podporuje nejen standardn´ı relaˇcn´ı dotazovac´ı jazyk SQL podle normy SQL9212 , ale tak´e propriet´arn´ı firemn´ı rozˇs´ıˇren´ı Oracle (napˇr´ıklad pro hierarchick´e dotazy), imperativn´ı programovac´ı jazyk PL/SQL13 rozˇsiˇruj´ıc´ı moˇznosti vlastn´ıho SQL (v tomto jazyce je moˇzn´e tvoˇrit uloˇzen´e procedury, uˇzivatelsk´e funkce, programov´e bal´ıky a triggery), d´ale podporuje objektov´e datab´aze a datab´aze uloˇzen´e v hierarchick´em modelu dat (XML datab´aze, jazyk XSQL). D´ale t´eˇz obsahuje ˇsirokou paletu n´astroj˚ u pro podporu. • Firebird je relaˇcn´ı multiplatformn´ı datab´aze. M´a plnou podporu procedur a spouˇst´ı, referenˇcn´ı integritu, moˇznost extern´ıch uˇzivatelsk´ ych funkc´ı, n´astroje tˇret´ıch stran vˇcetnˇe grafick´ ych administrativn´ıch n´astroj˚ u. • Microsoft SQL Server je relaˇcn´ı datab´azov´ y a analytick´ y syst´em. M´a integrovanou podporu jazyka XML. Byl navrˇzen pro zvl´adnut´ı velk´eho objemu transakc´ı. Nab´ız´ı moˇznost zvolit verzi zdarma (SQL Server Express), popˇr´ıpadˇe jeho placenou verzi. Datab´aze pˇredstavuje n´astroj pro shrom´aˇzdˇen´ı a uspoˇr´ad´an´ı informac´ı. Poˇc´ıtaˇcov´a datab´aze je kontejnerem objekt˚ u. Jedna datab´aze m˚ uˇze obsahovat v´ıce neˇz jednu tabulku. • Tabulka – z´akladn´ı stavebn´ı k´amen datab´aze. Skl´ad´a se z ˇr´adk˚ u a ze ˇ ˇ sloupc˚ u. R´adk˚ um ˇr´ık´ame z´aznam. R´adek nese informace o jednom objektu. Sloupc˚ um ˇr´ık´ame pole) nebo tak´e atributy. Kaˇzd´ y sloupec je urˇcen pro jinou vlastnost objekt˚ u. • Prim´arn´ı kl´ıˇc – jednoznaˇcn´ y (unik´atn´ı) identifik´ator z´aznam˚ u, podle kter´eho m˚ uˇzeme z´aznamy vyb´ırat a tak´e setˇr´ıdit. Prim´arn´ı kl´ıˇc by mˇel b´ yt st´al´ y v ˇcase. 12 13
http://www.contrib.andrew.cmu.edu/ shadow/sql/sql1992.txt http://infolab.stanford.edu/ ullman/fcdb/oracle/or-plsql.html
10
Technologie
Datab´aze
• Sekund´arn´ı kl´ıˇc – jedno nebo nˇekolik pol´ı tabulky, podle kter´ ych m˚ uˇzeme vyb´ırat nebo tˇr´ıdit z´aznamy v tabulce. Sekund´arn´ı kl´ıˇc nen´ı jednoznaˇcn´ y (ve v´ıce z´aznamech m˚ uˇze b´ yt tent´ yˇz). • Ciz´ı kl´ıˇc – sekund´arn´ı kl´ıˇc tabulky, kter´ y ukazuje do tabulky jin´e, kde je zpravidla kl´ıˇcem prim´arn´ım. Nejv´ıce vyuˇz´ıvan´e typy datab´az´ı jsou: hierarchick´a datab´aze, s´ıt’ov´a datab´aze, relaˇcn´ı datab´aze, objektov´a datab´aze, objektovˇe relaˇcn´ı datab´aze, dokumentovˇe orientovan´a datab´aze. Relaˇcn´ı datab´aze m´a n´asleduj´ıc´ı parametry: • z´akladn´ım stavebn´ım kamenem relaˇcn´ı datab´aze je tabulka, • kaˇzd´a tabulka mus´ı m´ıt pevnou strukturu – kaˇzd´ y z´aznam t´eˇze tabulky se mus´ı skl´adat z pol´ı (atribut˚ u) stejn´eho v´ yznamu a stejn´eho datov´eho typu, • kaˇzd´a tabulka mus´ı m´ıt jednoznaˇcn´ y identifik´ator z´aznam˚ u – prim´arn´ı kl´ıˇc, • tabulka by nemˇela obsahovat datov´e duplicity (pole, kter´a obsahuj´ı stejn´a data), • tabulky v relaˇcn´ı datab´azi propojujeme relacemi (vazbami) - tyto relace n´am propojuj´ı souvisej´ıc´ı z´aznamy ve dvou tabulk´ach. Trigger (ˇcesky spouˇst’) v datab´azi definuje ˇcinnosti, kter´e se maj´ı prov´est v pˇr´ıpadˇe definovan´e ud´alosti nad datab´azovou tabulkou. Triggery maj´ı stejnou syntaxi jako uloˇzen´e procedury, ale nen´ı moˇzn´e pˇred´avat ˇz´adn´e vstupn´ı parametry, vracet sadu z´aznam˚ u. Popis uˇzivatelsk´e aplikace za u ´ˇcelem specifikovat n´aslednˇe strukturu datab´aze se naz´ yv´a ERA model. Pouˇz´ıvaj´ı se zkratky ERA model, E-R-A model, ER model a E-R model. E = Entita (mnoˇzina dat), R = Relace (vztah mezi entitami), A = Atribut (jednotliv´e poloˇzky popisuj´ıc´ı mnoˇzinu dat). ERA model pˇredstavuje relace entit vˇcetnˇe popisn´ ych atribut˚ u. V modelu mohou existovat r˚ uzn´a integritn´ı omezen´ı (IO): kardinalita vztahu, povinnost ˇclenstv´ı ve vztahu. Na obr´azku 4.1 je zobrazena uk´azka Era modelu, konkr´etnˇe tohoto projektu.
11
Technologie
Webov´e servery
Pro sv˚ uj projekt jsem zvolil datab´azov´ y syst´em MySQL pˇredevˇs´ım kv˚ uli m´e pˇredchoz´ı pozitivn´ı zkuˇsenosti a tak´e proto MySQL jsou podporov´any jazykem PHP, o kter´em se zm´ın´ım n´ıˇze. Zvolil jsem relaˇcn´ı datab´azi z d˚ uvodu moˇznosti prov´az´an´ı tabulek a jejich atribut˚ u. InnoDB je jednou z mnoha moˇzn´ ych u ´loˇziˇst’ dat v MySQL, byl navrˇzen pro zpracov´an´ı transakc´ı - konkr´etnˇe pro zpracov´an´ı mnoha kr´atkodob´ ych transakc´ı, kter´e se minim´alnˇe anuluj´ı. Tento popis odpov´ıd´a poˇzadavk˚ um m´eho projektu.
2.4
Webov´ e servery
V´ ybˇer spr´avn´eho webov´eho serveru je velice d˚ uleˇzit´ y, kaˇzd´ y z webov´ ych server˚ u, kter´e jsou zm´ınˇeny n´ıˇze jsou provozovateln´e na syst´emech Linux. V t´eto kapitole se tedy nezmiˇ nuji o IIS web server od spoleˇcnosti Microsoft, kter´ y je dostupn´ y jako jedna ze z´akladn´ıch funkc´ı Windows serveru. • Lighttpd je velmi v´ ykon´ y jednoprocesov´ y (single-process) a jednovl´aknov´ y (single-threaded) webov´ y server. Veˇsker´a pokroˇcil´a funkcionalita je rozdˇelena do modul˚ u. D´ıky tomu lze webov´ y server optimalizovat pˇresnˇe pro ty u ´ˇcely, kter´ ym m´a slouˇzit. Jedn´a o jeden z nejrychlejˇs´ıch webov´ ych server˚ u. Lighttpd svoji rychlost nab´ır´a d´ıky masivn´ımu intern´ımu cachov´an´ı a tak´e d´ıky mod cache. Veˇsker´a konfigurace lighttpd m˚ uˇze b´ yt vygenerov´ana skriptem, respektive v´ ystup skriptu bude vloˇzen do konfiguraˇcn´ıho souboru. • Nginx je lehk´ y webov´ y server/reverzn´ı proxy vydan´ y pod licenc´ı BSD. Mimo protokol˚ u http/https zvl´ad´a i POP3 a IMAP, takˇze se ve skuteˇcnosti nejedn´a jen o webov´ y server. Um´ı zpracovat veˇsker´ y statick´ y obsah (statick´e HTML, CSS, iso, ...) a urˇcit´ y typ poˇzadavk˚ u smˇeˇrovat jinam. Nativnˇe webserver neum´ı PHP, ani Python, Ruby. S pouˇzit´ım FastCGI nebo jin´eho webov´eho serveru uˇzeme Nginx pouˇz´ıt jako (kter´ y uˇz mod php nebo cokoli jin´eho), m˚ proxy pro zprostˇredkov´an´ı tohoto obsahu. • Apache je webov´ y server s otevˇren´ ym k´odem. Apache podporuje velk´e mnoˇzstv´ı funkc´ı, mnoho z nich je implementov´ano jako kompilovan´e moduly rozˇsiˇruj´ıc´ı j´adro. Mohou to b´ yt funkce podpory programovac´ıch jazyk˚ u jako Perl, Python, Tcl nebo PHP. Apache poskytuje mnoho tzv. MultiProcessing modul˚ u (MPM) coˇz mu dovoluje pˇrizp˚ usobit se 12
Technologie
Webov´e rozhran´ı
potˇreb´am syst´emu na kter´em bˇeˇz´ı. Apache d´ale obsahuje extern´ı modul pro kompresi dat webov´ ych str´anek pos´ılan´ ych protokolem HTTP (mod gzip), open source modul pro ochranu a prevenci webov´ ych aplikac´ı pˇred napaden´ım (mod security). Je stejnˇe jako Lighttpd rozdˇelen do modul˚ u. Pro sv˚ uj projekt jsem zvolil webov´ y server Apache z d˚ uvodu m´ ych pˇredchoz´ıch zkuˇsenost´ı s n´ım, ale tak´e kv˚ uli stabilitˇe, kompatibilitˇe s PHP a MySQL, kter´e jsou z´akladn´ımi prvky webov´eho rozhran´ı projektu.
2.5
Webov´ e rozhran´ı
Webov´e rozhran´ı bylo jedn´ım za z´akladn´ıch poˇzadavk˚ u bakal´aˇrsk´e pr´ace. Pro jeho implementaci jsem zvolil HTML jazyk, JavaScript a jeho knihovny zvan´ ym´e JQuery a skriptovac´ı jazyk PHP.
2.5.1
Zabezpeˇ cen´ı webov´ eho rozhran´ı
Zabezpeˇcen´ı webov´eho rozhran´ı je dalˇs´ım d˚ uleˇzit´ ym bodem. Prvn´ı moˇznost´ı jak webov´ y server zabezpeˇcit je napsat vlastn´ı syst´em ovˇeˇrov´an´ı uˇzivatel˚ u, dalˇs´ı pak vyuˇz´ıt jiˇz existuj´ıc´ı zp˚ usob (ˇreˇsen´ı). Vˇsechny webov´e aplikace na Z´apadoˇcesk´e univerzitˇe jsou zabezpeˇceny pomoc´ı WebAuth. WebAuth je autentizaˇcn´ı syst´em pro webov´e str´anky a webov´e aplikace. Je to vstupn´ı br´ana do dom´eny jednotn´eho pˇrihlaˇsov´an´ı Single Sign On (SSO). Single Sign-on ˇreˇsen´ı WebAuth je zaloˇzeno na autentizaˇcn´ım syst´emu Kerberos. Cel´ y syst´em WebAuth je pak tvoˇren tˇremi spolupracuj´ıc´ımi moduly do WWW serveru Apache. Srdcem cel´eho syst´emu je login-server bˇeˇznˇe naz´ yvan´ y WebKDC (KDC je pˇrevzato z n´azvoslov´ı syst´emu Kerberos14 , kde KDC je zkratka pro Key Distribution Center – centrum v´ ydeje ´kolem je pˇrekerberos ticket˚ u). Na WebKDC bˇeˇz´ı modul mod webkdc. Jeho u j´ımat poˇzadavky od aplikaˇcn´ıch server˚ u, zpracov´avat je a ovˇeˇrovat identitu pˇristupuj´ıc´ıho uˇzivatele u autentizaˇcn´ı autority. Na obr´azku 2.1 je zn´azornˇen´e sch´ema pr´ace WebAuth pˇri pokusu o pˇr´ıstup na spravovanou str´anku. 14
http://web.mit.edu/kerberos/
13
Technologie
Webov´e rozhran´ı
Obr´azek 2.1: WebAuth D´ıky t´eto technologii odpad´a ˇreˇsen´ı neopr´avnˇen´eho pˇr´ıstupu na webov´ y server. Nen´ı tak nutn´e ˇreˇsit spr´avu uˇzivatel˚ u a hesel.
2.5.2
Skripty na stranˇ e serveru
Skriptov´an´ı na stranˇe serveru je technologie, ve kter´e je uˇzivatel˚ uv poˇzadavek vykon´an webov´ ym serverem. Slouˇz´ı k dynamick´emu generov´an´ı obsahu. Pˇrev´aˇznˇe se vyuˇz´ıv´a k pˇr´ıstupu k datab´azi ˇci jin´ ym datov´ ym u ´loˇziˇst´ım. K tomuto u ´ˇcelu se vyuˇz´ıvaj´ı napˇr´ıklad jazyky: PHP, Python, Ruby, ASP, Perl ad. PHP neboli hypertextov´ y preprocesor, p˚ uvodnˇe Personal Home Page je skriptovac´ı programovac´ı jazyk, urˇcen´ y pˇredevˇs´ım pro programov´an´ı dynamick´ ych internetov´ ych str´anek a webov´ ych aplikac´ı napˇr´ıklad ve form´atu HTML, XHTML ˇci WML. Interpret PHP skriptu je moˇzn´e volat pomoc´ı pˇr´ı14
Technologie
Webov´e rozhran´ı
kazov´eho ˇra´dku, nebo s vyuˇzit´ım webov´ ych sluˇzeb. Syntaxe jazyka je inspirov´ana nˇekolika programovac´ımi jazyky (Perl, C a Pascal). PHP je nez´avisl´ y na platformˇe, rozd´ıly v r˚ uzn´ ych operaˇcn´ıch syst´emech se omezuj´ı na nˇekolik syst´emovˇe z´avisl´ ych funkc´ı a skripty lze vˇetˇsinou mezi operaˇcn´ımi syst´emy pˇren´aˇset bez jak´ ychkoli u ´prav. PHP podporuje mnoho knihoven pro r˚ uzn´e u ´ˇcely - napˇr´ıklad zpracov´an´ı textu, grafiky, pr´aci se soubory, pˇr´ıstup k vˇetˇsinˇe datab´azov´ ych syst´em˚ u. V´ yhody PHP: • PHP je specializovan´e na webov´e str´anky, • rozs´ahl´ y soubor funkc´ı v z´akladn´ı knihovnˇe PHP (pˇres pˇet a p˚ ul tis´ıce), • nativn´ı podpora mnoha datab´azov´ ych syst´em˚ u, • multiplatformost (zejm´ena Linux a Microsoft Windows), • podpora na hostingov´ ych sluˇzb´ach – PHP je fakticky standardem, kter´ y najdeme vˇsude, • svobodn´a licence, kter´a (v protikladu k napˇr´ıklad GPL) neobsahuje copyleft. Nev´ yhody PHP: • nekonzistentn´ı pojmenov´an´ı funkc´ı, napˇr´ıklad: strpos(), strchr(), ale str replace(), str pad(), • ve standardn´ı distribuci chyb´ı lad´ıc´ı (debugovac´ı) n´astroj. Pro sv˚ uj projekt jsem zvolil PHP z d˚ uvodu jednoduchosti skriptov´an´ı a podobnosti s programovac´ım jazykem C a Java.
2.5.3
Skripty na stranˇ e klienta
Skriptov´an´ı na stranˇe klienta je technologie, kde se skript um´ıstˇen´ y na webov´ ych str´ank´ach vykon´av´a ve webovem prohl´ıˇzeˇci uˇzivatele. Jedn´a se pˇredevˇs´ım o jazyky AJAX, JavaScript a Flash. 15
Technologie
Webov´e rozhran´ı
JavaScript je multiplatformn´ı, objektovˇe orientovan´ y skriptovac´ı jazyk, jehoˇz autorem je Brendan Eich z tehdejˇs´ı spoleˇcnosti Netscape. Pouˇz´ıv´a jako interpretovan´ y programovac´ı jazyk pro WWW str´anky, vkl´adan´ y pˇr´ımo do HTML k´odu str´anky. Jsou j´ım obvykle ovl´ad´any r˚ uzn´e interaktivn´ı prvky GUI (tlaˇc´ıtka, textov´a pol´ıˇcka) nebo tvoˇreny animace a efekty obr´azk˚ u. Jeho syntaxe patˇr´ı do rodiny jazyk˚ u C/C++/Java. Slovo Java je vˇsak souˇc´ast´ı jeho n´azvu pouze z marketingov´ ych d˚ uvod˚ u. Program v JavaScriptu se spouˇst´ı aˇz po staˇzen´ı WWW str´anky z Internetu (tzv. na stranˇe klienta), na rozd´ıl od ostatn´ıch jin´ ych interpretovan´ ych programovac´ıch jazyk˚ u (napˇr´ıklad PHP a ASP). Z toho plynou jist´a bezpeˇcnost´ı omezen´ı, JavaScript napˇr´ıklad nem˚ uˇze pracovat se soubory, aby t´ım neohrozil soukrom´ı uˇzivatele. Pro sv˚ uj projekt jsem si vybral JavaScript pro jeho rozs´ahl´ y framework jQuery.
2.5.4
jQuery
JQuery je JavaScriptov´a knihovna (framework) s vlastn´ı, neust´ale se rozr˚ ustaj´ıc´ı sadou funkc´ı, kter´a usnadˇ nuje pr´aci s JavaScriptem. Klade d˚ uraz na jednoduchost, ˇcitelnost a rychlost. Je multiplatformn´ı a je dostupn´a zdarma. M´a mnoho funkc´ı: • jednoduchou manipulace s CSS, • selektory, • efekty (pomoc´ı pˇreddefinovan´ ych funkc´ı), • jednoduch´a tvorba animac´ı, • spoustu plugin˚ u, • utility – napˇr´ıklad informace o prohl´ıˇzeˇci.
2.5.5
dataTables
DataTables je plug-in jQuery. Je to velmi flexibiln´ı n´astroj, zaloˇzen´ y na z´akladech HTML tabulky, d´ıky kter´emu m˚ uˇzeme pˇridat pokroˇcil´e interakce ovl´adac´ıch prvk˚ u a dalˇs´ı funkce. Kl´ıˇcov´e vlastnosti: 16
Technologie
Webov´e rozhran´ı
• variabiln´ı d´elka str´ankov´an´ı, • sloupce s moˇznost´ı tˇr´ıdˇen´ı, • inteligentn´ı manipulace ˇs´ıˇrek sloupc˚ u, • zobrazen´ı dat z t´emˇeˇr jak´ehokoli zdroje dat. Tˇechto v´ yhod bylo v projektu vyuˇzito prakticky pro veˇsker´e v´ ypisy z datab´aze, pˇredevˇs´ım kv˚ uli pˇrehlednosti, moˇznosti rychl´eho filtrov´an´ı nad v´ ysledky a volby poˇctu v´ ysledk˚ u na str´anku.
17
3 Instalace a konfigurace Pro potˇreby projektu mi byl pˇridˇelen virtu´aln´ı stroj, na kter´em jsem provedl instalaci operaˇcn´ıho syst´emu Debian Wheezy. N´asleduj´ıc´ı popis instalac´ı bude tedy odpov´ıdat t´eto verzi Linuxu. Pro funkˇcnost projektu Swatcher je nutn´e nainstalovat a nakonfigurovat tyto komponenty: • Syslog-ng - logovac´ı daemon, • Syslog-ng-mod-sql - modul Syslog-ng umoˇzn ˇuj´ıc´ı ukl´ad´an´ı pˇr´ıchoz´ıch log˚ u do datab´aze, • MySQL - datab´azov´ y syst´em, • Apache - HTTP server a nastavit zabezpeˇcen´ı serveru, • WebAuth - zabezpeˇcen´ı pˇr´ıstup˚ u na webov´e str´anky, • Firewall - slouˇz´ı k ˇr´ızen´ı a zabezpeˇcen´ı s´ıt’ov´eho provozu, • PHP 5 - hypertextov´ y procesor.
3.1
Syslog-ng
3.1.1
Instalace
Instalaci provedeme s pˇrihl´aˇsen´ ym uˇzivatelem root pˇr´ıkazem:apt-get install syslog-ng-mod-sql. Nainstaluje se n´am nejen bal´ıˇcek pro ukl´ad´an´ı do datab´aze, ale z´aroveˇ n i vˇsechny bal´ıˇcky potˇrebn´e pro jeho fungov´an´ı, takˇze Syslog-ng.
3.1.2
Konfigurace serveru
Syslog-ng uchov´av´a sv´e konfiguraˇcn´ı soubory ve sloˇzce /etc/syslog-ng/. Pro odpov´ıdaj´ıc´ı funkˇcnost bude potˇreba upravit soubor: 18
Instalace a konfigurace
Syslog-ng
/etc/syslog-ng/syslog-ng.conf. Konfiguraˇcn´ı soubor m´a segmenty: source, destination, filter a log path. Urˇc´ıme tedy odkud budeme pˇrij´ımat logy vloˇzen´ım n´asleduj´ıc´ıch ˇra´dk˚ u do source: source src { unix-dgram("/var/run/log"); unix-dgram("/var/run/logpriv" perm(0600)); udp( ip(192.168.1.155) port(514) ); internal(); file("/dev/klog"); };
T´ım jsou nastaveny port a IP adresa, na kter´e bude Syslog-ng oˇcek´avat spojen´ı od zdroj˚ u. D´ale urˇc´ıme c´ılov´e u ´loˇziˇstˇe pˇrij´ıman´ ych log˚ u pˇrid´an´ım n´asleduj´ıc´ıch ˇra´dk˚ u do destination: destination d_mysql { program("/usr/bin/mysql --uswatcher Syslog --ppassword" template("INSERT INTO Hosts (host) VALUES ( ’$HOST’ ) ON DUPLICATE KEY UPDATE last_update = NOW(); INSERT INTO Logs (id_host, facility, priority, level, tag, datetime, program, msg) (SELECT id, ’$FACILITY’, ’$PRIORITY’, ’$LEVEL’, ’$TAG’, ’$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC’, ’$PROGRAM’, ’$MSG’ FROM Hosts WHERE host = ’$HOST’);\n") template-escape(yes)); }
Nakonec urˇc´ıme ˇze Syslog-ng m´a logovat ze zdroje src do u ´loˇziˇstˇe d_mysql n´asleduj´ıc´ımi ˇr´adky do log paths: log { source(src); destination(d_mysql); };
Pokud nechceme d´ale nastavovat jak´e informace chceme od partner˚ u pˇrij´ımat, a jak´e ne, je nastaven´ı filters v tomto konfiguraˇcn´ım souboru je pro n´as ned˚ uleˇzit´e. Po uloˇzen´ı konfiguraˇcn´ıho souboru je nutn´e restartovat sluˇzbu Syslogng daemona, to provedeme pˇr´ıkazem: /etc/init.d/syslog-ng restart. 19
Instalace a konfigurace
3.1.3
MySQL
Konfigurace klientsk´ ych stanic
Konfigurace klientsk´ ych stanic spoˇc´ıv´a v nastaven´ı logov´an´ı syst´emu na vzd´alenou IP. Urˇc´ıme tedy jak´e logy budeme vzd´alen´emu serveru odes´ılat (poskytovat) vloˇzen´ım n´asleduj´ıc´ıho k´odu do sources: source s_all { # message generated by Syslog-NG internal(); # standard Linux log source (this is the default place for the syslog() # function to send logs to) unix-stream("/dev/log"); # messages from the kernel file("/proc/kmsg" program_override("kernel: ")); # use the above line if you want to receive remote UDP logging messages # (this is equivalent to the "-r" syslogd flag) # udp(); };
D´ale urˇc´ıme c´ılov´e u ´loˇziˇstˇe pˇrij´ıman´ ych log˚ u pˇrid´an´ım n´asleduj´ıc´ıch ˇr´adk˚ u do destination:
destination net_remote_logServer1 { tcp("192.168.200.230"); };
Nakonec urˇc´ıme, ˇze Syslog-ng m´a logovat ze zdroje src na vzd´alen´ y logovac´ı server n´asleduj´ıc´ım ˇr´adkem do log paths: log { source(s_all); destination(net_remote_logServer1); };
3.2
MySQL
3.2.1
Instalace
Instalaci provedeme s pˇrihl´aˇsen´ ym uˇzivatelem root pˇr´ıkazem: apt-get install mysql-server mysql-client. T´ımto nainstalujeme jak MySQL server, tak klienta potˇrebn´eho pro pˇripojen´ı a dalˇs´ı knihovny. 20
Instalace a konfigurace
3.2.2
MySQL
Konfigurace
Pro moˇznost pˇripojen´ı do datab´aze mus´ıme prov´est konfiguraci. Konfiguraˇcn´ı soubory MySQL serveru se nach´az´ı ve sloˇzce /etc/mysql/my.cnf. Nastaven´ım, kter´e n´as bude prim´arnˇe zaj´ımat bude bind-address, kter´a urˇcuje na jak´e adrese bude poslouchat pˇr´ıchoz´ı spojen´ı sluˇzba MySQL serveru, hodnotu si m˚ uˇzeme zvolit dle potˇreby.
3.2.3
Tabulky datab´ aze
Datab´aze projektu obsahuje tabulky (viz obr. 3.1): • Logs Tabulka Logs slouˇz´ı k uchov´av´an´ı log˚ u, kter´e jsou vloˇzeny do syst´emu. Struktura tabulky vych´az´ı z potˇreb modulu syslog-ng-mod-sql. • Hosts Tabulka Hosts slouˇz´ı k uchov´av´an´ı gener´ator˚ u log˚ u (p˚ uvodc˚ u jednotliv´ ych log˚ u). • Filters Tabulka Filters slouˇz´ı k uchov´an´ı filtr˚ u, at’ uˇz uˇzivatelsk´ ych, nebo vstupn´ıch (viz bod 6). Zda je filtr vstupn´ı nebo uˇzivatelsk´ y se ukl´ad´a do relaˇcn´ı tabulky Primitive_in_filter. • Primitive_filters Tabulka Primitive_filters obsahuje jednotliv´e filtry. • Primitive_in_filter Tabulka Primitive_in_filter je relaˇcn´ı tabulka, kter´a uchov´av´a informace o relac´ıch mezi tabulkami Filters a Primitive_filters. Stuktura jednotliv´ ych tabulek je vidˇet na obr´azku 3.1.
21
Instalace a konfigurace
MySQL
Obr´azek 3.1: Era model
3.2.4
Trigger
Trigger funguje na principu, ˇze vybere vˇsechny vstupn´ı filtry z tabulky Primitive_filters. Postupnˇe proch´az´ı po sloupc´ıch veˇsker´e z´aznamy a porovn´av´a jestli se obsah ve sloupci pˇr´ıchoz´ı zpr´avy nenach´az´ı v nˇekter´em sloupci, nebo je nulov´ y. Je tedy prakticky vyuˇzit princip logick´eho souˇcinu. Pokud tedy pˇr´ıchoz´ı z´aznam nebyl nalezen v z´aznamech vstupn´ıho filtru, je uloˇzen do datab´aze. V´ ysledn´ y trigger pouˇzit´ y v syst´emu m´a tvar: delimiter // CREATE TRIGGER inputFilter before insert on Logs for each row begin declare msg varchar(255); IF (SELECT COUNT(*) FROM Primitive_filters, Primitive_in_filter, Filters WHERE Filters.name = "input" AND Filters.id = Primitive_in_filter.id_filter AND Primitive_in_filter.id_primitive = Primitive_filters.id AND Primitive_filters.id_host LIKE CONCAT(’%’,(SELECT host FROM Hosts WHERE id = new.id_host),’%’) OR Primitive_filters.id_host IS NULL)
22
Instalace a konfigurace
Apache
AND (Primitive_filters.facility LIKE CONCAT(’%’,new.facility,’%’) OR Primitive_filters.facility IS NULL) AND (Primitive_filters.priority LIKE CONCAT(’%’,new.priority,’%’) OR Primitive_filters.priority IS NULL) AND (Primitive_filters.tag LIKE CONCAT(’%’,new.tag,’%’) OR Primitive_filters.tag IS NULL) AND (Primitive_filters.program LIKE CONCAT(’%’,new.program,’%’) OR Primitive_filters.program IS NULL) AND (new.msg REGEXP Primitive_filters.msg OR Primitive_filters.msg IS NULL)) > 0 THEN CALL raise_error; END IF; END //
3.3 3.3.1
Apache Instalace
Instalaci provedeme s pˇrihl´aˇsen´ ym uˇzivatelem root pˇr´ıkazem: apt-get install apache2. T´ımto nainstalujeme HTTP server Apache.
3.3.2
Konfigurace
Konfiguraci HTTP serveru m˚ uˇzeme ponechat v defaultn´ım nastaven´ı, pouze se mus´ı zajistit konfigurace WebAuth, kter´e zajiˇst’uje zabezpeˇcen´ı.
3.4 3.4.1
WebAuth Instalace
Instalaci provedeme na syst´emu linux, s pˇrihl´aˇsen´ ym uˇzivatelem root pˇr´ıkazem: apt-get install libapache2-webauth. T´ımto nainstalujeme moduly WebAuth do HTTP serveru Apache (konkr´etnˇe mod webauth, 23
Instalace a konfigurace
WebAuth
mod webauthldap a mod webkdc). D´ale budeme potˇrebovat OpenSSL. Ten nainstalujeme stejnˇe jako moduly k Apache2.
3.4.2
Konfigurace
Pˇri konfiguraci WebAuth jsem vych´azel z n´avodu1 , kter´ y vypracovalo stˇredisko CIV Z´apadoˇcesk´e univerzity. Pro plnou funkˇcnost WebAuth na stranˇe naˇs´ı aplikace se mus´ı prov´est nastaven´ı jednotliv´ ych modul˚ u. Definice nastaven´ı pro modul mod_webauth: WebAuthLoginURL "https://webkdc.zcu.cz/login.fcgi" #URL odkazuj´ ıc´ ı na pˇ rihlaˇ sovac´ ı formul´ aˇ r WebAuthWebKdcURL "https://webkdc.zcu.cz/webkdc-service/" #URL odkazuj´ ıc´ ı na adresu, kam aplikaˇ cn´ ı servery pˇ r´ ımo pos´ ılaj´ ı kryptovan´ e poˇ zadavky WebAuthWebKdcPrincipal webkdc/webkdc #obsahuje n´ azev krb principalu sluˇ zby WebKDC WebAuthKeyring /etc/webauth/keyring #souvis´ ı s lok´ alnˇ e uloˇ zen´ ym priv´ atn´ ım AES kl´ ıˇ cem aplikaˇ cn´ ıho serveru, sdˇ eluje kde dan´ y kl´ ıˇ c leˇ z´ ı WebAuthKeyringAutoUpdate on #souvis´ ı s lok´ alnˇ e uloˇ zen´ ym priv´ atn´ ım AES kl´ ıˇ cem aplikaˇ cn´ ıho serveru, povoluje modulu automatickou zmˇ enu tohoto kl´ ıˇ ce WebAuthKeyringKeyLifetime 30d #souvis´ ı s lok´ alnˇ e uloˇ zen´ ym priv´ atn´ ım AES kl´ ıˇ cem aplikaˇ cn´ ıho serveru, urˇ cuje jak dlouho m˚ uˇ ze b´ yt jednou vygenerovan´ y kl´ ıˇ c pouˇ z´ ıv´ an pˇ red dalˇ s´ ı v´ ymˇ enou WebauthKeytab /etc/webauth/keytab #sdˇ eluje, kde na disku je moˇ zn´ e naj´ ıt kl´ ıˇ c krb principalu aplikaˇ cn´ ıho serveru WebAuthServiceTokenCache /etc/webauth/service_token.cache #slouˇ z´ ı k uloˇ zen´ ı service-tokenu, kter´ y se tak st´ av´ a pouˇ ziteln´ ym pro vˇ sechny novˇ e vytv´ aˇ ren´ e procesy WWW serveru Apache.
Konfigurace modulu mod_webauthldap: WebAuthLdapHost ldap.zcu.cz #na kter´ em serveru bude WebAuthLDAP hledat informace pro autorizaci 1
http://support.zcu.cz/index.php/LPS:WebAuth/Konfigurace_WebAuthu
24
Instalace a konfigurace
WebAuth
podle skupin. WebAuthLdapBase ou=rfc2307,o=zcu,c=cz #definuje konkr´ etn´ ı ´ uloˇ ziˇ stˇ e s informacemi o skupin´ ach. WebAuthLdapAuthorizationAttribute cn #urˇ cuje, kter´ y atribut koresponduje s poloˇ zkou v LDAPu obsahuj´ ıc´ ı skupiny uˇ zivatel˚ u WebAuthLdapKeytab /etc/apache2/ldapkeytab webauth/karkinos.civ.zcu.cz #obsahuje odkaz na soubor s kl´ ıˇ cem krb principalu pouˇ zit´ eho pro dotaz na LDAP server WebAuthLdapFilter memberUid=USER #definuje filtr do LDAPu, kter´ y urˇ cuje, na kterou z poloˇ zek je mapov´ an login uˇ zivatel˚ u WebAuthLdapTktCache /tmp/webauthldap.tkt #urˇ cuje Kerberos cache, kter´ a pokud obsahuje validn´ ı krb ticket, tak je pouˇ zit, jinak je pouˇ zit dˇ r´ ıve definovan´ y keytab k z´ ısk´ an´ ı nov´ eho krb ticketu
Dalˇs´ı ˇca´st konfigurace uˇz se t´ yk´a pˇr´ımo chr´anˇen´ı pˇr´ıstupu pro definovan´ y adres´aˇr pomoc´ı WebAuth SSO ˇreˇsen´ı.
SSLRequireSSL Options -Indexes +FollowSymLinks AllowOverride All Order allow,deny Allow from all DirectoryIndex index.php SSLOptions +ExportCertData +StdEnvVars +FakeBasicAuth +OptRenegotiate AuthType WebAuth #definuje, ˇ ze pˇ r´ ıstup pro dan´ y adres´ aˇ r je pouˇ z´ ıv´ ana sluˇ zba WebAuth Require privgroup lps #urˇ cuje seznam povolen´ ych skupin uˇ zivatel˚ u (zde skupinu lps) require user phvezda #ˇ r´ adek obsahuje explicitn´ ı seznam povolen´ ych uˇ zivatel˚ u, kteˇ r´ ı budou autorizov´ ani bez ohledu na pˇ r´ ısluˇ snost v nˇ ekter´ e ze skupin.
Tak´e je nutn´e z´ıskat SSL certifik´at pro webov´ y server. Na webov´e str´ance ˇz´adosti o certifik´at zvol´ıme jm´eno organizace ˇcesky, vypln´ıme dom´enov´e jm´eno (v naˇsem pˇr´ıpadˇe karkinos.civ.zcu.cz), a kliknut´ım na OpenSSL tlaˇc´ıtko provedeme vygenerov´an´ı konfiguraˇcn´ıho souboru OpenSSL. Ten si ˇ adost o certifik´at vygeneuloˇz´ıme napˇr´ıklad do souboru server-req.cfg. Z´ rujeme pˇr´ıkazem:
25
Instalace a konfigurace
WebAuth
openssl req -new -keyout server.key.org out server.csr -config server-req.cfg Z vygenerovan´eho kryptovan´eho souboru s kl´ıˇcem vygenerujeme jeˇstˇe nekryptovanou PEM verzi soukrom´eho kl´ıˇce RSA pˇr´ıkazem: openssl rsa -in server.key.org -out server.key V´ yslednou ˇza´dost vygenerujeme pˇr´ıkazem: openssl req -in server.csr -text Takto vygenerovanou ˇza´dost (soubor server.csr zaˇsleme na e-mailovou adresu
[email protected]. Po schv´alen´ı a vygenerov´an´ı certifik´atu n´am administr´atoˇri zaˇslou e-mailem zpˇet hotov´ y certifik´at. E-mail by mˇel b´ yt n´asledovnˇe strukturovan´ y: N´ azev serveru Popis a ´ uˇ cel Administr´ ator web. serveru, e-mail Pouˇ z´ ıvan´ e aliasy D´ elka platnosti cert (standardnˇ e 2 roky)
Po obdrˇzen´ı certifik´atu je nutn´e v konfiguraˇcn´ım souboru Apache pro pˇr´ıchoz´ı spojen´ı na portu 443 vloˇzit n´asleduj´ıc´ı ˇr´adky:
SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW: +SSLv2:+EXP:+eNULL SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key SSLCertificateChainFile /etc/apache2/ssl/ca-chain.pem
Nakonec pˇresmˇerujeme pˇr´ıchoz´ı spojen´ı na portu 80 na SSL (port 443, tj. na adresu https://karkinos.civ.zcu.cz.
26
Instalace a konfigurace
3.5
Firewall
Firewall
V operaˇcn´ım syst´emu Debian, kter´ y jsem instaloval na server je nastaven jako defaultn´ı firewall iptables. Firewall byl nastaven m´ ym vedouc´ım dle ˇ norem stˇrediska ZCU - CIV.
3.6 3.6.1
PHP 5 Instalace
Instalaci provedeme s pˇrihl´aˇsen´ ym uˇzivatelem root pˇr´ıkazem:apt-get install php5 php5-cli. T´ımto nainstalujeme PHP 5 a jeho modul pro spoutˇen´ı skript˚ u z pˇr´ıkazov´e ˇra´dky.
27
4 Zpracov´an´ı log˚ u V s´ıti Z´apadoˇcesk´e univerzity se logov´an´ı prov´ad´ı na 2 centr´aln´ı logovac´ı servery, jeden ze tˇechto server˚ u pˇresmˇerov´av´a pˇr´ıchoz´ı logy na m˚ uj projekt. Swatcher pˇrepos´ıl´a sv´e logy na oba logovac´ı servery. Pˇribliˇzn´a zjednoduˇsen´a infrastruktura tedy vypad´a viz obr. 4.1.
ˇ Obr´azek 4.1: Infrastruktura logov´an´ı ZCU
4.1
Logy v syst´ emu Swatcher
Pˇr´ıchoz´ı logy do syst´emu Syslog-ng rozdˇel´ı na jednotliv´e ˇca´sti (datetime, program, priority atd.) a provede vloˇzen´ı do tabulky Logs, pokud nejsou obsaˇzeny ve vstupn´ım filtru (viz bod 6.1). O uloˇzen´ı ˇci neuloˇzen´ı pˇr´ıchoz´ıho logu rozhoduje trigger, kter´ y je nastaven nad tabulkou Logs, kam se pˇr´ıchoz´ı logy ukl´adaj´ı na akci before insert. Logy kter´e projdou t´ımto filtrov´an´ım, jsou 28
Zpracov´an´ı log˚ u
Logy v syst´emu Swatcher
uloˇzeny do v´ yˇse zm´ınˇen´e tabulky Logs do jednotliv´ ych sloupc˚ u odpov´ıdaj´ıch jednotliv´ ym ˇc´astem informac´ı z logu. Pˇri otevˇren´ı webov´eho prohl´ıˇze a naˇcten´ı u ´vodn´ı str´anky jsou naˇcteny veˇsker´e logy obsaˇzen´e v syst´emu, s limitem zobrazen´ı 1000 zpr´av, coˇz je vzhledem k u ´ˇcelu projektu naprosto dostaˇcuj´ıc´ı (moˇznost nastaven´ı viz modul config.php).
4.1.1
Zpracov´ an´ı log˚ u kernelu
Logy generovan´e samotn´ ym jadern´ ym modulem (kernelem), jsou ponˇekud odliˇsn´e od ostatn´ıch log˚ u. Jsou generov´any pˇri startu syst´emu, spuˇsnˇen´ı/reakce nˇejak´eho modulu j´adra, popˇr´ıpadˇe pˇri kritick´ ych chyb´ach. Tyto logy jsou pro spr´avce syst´emu velice d˚ uleˇzit´e, ˇreknˇeme prvoˇrad´e, jelikoˇz j´adro je z´akladn´ım stavebn´ım kamenem cel´eho syst´emu, tud´ıˇz jeho stabilita ovlivˇ nuje chov´an´ı celku. Logy generov´an´e kernelem jsou unik´atn´ı v tom, ˇze na poˇca´tku zpr´avy obsahuj´ı timestamp, kter´ y pˇresnˇe na milisekundy urˇcuje ˇcas ud´alosti od spuˇstˇen´ı syst´emu, coˇz u jin´ ych log˚ u nenajdeme (tato funkˇcnost bohuˇzel chyb´ı ve starˇs´ıch j´adrech). Takov´ yto z´aznam vypad´a pˇribliˇznˇe takto: : [3999154.040920] svc: 147.228.52.200, port=59439: unknown version (0 for prog 100003, nfsd)
Prvn´ıch sedm ˇc´ısel vyjadˇruje vteˇriny, zbyl´ ych 6 ˇc´ıslic pak niˇzˇs´ı ˇcasov´e ˇr´ady. Syslog-ng na koncov´e stanici sb´ır´a logy syst´emem ˇcek´an´ı na zmˇenu v souboru, kam program (modul ˇci jin´a souˇc´ast) logy ukl´ad´a. Kernel ale vygeneruje nˇekolik log˚ u“ nebo sp´ıˇse z´aznam˚ u za nepatrn´ y ˇcas, respektive s nepatrn´ ym ” ˇcasov´ ym rozd´ılem (v r´amci mikrosekund aˇz jedn´e vteˇriny), ale tyto zaznamenan´e jednotliv´e logy jsou v´az´any k jedn´e ud´alosti, popˇr´ıpadˇe by mˇely b´ yt br´any jako jedna ud´alost a tak i jako jeden v´ ypis, to se ale nedˇeje (d´ıky syst´emu ukl´ad´an´ı log˚ u do souboru a n´asledn´eho ˇcten´ı). V´ ysledkem tedy je nˇekolik z´aznam˚ u v datab´azi, kter´e je nutno spojit dle urˇcit´eho pravidla. Rozhodl jsem se nastaven´ım napl´anovan´e u ´lohy v crontabu syst´emu, na kter´em bˇeˇz´ı Swatcher, spustit kaˇzdou minutu php skript (viz modul timestamp.php), kter´ y prov´ad´ı n´asleduj´ıc´ı operace: Nejprve si vyp´ıˇse veˇsker´e logy z datab´aze, kde se programID rovn´a programu kernel a seˇrad´ı je vzestupnˇe dle ˇcasu a id stanice, od kter´e byl log obdrˇzen. Pot´e po jednom z´aznamu porovn´a s n´asleduj´ıc´ım z´aznamem id stanice (id v tabulce Hosts), ˇcas ve vteˇrin´ach (tj. prvn´ıch 7 ˇc´ıslic timestampu) a n´aslednˇe odeˇcte ˇcas v niˇzˇs´ıch ˇra´dech (zbyl´a ˇsestice ˇc´ısel) prvn´ı a n´adleduj´ıc´ı ud´alosti, pokud je tento rozd´ıl z´aporn´ y ˇci nulov´ y (k 29
Zpracov´an´ı log˚ u
Logy v syst´emu Swatcher
tomuto nastaven´ı slouˇz´ı promˇenn´a timestamp v modulu config.php), dojde k meziuloˇzen´ı textu prvn´ı ud´alosti a pˇripojen´ı textu z ud´alosti druh´e. Takto skript projde celou datab´azi. Logy, kter´e byly spojeny, smaˇze a vytvoˇr´ı jeden nov´ y log, kter´emu na zaˇc´atek textov´e zpr´avy vloˇz´ı timestamp.
4.1.2
Pr´ ace s logy v syst´ emu Swatcher
Pr´ace s logy v syst´emu Swatcher je rozdˇelena do nˇekolika moˇzn´ ych sc´en´aˇr˚ u. 1. Uˇzivatel nebo administr´ator hled´a konkr´etn´ı z´aznamy v datab´azi. • Vyuˇzije tabulku Advanced filtering. Textov´e pole Text je vyhodnocov´ano regul´arn´ımi v´ yrazy. Pokud tedy chceme vyuˇz´ıt nˇejak´ y ze speci´aln´ıch znak˚ u pˇri vyhled´av´an´ı hol´eho textu, mus´ıme pˇred nˇej vloˇzit zpˇetn´e lom´ıtko. • Po stisknut´ı tlaˇc´ıtka Apply je vyps´ano aˇz 5000 log˚ u (z d˚ uvodu efektivity a rychlosti dataTables, moˇznost nastaven´ı pomoc´ı promˇenn´e v modulu config.php), kter´e odpov´ıdaj´ı naˇsim krit´eri´ım. • Z´aroveˇ n se zobraz´ı kontextov´e menu (viz obr. 4.2), kter´e vyp´ıˇse poˇcet log˚ u ovlivnˇen´ ych naˇsim v´ ybˇerem, nab´ız´ı volby Save as filter a pouze administr´ator pak Add to input filter (viz obr. 4.2).
Obr´azek 4.2: Kontextov´e menu 2. Administr´ator ve v´ ypisu log˚ u nalezne z´aznam, kter´ y nechce v syst´emu uchov´avat. • Vyuˇzije rolovac´ıho menu Detail v tabulce v´ ysledk˚ u a zvol´ı akci:
30
Zpracov´an´ı log˚ u
Logy v syst´emu Swatcher
ignore event pˇridej tento z´aznam do vstupn´ıho filtru pro tento stroj (tato ud´alost od tohoto stroje nebude uloˇzena do syst´emu). ignore this host pˇridej tento stroj dovstupn´ıho filtru (ˇz´adn´a ud´alost, kter´a pˇrijde od tohoto stroje nebude uloˇzena do syst´emu). ignore event for all pˇridej tento z´aznam do vstupn´ıho filtru (tato ud´alost od tohoto stroje nebude uloˇzena do syst´emu). • Po stisknut´ı tlaˇc´ıtka Save se provede uloˇzen´ı do vstupn´ıho filtru. 3. Administr´ator chce smazat ˇci upravit uloˇzen´e vstupn´ı filtry, popˇr´ıpadˇe pˇridat nov´ y. • Kliknut´ım na tlaˇc´ıtko Edit input filter na hlavn´ı str´ance se dostane na str´anku s moˇznost´ı editov´an´ı vstupn´ıho filtru (viz obr. 4.3). • Pokud chce vytvoˇrit nov´ y z´aznam, stiskne tlaˇc´ıtko Add new row, do datab´aze je tedy vloˇzen nov´ y z´aznam, kter´ y je nepr´azdn´ y (sloupec Text je vyplnˇen upozornˇen´ım, ˇze se filtr nesm´ı uloˇzit pr´azdn´ y). • Pokud chce upravit jiˇz existuj´ıc´ı z´aznam, m˚ uˇze prov´est libovoln´e zmˇeny v jednom ˇra´dku a stisknut´ım tlaˇc´ıtka Save z´aznam uloˇzit. • Tlaˇc´ıtkem Delete libovoln´ y z´aznam smaˇze. • Stisknut´ım tlaˇc´ıtka Test, lze zkontrolovat vyplnˇen´e u ´daje, syst´em vyp´ıˇse kter´e sloupce jsou v poˇr´adku a kter´e ne. D´ale vyˇc´ısl´ı poˇcet ovlivnˇen´ ych log˚ u.
Obr´azek 4.3: Editace vstupn´ıho filtru
31
5 Statistiky dat V s´ıti Z´apadoˇcesk´e univerzity se v roce 2012 nach´azelo 349 gener´ator˚ u log˚ u. Tyto zdroje vygenerovaly ve zm´ınˇen´em roce 2012 - 673 GB (viz obr. 5.1), coˇz je pˇri pr˚ umˇern´e d´elce odes´ılan´e zpr´avy (logu) 147.332B cca 4897260864 log˚ u. Jednoduch´ ym v´ ypoˇctem dostaneme poˇcet pˇr´ıchoz´ıch log˚ u na centr´aln´ı servery za sekundu: 4897260864/365/24/60/60 = 155.29 zaznam˚ u/s V´ ysledek ud´av´a pouze pr˚ umˇernou hodnotu log˚ u, kter´e jsou ukl´ad´any do syst´emu. Bˇehem mˇeˇren´ı, kter´e probˇehlo dne 25.4., probˇehlo vyˇciˇstˇen´ı tabulek v MySQL a spuˇstˇen´ı bez zadan´ ych vstupn´ıch filtr˚ u. Za 180 minut se do syst´emu uloˇzilo 2 534 300 log˚ u ze 341 zdroj˚ u. Po pˇrid´an´ı nˇekolika z´akladn´ıch vstupn´ıch filtr˚ u, se poˇcet log˚ u v datab´azi zkr´atil na 23 723. Dle testu lze usoudit, ˇze pro m˚ uj virtu´aln´ı stroj bylo pˇridˇeleno dostateˇcn´e mnoˇzstv´ı v´ ypoˇcetn´ıho v´ ykonu.
Obr´azek 5.1: Statistiky velikost´ı log˚ u pro rok 2012 32
6 Filtry Syst´em filtr˚ u v syst´emu je rozdˇelen do dvou kategori´ı: vstupn´ı filtry a uˇzivatelsk´e filtry.
6.1
Vstupn´ı filtry
Vstupn´ı filtry v syst´emu pˇredstavuj´ı mnoˇzinu ud´alost´ı, kter´e nechceme zaznamen´avat. V syst´emu jako takov´em reprezentuje tuto mnoˇzinu pravidel pouze jeden prvek a to je filtr Input v tabulce Filters, na nˇej jsou pak nav´az´any dalˇs´ı z´aznamy z relaˇcn´ı tabulky Primitive_in_filter a z n´ı jednotliv´a pravidla v tabulce Primitive_filters. Editovat tato pravidla m˚ uˇzeme na str´ance, kter´a se naˇcte po zm´aˇcknut´ı tlaˇc´ıtka Edit input filter, kter´e je dostupn´e pouze pro administr´atory (viz bod 8.5).
6.2
Uˇ zivatelsk´ e filtry
Uˇzivatelsk´e filtry jsou mnoˇzinou filtr˚ u, kter´e si navolil s´am uˇzivatel ve webov´em rozhran´ı. Slouˇz´ı pˇredevˇs´ım pro usnadnˇen´ı manipulace uˇzivatele se syst´emem, aby nemusel st´ale v pˇr´ıpadˇe potˇreby vyplˇ novat stejn´e u ´daje. Veˇsker´e uˇzivatelsk´e filtry ukl´adan´e do syst´emu mus´ı m´ıt unik´atn´ı n´azev a nesm´ı se jmenovat input, coˇz je i syst´emem kontrolov´ano. Takto uloˇzen´e filtry si m˚ uˇze uˇzivatel aplikovat zvolen´ım filtru v tabulce Options a stisknut´ım tlaˇc´ıtka Apply selected filter (viz bod 8.2). Tyto filtry slouˇz´ı k prohl´ıˇzen´ı log˚ u, kter´e nebyly odfiltrov´any Input filtrem“. ”
6.3
Tvar filtr˚ u
Tvar filtr˚ u ukl´adan´ ych do datab´aze byl bˇehem psan´ı projektu nˇekolikr´at zmˇenˇen z d˚ uvodu neucelen´eho pohledu na problematiku. Tabulka Primitive_filters obsahuje prakticky stejn´e sloupce jako tabulka Logs, nav´ıc byl ovˇsem pˇrid´an sloupec user, kter´ y indikuje jak´ y uˇzivatel filtr vytvo33
Filtry
Tvar filtr˚ u
ˇril a sloupec datetime, z d˚ uvodu ˇcasov´eho u ´daje o vytvoˇren´ı filtru (´ upravˇe). Z d˚ uvodu moˇznosti nˇekolikan´asobn´eho v´ ybˇeru u ´daj˚ u u program, priority, facility a hosts jsou jednotliv´e u ´daje ukl´ad´any do sloupc˚ u ve tvaru: ’kernel’, ’syslog-ng’ Zpr´ava je ponech´ana v p˚ uvodn´ım tvaru, jen obsahuje nulov´an´ı speci´aln´ıch znak˚ u (viz bod 7).
34
7 Regul´arn´ı v´yrazy Regul´arn´ı v´ yraz (zkracov´ano na regexp, regex ˇci jen RE podle anglick´eho regular expression) je ˇretˇezec popisuj´ıc´ı celou mnoˇzinu ˇretˇezc˚ u. Pˇredstavil je americk´ y matematik Stephen Cole Kleene. V m´em projektu byly regul´arn´ı v´ yrazy zvoleny pˇredevˇs´ım pro jejich obecnost a moˇznosti, kter´ ymi se d´a definovat cel´ y obsah zpr´avy. Uk´azkou vyuˇzit´ı je zpr´ava, kde se objevuje uˇzivatelsk´e jm´eno a n´as zaj´ım´a pouze co udˇelal uˇzivatel root. Tento probl´em by bez regul´arn´ıch v´ yraz˚ u neˇsel vyˇreˇsit. Abych mohl tuto funkˇcnost implementovat, vyuˇzil jsem knihovny pro MySQL - REGEXP. REGEXP se nemus´ı instalovat, je nativn´ı souˇc´ast´ı MySQL. Vyuˇz´ıv´a mnoˇzstv´ı speci´aln´ıch znak˚ u, kter´ ymi se v´ yraz definuje. Probl´em ovˇsem nast´av´a, pokud chce uˇzivatel oznaˇcit ud´alost (tj. z´aznam ve v´ ypisu log˚ u) jako neˇza´douc´ı a nechce mˇenit text, mus´ı se ve zpr´avˇe prov´est nulov´an´ı tˇechto speci´aln´ıch znak˚ u. Pokud chceme napˇr´ıklad uloˇzit zpr´avu: timeout: retrying..., syst´em j´ı uloˇz´ı do datab´aze jako: timeout: retrying\.\.\. . Aby se zpr´ava opravdu uloˇzila v tomto form´atu, mus´ı b´ yt zpˇetn´e lom´ıtko duplikov´ano, jelikoˇz v MySQL znamen´a zpˇetn´e lom´ıtko tak´e pro nulov´an´ı znak˚ u, ale n´aslednˇe ho neuloˇz´ı, mus´ıme tedy lom´ıtko vloˇzit tˇrikr´at. Dalˇs´ı komplikac´ı je ovˇsem, ˇze jazyk PHP tak´e povaˇzuje zpˇetn´e lom´ıtko za nulovac´ı znak, tud´ıˇz pokud chceme, aby teˇcky byly vynulov´any t´ımto zp˚ usobem, mus´ıme nahradit jedno zpˇetn´e lom´ıtko pˇeti zpˇetn´ ymi lom´ıtky, by se do datab´aze opravdu uloˇzilo jedno. Kompletn´ı dokumentaci k REGEXP lze nal´ezt pˇr´ımo na webov´ ych str´ank´ach MySQL1 a pr´aci s nimi pak napˇr´ıklad na tutorialspoint2 .
1 2
http://dev.mysql.com/doc/refman/5.1/en/regexp.html http://www.tutorialspoint.com/mysql/mysql-regexps.htm
35
8 Webov´e rozhran´ı Webov´e rozhran´ı je pˇrizp˚ usobeno pˇredevˇs´ım pˇrehlednosti, s moˇznost´ı efektivn´ıho pokroˇcil´eho filtrov´an´ı log˚ u. Vzhled str´anek je rozdˇelen (viz obr. 8.1) na nˇekolik ˇca´st´ı: Logo, Advanced filtering, Options a Results a v nˇekter´ ych pˇr´ıpadech, kter´e budou n´ıˇze specifikovan´e se zobraz´ı speci´aln´ı kontextov´e menu.
Obr´azek 8.1: Webov´e rozhran´ı
8.1
Advanced filtering
Tabulka Advanced filtering slouˇz´ı k vyhled´av´an´ı pˇres celou tabulku log˚ u uloˇzen´ ych v syst´emu. Nab´ız´ı moˇznost filtrovat logy podle: 1. IP/Name • Slouˇz´ı k vyhled´av´an´ı loguj´ıc´ıch stroj˚ u, pokud se nezdaˇr´ı pˇreklad IP adresy pˇrez DNS na jm´eno, je zobrazena IP adresa. • Moˇznost v´ıcen´asobn´eho v´ ybˇeru z rolovac´ıho zaˇskrt´avac´ıho menu. ˇ • Razeno abecednˇe. 2. Date • Slouˇz´ı k vyhled´av´an´ı log˚ u k urˇcit´emu datu. • Moˇznost filtrovat od-do urˇcit´eho datumu. • Pro snaˇzˇs´ı v´ ybˇer datumu je pouˇzita knihovna datepicker (JavaScript), kter´a vyvol´a kalend´aˇr s moˇznost´ı proch´azet mˇes´ıce, dny a roky. 36
Webov´e rozhran´ı
Advanced filtering
• Pokud je vyplnˇeno pouze pole od, syst´em automaticky vyp´ıˇse vˇsechny logy od n´ami zadan´eho data aˇz do aktu´aln´ıho, pokud je vyplnˇeno pouze pole do, syst´em vyp´ıˇse veˇsker´e logy z datab´aze aˇz do aktu´aln´ıho data. 3. Time • Slouˇz´ı k vyhled´av´an´ı podle ˇcasu. • Moˇznost filtrovat od-do urˇcit´eho ˇcasu. ˇ mus´ı b´ • Cas yt zad´an ve form´atu HH:MM, jinak bude vyps´ana v´ ystraˇzn´a hl´aˇska o neplatnosti zad´an´ı a pole vyˇciˇstˇeno. • Pokud je vyplnˇeno pouze pole od, syst´em automaticky vyp´ıˇse veˇsker´e logy zadan´eho aˇz do aktu´aln´ıho ˇcasu, pokud je vyplnˇeno pouze pole do, syst´em vyp´ıˇse veˇsker´e logy z datab´aze aˇz do aktua´ln´ıho ˇcasu. 4. Program • Slouˇz´ı k vyhled´av´an´ı podle programu, kter´ y dan´ y log generoval, dle RFC 5424 normy se jedn´a o procID. • Moˇznost v´ıcen´asobn´eho v´ ybˇeru z rolovac´ıho zaˇskrt´avac´ıho menu. 5. Text • Slouˇz´ı k vyhled´av´an´ı podle textu zpr´avy, dle RFC 5424 normy se jedn´a o MSG. • Moˇznost vyhled´av´an´ı podle hesel, nebo po sobˇe jdouc´ıch sekvenc´ı slov, kter´e odpov´ıdaj´ı vyhled´avan´emu textu. Text je pak interpretov´an jako regul´arn´ı v´ yraz (viz bod 7). 6. Priority • Slouˇz´ı k vyhled´av´an´ı podle priority - z´avaˇznosti ud´alosti, dle RFC 5424 normy se jedn´a o SEVERITY. • Moˇznost v´ıcen´asobn´eho v´ ybˇeru. ˇ • Razeno abecednˇe. 7. Facility • Slouˇz´ı k vyhled´av´an´ı podle facility - druhi ud´alosti, dle RFC 5424 normy se jedn´a o FACILITY. 37
Webov´e rozhran´ı
Options
• Moˇznost v´ıcen´asobn´eho v´ ybˇeru. ˇ • Razeno abecednˇe. 8. Tlaˇc´ıtko Apply • Tlaˇc´ıtko slouˇz´ıc´ı k odesl´an´ı formul´aˇre a vyhodnocen´ı vybran´ ych hodnot.
8.2
Options
Tabulka Options slouˇz´ı k manipulaci bud’ jiˇz s uloˇzen´ ymi filtry, nebo k editaci filtru vstupn´ıho. 1. Rolovac´ı menu • Jsou-li v syst´emu jiˇz uloˇzeny jin´e filtry neˇz vstupn´ı, je v rolovac´ım moˇznost volby mezi nimi. 2. Tlaˇc´ıtko Apply selected filter • Slouˇz´ı k aplikaci filtru vybran´eho v rolovac´ım menu. • Pokud je tlaˇc´ıtko stisknuto bez v´ ybˇeru filtru, je naˇctena hlavn´ı str´anka. 3. Tlaˇc´ıtko Delete selected filter • Slouˇz´ı k vymaz´an´ı filtru vybran´eho v rolovac´ım menu. • Pokud je tlaˇc´ıtko stisknuto bez v´ ybˇeru filtru, je naˇctena hlavn´ı str´anka. 4. Tlaˇc´ıtko Edit input filter • Slouˇz´ı k editaci vstupn´ıho filtru (viz bod 6). 5. Tlaˇc´ıtko Go to homepage • Tlaˇc´ıtko slouˇz´ı pro n´avrat na hlavn´ı str´anku.
38
Webov´e rozhran´ı
8.3
Tabulka v´ypis˚ u
Tabulka v´ ypis˚ u
Tabulka v´ ypis˚ u je zobrazov´ana vˇzdy, kdyˇz se vypisuje nˇejak´a mnoˇzina log˚ u z datab´aze. D´ıky pouˇzit´ı dataTables si m˚ uˇzeme v´ ysledky srovnat dle libovoln´eho parametru kliknut´ım na dan´ y sloupec. 1. Show entries • Slouˇz´ı k vyhled´av´an´ı v mnoˇzinˇe vypsan´ ych v´ ysledk˚ u. 2. Quick search • Slouˇz´ı k vyhled´av´an´ı v mnoˇzinˇe vypsan´ ych v´ ysledk˚ u. 3. Rolovac´ı menu Detail • Nab´ız´ı moˇznost volby co s dan´ ym z´aznamem chceme prov´est. 4. Tlaˇc´ıtko save • Slouˇz´ı k proveden´ı akce zvolen´e v rolovac´ım menu Detail.
8.4
Edit input filter
Str´anka Edit input filter slouˇz´ı k administraci uloˇzen´ ych filtr˚ u, obsahuj´ıc´ı sv´ ym obsahem mnoˇzinu dat, kter´e jsou po n´as jist´ ym zp˚ usobem nepotˇrebn´e, bˇeˇzn´e. Tabulka obsahuje sloupce: 1. Created • Datum a ˇcas vytvoˇren´ı z´aznamu. 2. Creator • Pˇrihlaˇsovac´ı jm´eno uˇzivatele, kter´ y tento z´aznam pˇridal. 3. IP • Seznam IP adres, pro kter´e je zadan´ y z´aznam platn´ y.
39
Webov´e rozhran´ı
Edit input filter
• Mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ... • Pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 4. Program • Seznam program˚ u, pro kter´e je zadan´ y seznam platn´ y. • Mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ... • Pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 5. Text • Text zpr´avy, popˇr´ıpadˇe MySQL REGEXP (viz bod 7). 6. Priority • Pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. • Seznam priorit, pro kter´e je zadan´ y filtr urˇcen. • Moˇznost mnohon´asobn´eho z´aznam se d´a vytvoˇrit ve tvaru, kdy kaˇzd´a poloˇzka je obklopena apostrofy. Jednotliv´e poloˇzky jsou oddˇel´en´e ˇca´rkami. 7. Facility • Seznam kategori´ı, pro kter´e je zadan´ y seznam platn´ y. • Mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ... • Pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 8. Tlaˇc´ıtko save • Tlaˇc´ıtko slouˇz´ıc´ı k uloˇzen´ı zmˇen proveden´ ych v z´aznamu. • Pokud nen´ı dodrˇzen spr´avn´ y z´apis, je vyps´ana chybov´a hl´aˇska MySQL odkazuj´ıc´ı na pˇr´ısluˇsn´e pol´ıˇcko, viz modul delete.php. 9. Tlaˇc´ıtko delete • Tlaˇc´ıtko slouˇz´ıc´ı k odstranˇen´ı z´aznamu. 10. Add new row • Tlaˇc´ıtko slouˇz´ıc´ı k pˇrid´an´ı pr´azdn´eho z´aznamu. 40
Webov´e rozhran´ı
8.5
Opr´avnˇen´ı a pˇr´ıstup
Opr´ avnˇ en´ı a pˇ r´ıstup
Jelikoˇz maj´ı projekt Swatcher vyuˇz´ıvat sp´ıˇse zaˇskolen´ı pracovn´ıci (nikoliv s´am administr´ator), byly vytvoˇreny 2 druhy opr´avnˇen´ı. Prvn´ı, administr´atorsk´e (viz obr. 8.2), kter´e m´a vˇsechny v´ yˇse zm´ınˇen´e funkce a druh´e, uˇzivatelsk´e (viz obr. 8.3), kde jsou odstranˇeny veˇsker´e moˇznosti pro maz´an´ı pˇr´ıchoz´ıch log˚ u a stejnˇe tak je odebr´an pˇr´ıstup do u ´pravy vstupn´ıho filtru. Nastaven´ı opr´avnˇen´ı se prov´ad´ı pˇres modul config.php, ve kter´em se nach´az´ı promˇenn´a PrivUsers. Pˇrid´an´ım uˇzivatelsk´eho jm´ena do t´eto promˇenn´e se definuje administr´atorsk´ yu ´ˇcet.
Obr´azek 8.2: Administr´atorsk´e rozhran´ı
Obr´azek 8.3: Uˇzivatelsk´e rozhran´ı
41
9 Moduly 9.1
addrow.php
Modul slouˇz´ı k pˇrid´an´ı nov´eho vstupn´ıho filtru pˇri stisku Add new row na str´ance editace vstupn´ıch filtr˚ u.
9.2
applydef.php
Modul slouˇz´ıc´ı k aplikaci vˇsech vstupn´ıch filtr˚ u. Vyuˇz´ıv´an pro promaz´an´ı tabulky log˚ u pˇri ukl´ad´an´ı nebo editaci pravidla vstupn´ıho filtru. Je tedy vol´an pouze po pouˇzit´ı tlaˇc´ıtka Save v oblasti tabulkov´eho v´ ypisu a u ´pravˇe vstupn´ıho filtru. Modul tedy nejprve zjist´ı id Input filtru v tabulce Filters, hled´a vˇsechny z´aznamy v Primitive_in_filter kde je dan´e id obsaˇzeno a nakonec skl´ad´a MySQL dotaz pro vymaz´an´ı obsahu vych´azej´ıc´ıho z kaˇzd´eho nalezen´eho z´aznamu.
9.3
config.php
Modul, ve kter´em jsou uloˇzeny veˇsker´e konfiguraˇcn´ı u ´daje jako napˇr´ıklad pˇrihlaˇsovac´ı jm´eno do datab´aze, n´azvy tabulek a samotn´e pˇripojen´ı k datab´azi. Tento modul je tedy nejz´avaˇznˇejˇs´ı bezpeˇcnost´ı mezera v syst´emu a nesm´ı tedy b´ yt odcizen / staˇzen. Je pˇriloˇzen ve vˇsech ostatn´ıch modulech, kde je potˇreba pˇr´ıstupu k datab´azi, popˇr. autentizace uˇzivatele. Obsahuje d˚ uleˇzit´e promˇenn´e: $privUsers (pole uˇzivatel˚ u, kteˇr´ı jsou v syst´emu administr´atory), $timestamp (promˇenn´a pro urˇcen´ı maxim´aln´ıho ˇcasu spojov´an´ı kernel log˚ u), $printNormal (promˇenn´a pro urˇcen´ı poˇctu v´ ypis˚ u) a $printMax (promˇenn´a pro urˇcen´ı poˇctu v´ ypisu pˇri filtrov´an´ı).
42
Moduly
9.4
input.php
input.php
Modul je tabulka sloˇzen´a z v´ıce HTML textarea. Kaˇzd´ y ˇr´adek odpov´ıd´a jednomu vstupn´ımu filtru, kaˇzd´ y sloupec pak tedy urˇcit´emu sloupci v t´eˇze tabulce.
9.5
delete.php
Modul je vol´an modulem input.php v pˇr´ıpadˇe uˇzivatelova kliknut´ı bud’ na tlaˇc´ıtko delete nebo save. Modul tedy podle stlaˇcen´eho tlaˇc´ıtka bud’ odstran´ı z´aznam z tabulek Primitive_in_filter a Primitive_filters nebo po jednom textov´em poli zkus´ı select z datab´aze - pro ovˇeˇren´ı validnosti zadan´ ych dat, tj. jestli jsou v poˇr´adku dle MySQL jazyka, napˇr:
$Test = "SELECT * FROM Logs WHERE "; $Sql2 = "Insert into Primitive_filters ( datetime, user, "; $Msg2 = " VALUES (’".$_GET[’date’]."’, ’".$_GET[’host’]."’, "; $array = array("id_host", "program", "msg", "priority", "facility"); $i = 0; foreach ($array as $pole){ if(!empty($_GET["".$i.""])){ if($pole != "msg"){ $mess = str_replace("’","\’",$_GET["".$i.""]); $fin = str_replace(’"’,’\"’,$mess); $Sql2 .= "".$pole.","; $Msg2 .= "’".$fin."’,"; $count++; $Sql = MySQL_Query("".$Test."".$pole." IN(".$_GET["".$i.""].");"); if (!$Sql) { die("Syntax error - ".$pole.": " . mysql_error()); } } .... ...
43
Moduly
9.6
deletefil.php
deletefil.php
Modul slouˇz´ı k vymaz´an´ı uˇzivatelsk´eho filtru, kter´ y se zvol´ı v rolovac´ım menu v tabulce Options. Dle id, kter´e je v tabulce Filters unik´atn´ı provede vymaz´an´ı z´aznamu.
9.7
form.php
Modul slouˇz´ı k vyhodnocen´ı tabulky Advanced filtering, z vyplnˇen´ ych pol´ı se sloˇz´ı SQL dotaz, kter´ y je n´aslednˇe vyps´an modulem table.php, viz n´ıˇze. Z´aroveˇ n slouˇz´ı na uloˇzen´ı vyplnˇen´ ych hodnot do promˇenn´ ych pojmenovan´ ych dle obsahu, tj. napˇr: $msg, $program a dalˇs´ı, kter´e jsou pak vyuˇzity v n´ıˇze vkl´adan´ ych modulech.
9.8
main.php
Obsahuje zdrojov´ y k´od html str´anky doplnˇen´ y o funkce jazyka PHP. Dle stisknut´eho tlaˇc´ıtka prov´an´ı vkl´ad´an´ı jednotliv´ ych modul˚ u, kter´e se naˇctou na hlavn´ı str´ance.
if( isset($_GET[’Submit’])){ ... else if( isset($_GET[’Submit3’])){ include("selected.php"); } else if( isset($_GET["Editdef"])){ include(input.php"); } else if( isset($_GET[’Submit33’])){ include("deletefil.php"); }
44
Moduly
9.9
print.php
print.php
Modul slouˇz´ıc´ı jako univerz´aln´ı v´ ypis, obsahuje v´ ybˇer vˇsech dat z tabulky Logs a z´aroveˇ n je tento v´ ybˇer limitov´ana na 1000 v´ ysledk˚ u z d˚ uvodu omezen´ı velikosti z´akladn´ıho v´ ypisu (z d˚ uvodu efektivity a rychlosti dataTables, moˇznost nastaven´ı pomoc´ı promˇenn´e v modulu config.php).
9.10
save.php
Modul slouˇz´ı k uloˇzen´ı filtru v kontextov´em menu. Modul je ve sv´e podstatˇe pouze vkl´ad´an´ı do tabulky Filters, kter´e se provede po stisknut´ı tlaˇc´ıtka Apply pokud je vyplnˇen´ y alespoˇ n jeden sloupec v tabulce Advanced filtering a d´ale jm´eno filtru v kontextov´em menu.
9.11
save2.php
Modul slouˇz´ıc´ı k uloˇzen´ı speci´aln´ıch promˇenn´ ych z modulu formular.php ($program, $msg atd.) do tabulky Primitive_filters. Modul je vol´an vˇzdy v souvislosti s modulem formular.php a slouˇz´ı k uloˇzen´ı zvolen´ ych kriteri´ı jako vstupn´ı filtr.
9.12
selected.php
Modul slouˇz´ıc´ı aplikov´an´ı uˇzivatelem vybran´eho filtru. Vybere tedy z tabulky Filters odpov´ıdaj´ıc´ı id a d´ıky z´aznamu v relaˇcn´ı tabulce vyp´ıˇse a spoj´ı MySQL dotaz z z´aznam˚ u v tabulce Primitive_filters.
9.13
table.php
Modul slouˇz´ıc´ı k vypisov´an´ı veˇsker´ ych dat, kter´e jsou mu pˇred´any v promˇenn´e $final. 45
Moduly
9.14
tablsubm.php
tablsubm.php
Modul slouˇz´ıc´ı k zpracov´an´ı formul´aˇre vyplnˇen´eho na str´ance v´ ypisu, odeslan´eho tlaˇc´ıtkem Save. Modul projde vˇsechny pole, v poli TEXT vynuluje vˇsechny ˇr´ıd´ıc´ı znaky(viz bod 7).
46
Moduly
9.15
timestamp.php
timestamp.php
Modul slouˇz´ıc´ı ke spojov´an´ı kernel log˚ u z tabulky Logs, jak jiˇz bylo zm´ınˇeno v kapitole Kernel logy najde logy se stejn´ ym zdrojem a pokud odpov´ıdaj´ı dle UNIX timestampu je slouˇc´ı. Modul je vol´an z crontabu syst´emu kaˇzdou minutu.
while ($data = MySQL_Fetch_Array($Sql)){ $pos = strpos($data[0], ’[’); $end = strpos($data[0], ’]’); $rest = substr($data[0], $pos+1, $end-3); if(is_numeric($rest)){ $pos2 = strpos($rest, ’.’); $first = substr($rest, 0, $pos2); $second = substr($rest, $pos2+1, strlen($rest)); if ($i != 0){ if(($tmps - $first) == 0 && ($tmpid == $data[2]) && ($tmpm $second) <= $set_me){ $fnl = substr($data[0], $end+1, strlen($data[0])); if($tmp == 0){ $tmpmsg .= ": [".$rest."]"; } $tmpmsg .= $fnl; $tmpmsg .= "\n"; if($tmp != 0){ MySQL_Query("DELETE FROM Logs where id = ’".$tmpidu."’"); ... ..
47
10 Z´avˇer Prim´arn´ım c´ılem t´eto bakal´aˇrsk´e pr´ace bylo vytvoˇrit syst´em filtrov´an´ı log˚ u, ´ generovan´ ych v poˇc´ıtaˇcov´e s´ıti Z´apadoˇcesk´e univerzity. Ukolem bylo vytvoˇrit uˇzivatelsk´e prostˇred´ı, ve kter´em si s´am uˇzivatel m˚ uˇze zvolit kter´e druhy z´aznam˚ u jsou bˇeˇzn´e a kter´e ne. Vznikl syst´em, kter´ y bˇeˇz´ı na operaˇcn´ım syst´emu Debian Wheezy a k dispozici m´a 1GB operaˇcn´ı pamˇeti. Webov´e rozhran´ı je naps´ano jazykem HTML s vyuˇzit´ım JavaScriptu a jeho knihovnou jQuery. Manipulaci s MySQL zajiˇst’uj´ı PHP scripty. Pokud je v syst´emu uloˇzeno do 100 000 log˚ u, webov´e rozhran´ı bˇeˇz´ı plynule, reakce jsou v zanedbateln´ ych ˇcasech. Se zvyˇsuj´ıc´ım se poˇctem z´aznam˚ u se zvyˇsuje doba odpovˇed´ı, coˇz je ale i d´ano hardwarovou konfigurac´ı. Syst´em jako takov´ y nevykazuje extr´emn´ı z´atˇeˇze. Bˇehem mˇeˇren´ı, kter´e probˇehlo dne 25.4., probˇehlo smaz´an´ı obsahu vˇsech tabulek v MySQL a spuˇstˇen´ı Syslog-ng bez zadan´ ych vstupn´ıch filtr˚ u. Za 180 minut se do syst´emu uloˇzilo 2 534 300 log˚ u ze 341 zdroj˚ u. Po pˇrid´an´ı nˇekolika z´akladn´ıch vstupn´ıch filtr˚ u, se poˇcet log˚ u v datab´azi zkr´atil na 23 723. Tento poˇcet by se mˇel dlouhodobˇe po nastaven´ı vˇetˇs´ıho mnoˇzstv´ı vstupn´ıch filtr˚ u drˇzet v ˇr´adu des´ıtek. Projekt by ˇsel rozˇs´ıˇrit napˇr´ıklad o propojen´ı se syst´emem Nagios, popˇr´ıpadˇe by ˇsel upravit na jednoduch´ y eventviewer (muselo by se ale upravit vypisov´an´ı v´ ysledk˚ u, jelikoˇz jQuery plugin dataTables nen´ı vhodn´ y pro velk´e objemy dat). Dalˇs´ım vhodn´ ym rozˇs´ıˇren´ım by bylo napˇr´ıklad pˇrid´an´ı administrace uˇzivatelsk´ ych u ´ˇct˚ u (zvolit vhodnˇejˇs´ı ˇreˇsen´ı neˇz m´ıt jm´ena vyjmenovan´e v PHP poli, napˇr´ıklad vytvoˇrit v MySQL dalˇs´ı tabulku s n´azvem Users). Syst´em byl n´aslednˇe dne 26.4. nasazen do bˇeˇzn´eho provozu, ˇc´ımˇz byly splnˇeny c´ıle t´eto bakal´aˇrsk´e pr´ace.
48
Literatura [1] Evi Nemeth, Garth Snyder, Trent R. Hein: Linux - Kompletn´ı pˇ r´ıruˇ cka administr´ atora Computer Press, Brno 2004. ISBN 80-722-6919-4 [2] Mark Maslakowski: Nauˇ cte se MySQL za 21 dn´ı Computer Press, Praha 2001. ISBN 80-7226-448-6 [3] Michal Brandejs: UNIX - LINUX - Praktick´ y pr˚ uvodce GRADA Publishing, Praha 1996. ISBN 80-7169-170-4 [4] Musciano Kennedy: HTML & XHTML - Kompletn´ı pr˚ uvodce Computer Press, Praha 2000. ISBN 80-7226-407-9 [5] Jaroslav Pokorn´y: Dotazovac´ı jazyky Univerzita Karlova v Praze, 1994. ISBN 80-901475-2-6 ˇak: Historie relaˇ [6] Karel Z´ cn´ıch datab´ az´ı http://www.root.cz/clanky/historie-relacnich-databazi/ [7] Petr Krˇcm´aˇr: Historie operaˇ cn´ıho syst´ emu GNU/Linux http://www.root.cz/texty/historie-operacniho-systemu-gnulinux/ [8] Apache Web Server http://www.root.cz/specialy/linux-na-serveru/webserver/ ˇ WebAuth [9] CIV, ZCU: http://support.zcu.cz/index.php/LPS:WebAuth ˇ [10] Adam Strauch: Lighttpd: lehk´ y webserver http://www.root.cz/clanky/lighttpd-lehky-webserver/ [11] experti komunity jQuery: jQuery - Kuchaˇ rka program´ atora Computer Press, a.s Brno, 2010. ISBN 978-80-251-3152-7
[12] Ian Gilfillan: Knihovna program´ atora - mysl´ıme v MySQL 4 GRADA Publishing, Praha 2003. ISBN 80-247-0661-X [13] Jiˇr´ı Br´aza: PHP 5 - Zaˇ c´ın´ ame programovat GRADA Publishing 2005. ISBN 80-247-1146-X. [14] Vladim´ır Poˇsmura: Apache: Pˇ r´ıruˇ cka spr´ avce WWW serveru Computer Press, 2002. ISBN: 80-7226-696-9 [15] David Flanagan: JavaScript - Kompletn´ı pr˚ uvodce ComputerPress, Praha 2002. ISBN 80-7226-626-8 [16] R. Gerhards: RFC 5424. The Syslog Protocol http://www.ietf.org/rfc/rfc5424.txt [17] Karen Kent, Murugiah Souppaya : Recommendations of the National Institute of Standards and Technology Gaithersburg : NIST , 2006 [18] Syslog-ng http://www.balabit.com/network-security/syslog-ng [19] Logrotate http://linuxcommand.org/man pages/logrotate8.html [20] David Proch´azka: PHP 6 GRADA publishing, Praha 2012. ISBN 978-80-247-3899-4
11 Pˇr´ılohy
Uˇ zivatelsk´ a pˇ r´ıruˇ cka Swatcher
Plzeˇ n 2013
Pavel Hvˇezda
A.1
O projektu
Tato pr´ace je v´ ysledkem projektu, kter´ y mi byl zad´an m´ ym vedouc´ım, Michaˇ lem Svambergem. C´ılem bylo vytvoˇrit jednoduch´ yau ´ˇcinn´ y filtrovac´ı syst´em pro potˇreby Z´apadoˇcesk´e univerzity pro spr´avu log˚ u a odhalov´an´ı disfunkc´ı syst´emu. Je urˇcen pro r˚ uzn´e distribuce syst´emu Linux. Projekt by tedy mˇel v´ yraznˇe ulehˇcit kontrolu ud´alost´ı a ˇcten´ı log˚ u, protoˇze bude shromaˇzd’ovat d˚ uleˇzit´e informace a data (logy) o cel´e poˇc´ıtaˇcov´e s´ıti na jednom m´ıstˇe a bude umoˇzn ˇovat rychl´e a efektivn´ı filtrov´an´ı a vyhled´av´an´ı s pˇrehledn´ ym webov´ ym rozhran´ım. Tak´e bude umoˇzn ˇovat filtrovat, kter´e pˇr´ıchoz´ı logy nechceme do ´ celem tedy nebude shromaˇzd’ovat veˇsker´e logy syst´emu zaznamenat trvale. Uˇ a nahrazovat funkci event vieweru (nicm´enˇe, k t´eto funkci m˚ uˇze tak´e velice dobˇre slouˇzit). Bude slouˇzit pˇredevˇs´ım jako n´astroj, kter´ y zaˇskolen´ y a znal´ y pracovn´ık nastav´ı a m´enˇe zkuˇsen´ y kolega nebo externista vyuˇzije ke kontrole a vyhodnocen´ı log˚ u (ud´alost´ı), kter´e byly do syst´emu uloˇzeny.
B.1
Filtry
Syst´em filtr˚ u v syst´emu je rozdˇelen do dvou kategori´ı: vstupn´ı filtry a uˇzivatelsk´e filtry.
B.2
Vstupn´ı filtry
Vstupn´ı filtry v syst´emu pˇredstavuj´ı mnoˇzinu ud´alost´ı, kter´e nechceme zaznamen´avat. V syst´emu jako takov´em reprezentuje tuto mnoˇzinu pravidel pouze jeden prvek a to je filtr Input. Editovat tato pravidla m˚ uˇzeme na str´ance, kter´a se naˇcte po zm´aˇcknut´ı tlaˇc´ıtka Edit input filter, kter´e je dostupn´e pouze pro administr´atory (viz bod 8.5). Syst´em je nastaven tak ˇze vˇsechna pravidla uloˇzen´a do vstupn´ıho filtru jsou aplikov´ana jako mnoˇzina v´ ysledk˚ u, kter´e nechceme do syst´emu zaznamen´avat.
B.3
Uˇ zivatelsk´ e filtry
Uˇzivatelsk´e filtry jsou mnoˇzinou filtr˚ u, kter´e si navolil s´am uˇzivatel ve webov´em rozhran´ı. Slouˇz´ı pˇredevˇs´ım pro usnadnˇen´ı manipulace uˇzivatele se syst´emem, aby nemusel st´ale v pˇr´ıpadˇe potˇreby vyplˇ novat stejn´e u ´daje. Veˇsker´e uˇzivatelsk´e filtry vkl´adan´e do syst´emu mus´ı m´ıt unik´atn´ı n´azev a nesm´ı se jmenovat input, coˇz je i syst´emem kontrolov´ano. Takto uloˇzen´e filtry si m˚ uˇze uˇzivatel aplikovat zvolen´ım filtru v tabulce Options a stisknut´ım tlaˇc´ıtka Apply selected filter (viz bod 8.2). Tyto filtry slouˇz´ı k prohl´ıˇzen´ı log˚ u, kter´e nebyly odfiltrov´any Input filtrem“. ”
C.1
Webov´ e rozhran´ı
Webov´e rozhran´ı je pˇrizp˚ usobeno pˇredevˇs´ım pˇrehlednosti, s moˇznost´ı efektivn´ıho pokroˇcil´eho filtrov´an´ı log˚ u. Vzhled str´anek je rozdˇelen (viz obr. C.1) na nˇekolik ˇca´st´ı: Logo, Advanced filtering, Options a Results a v nˇekter´ ych pˇr´ıpadech, kter´e budou n´ıˇze specifikovan´e se zobraz´ı speci´aln´ı kontextov´e menu.
Obr´azek C.1: Webov´e rozhran´ı
C.2
Advanced filtering
Tabulka Advanced filtering slouˇz´ı k vyhled´av´an´ı pˇres celou tabulku log˚ u uloˇzen´ ych v syst´emu. Nab´ız´ı moˇznost filtrovat logy podle: 1. IP/Name • slouˇz´ı k vyhled´av´an´ı loguj´ıc´ıch stroj˚ u, pokud se nezdaˇr´ı pˇreklad IP adresy pˇrez DNS na jm´eno, je zobrazena IP adresa,
• moˇznost v´ıcen´asobn´eho v´ ybˇeru, • ˇrazeno abecednˇe. 2. Date • slouˇz´ı k vyhled´av´an´ı log˚ u k urˇcit´emu datu, • moˇznost filtrovat od-do urˇcit´eho datumu, • pro snaˇzˇs´ı v´ ybˇer datumu je pouˇzita freeware knihovna datepicker, kter´a vyvol´a kalend´aˇr s moˇznost´ı proch´azet mˇes´ıce, dny a roky, • pokud je vyplnˇeno pouze pole od, syst´em automaticky vyp´ıˇse vˇsechny logy od n´ami zadan´eho data aˇz do aktu´aln´ıho, pokud je vyplnˇeno pouze pole do, syst´em vyp´ıˇse veˇsker´e logy z datab´aze aˇz do aktu´aln´ıho data. 3. Time • slouˇz´ı k vyhled´av´an´ı podle ˇcasu, • moˇznost filtrovat od-do urˇcit´eho ˇcasu, • ˇcas mus´ı b´ yt zad´an ve form´atu HH:MM, jinak bude vyps´ana v´ ystraˇzn´a hl´aˇska o neplatnosti zad´an´ı a pole vyˇciˇstˇeno, • pokud je vyplnˇeno pouze pole od, syst´em automaticky vyp´ıˇse veˇsker´e logy zadan´eho aˇz do aktu´aln´ıho ˇcasu, pokud je vyplnˇeno pouze pole do, syst´em vyp´ıˇse veˇsker´e logy z datab´aze aˇz do aktua´ln´ıho ˇcasu. 4. Program • slouˇz´ı k vyhled´av´an´ı podle programu, kter´ y dan´ y log generoval, dle RFC 5424 normy se jedn´a o procID, • moˇznost v´ıcen´asobn´eho v´ ybˇeru. 5. Text • slouˇz´ı k vyhled´av´an´ı podle textu zpr´avy, dle RFC 5424 normy se jedn´a o MSG, • moˇznost vyhled´av´an´ı podle hesel, nebo po sobˇe jdouc´ıch sekvenc´ı slov, kter´e odpov´ıdaj´ı vyhled´avan´emu textu. Text je pak interpretov´an jako regul´arn´ı v´ yraz (viz bod 7).
6. Priority • slouˇz´ı k vyhled´av´an´ı podle priority - z´avaˇznosti ud´alosti, dle RFC 5424 normy se jedn´a o SEVERITY, • moˇznost v´ıcen´asobn´eho v´ ybˇeru, • ˇrazeno abecednˇe. 7. Facility • slouˇz´ı k vyhled´av´an´ı podle facility - druhi ud´alosti, dle RFC 5424 normy se jedn´a o FACILITY, • moˇznost v´ıcen´asobn´eho v´ ybˇeru, • ˇrazeno abecednˇe. 8. Tlaˇc´ıtko Apply • tlaˇc´ıtko slouˇz´ıc´ı k odesl´an´ı formul´aˇre a vyhodnocen´ı vybran´ ych hodnot.
C.3
Options
Tabulka Options slouˇz´ı k manipulaci bud’ jiˇz s uloˇzen´ ymi filtry, nebo k editaci filtru vstupn´ıho. 1. Rolovac´ı menu • jsou-li v syst´emu jiˇz uloˇzeny jin´e filtry neˇz vstupn´ı, je v rolovac´ım moˇznost volby mezi nimi. 2. Tlaˇc´ıtko Apply selected filter • slouˇz´ı k aplikaci filtru vybran´eho v rolovac´ım menu, • pokud je tlaˇc´ıtko stisknuto bez v´ ybˇeru filtru, je naˇctena hlavn´ı str´anka. 3. Tlaˇc´ıtko Delete selected filter • slouˇz´ı k vymaz´an´ı filtru vybran´eho v rolovac´ım menu, • pokud je tlaˇc´ıtko stisknuto bez v´ ybˇeru filtru, je naˇctena hlavn´ı str´anka.
4. Tlaˇc´ıtko Edit input filter • slouˇz´ı k editaci vstupn´ıho filtru (viz bod 6). 5. Tlaˇc´ıtko Go to homepage • tlaˇc´ıtko slouˇz´ı pro n´avrat na hlavn´ı str´anku.
C.4
Tabulka v´ ypis˚ u
Tabulka v´ ypis˚ u je zobrazov´ana vˇzdy, kdyˇz se vypisuje nˇejak´a mnoˇzina log˚ u z datab´aze. D´ıky pouˇzit´ı pluginu JQuery DataTables si m˚ uˇzeme v´ ysledky srovnat dle libovoln´eho parametru kliknut´ım na dan´ y sloupec. 1. Show entries • slouˇz´ı k vyhled´av´an´ı v mnoˇzinˇe vypsan´ ych v´ ysledk˚ u. 2. Quick search • slouˇz´ı k vyhled´av´an´ı v mnoˇzinˇe vypsan´ ych v´ ysledk˚ u. 3. Rolovac´ı menu Detail • nab´ız´ı moˇznost volby co s dan´ ym z´aznamem chceme prov´est. 4. Tlaˇc´ıtko save • slouˇz´ı k proveden´ı akce zvolen´e v rolovac´ım menu Detail.
C.5
Edit input filter
Tabulka Edit input filter slouˇz´ı k administraci uloˇzen´ ych filtr˚ u, obsahuj´ıc´ı sv´ ym obsahem mnoˇzinu dat, kter´e jsou po n´as jist´ ym zp˚ usobem nepotˇrebn´e, bˇeˇzn´e. Tabulka obsahuje sloupce: 1. Created • datum a ˇcas vytvoˇren´ı z´aznamu.
2. Creator • pˇrihlaˇsovac´ı jm´eno uˇzivatele, kter´ y tento z´aznam pˇridal. 3. IP • seznam IP adres, pro kter´e je zadan´ y z´aznam platn´ y, • mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ..., • pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 4. Program • seznam program˚ u, pro kter´e je zadan´ y seznam platn´ y, • mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ..., • pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 5. Text • text zpr´avy, popˇr´ıpadˇe MySQL REGEXP (viz bod 7). 6. Priority • pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı, • seznam priorit, pro kter´e je zadan´ y filtr urˇcen, • moˇznost mnohon´asobn´eho z´aznam se d´a vytvoˇrit ve tvaru, kdy kaˇzd´a poloˇzka je obklopena apostrofy. Jednotliv´e poloˇzky jsou oddˇel´en´e ˇca´rkami. 7. Facility • seznam kategori´ı, pro kter´e je zadan´ y seznam platn´ y, • mnohon´asobn´ y z´aznam se d´a vytvoˇrit ve tvaru: ’z´aznam1’, ’z´aznam2’ ..., • pˇri uk´az´an´ı myˇs´ı je vyps´ana n´apovˇeda pro vkl´ad´an´ı. 8. Tlaˇc´ıtko save • tlaˇc´ıtko slouˇz´ıc´ı k uloˇzen´ı zmˇen proveden´ ych v z´aznamu, • pokud nen´ı dodrˇzen spr´avn´ y z´apis, je vyps´ana chybov´a hl´aˇska MySQL odkazuj´ıc´ı na pˇr´ısluˇsn´e pol´ıˇcko, viz modul delete.php.
9. Tlaˇc´ıtko delete • tlaˇc´ıtko slouˇz´ıc´ı k odstranˇen´ı z´aznamu. 10. Add new row • tlaˇc´ıtko slouˇz´ıc´ı k pˇrid´an´ı pr´azdn´eho z´aznamu.
D.1
Opr´ avnˇ en´ı a pˇ r´ıstup
Jelikoˇz maj´ı syst´em vyuˇz´ıvat sp´ıˇse zaˇskolen´ı pracovn´ıci (nikoliv s´am administr´ator), byly vytvoˇreny 2 druhy opr´avnˇen´ı. Prvn´ı, administr´atorsk´e (viz obr. D.2), kter´e m´a vˇsechny v´ yˇse zm´ınˇen´e funkce a druh´e, uˇzivatelsk´e (viz obr. D.3), kde jsou odstranˇeny veˇsker´e moˇznosti pro maz´an´ı pˇr´ıchoz´ıch log˚ u a stejnˇe tak je odebr´an pˇr´ıstup do u ´pravy vstupn´ıho filtru. Nastaven´ı opr´avnˇen´ı se prov´ad´ı pˇres modul config.php, ve kter´em se nach´az´ı promˇenn´a PrivUsers. Pˇrid´an´ım uˇzivatelsk´eho jm´ena do t´eto promˇenn´e se definuje administr´atorsk´ yu ´ˇcet.
Obr´azek D.2: Administr´atorsk´e rozhran´ı
Obr´azek D.3: Uˇzivatelsk´e rozhran´ı