Podrobný návrh serveru a klienta verze 1.0.0
Project documentation
10/08/2013
Podrobný návrh serveru a klienta verze 1.0.0¶
- Table of contents
- Podrobný návrh serveru a klienta verze 1.0.0
- Architektura Warden serveru
- Architektura Warden klienta
- Struktura balíku warden-client
- Implementace provozních funkcí
- Implementace administrátorských funkcí
- getStatus(string warden_path)
- getClients(string warden_path)
- registerSender(string warden_path, string hostname, string requestor, string service, string description_tags, string ip_net_client)
- registerReceiver(string warden_path, string hostname, string requestor, string type, string receive_own_events, string ip_net_client)
- unregisterClients(string warden_path, integer client_id)
Funkční návrh¶
- Níže rozvedené body popisují funkcionalitu systému z pohledu vnějšího pozorovatele.
- Funkcionalita je rozdělena do 3 intuitivních kategorií:
- příjem událostí klientem,
- nahlášení události na server,
- administrace systému
- V závorce a kurzívou jsou uvedeny konkrétní funkce, které obstarávají popisovanou činnost (funkce jsou detailně popsány v sekci Implementace funkcí)
- Komunikace klientů se serverem je prováděna autentizovaně a autorizovaně. Tyto aspekty jsou popsány v sekci Zabezpečení komunikace.
- Provozní nastavení klienta (certifkáty, URI Warden serveru) je uloženo v souboru etc/warden-client.conf, nastavení serveru (certifikáty, IP adresa, port, ...) pak v souboru etc/warden-server.conf.
- Níže popisované funkce jsou implemenovány v jazyce Perl.
Přijem událostí klientem¶
- Cilem klienta je stahnout ze serveru vsechny nove (relevantni) udalosti.
- Klient se spouští opakovaně v pravidelných intervalech (např. prostřednictvím lokální aplikace). Při každém spuštění provede svou činnost a skončí.
- Spuštění klienta se provádí prostřednictvím funkce getNewEvents, kterou volá lokální aplikace
- Každý klient má na serveru definováno:
- Jaký typ události přijímá (právě jeden).
- Zda-li chce přijímat i události vygenerované ve stejné doméně, jako běží klient sám (vlastní události).
- Klient si lokálne drží číslo (id) události, kterou přijal jako poslední. Nově nasazený klient ale tuto hodnotu uloženou zatím nemá.
- Klient se při spuštění (getNewEvents) pokusí načíst lokálně uložené číslo (id) poslední jím přijaté události.
- Pokud touto hodnotou klient nedisponuje (nemá ji uloženou), požádá server o zaslání čísla (id) nejnovější události, která je v tu chvíli na serveru uložena (getLastId). Tuto hodnotu si klient lokalne ulozi.
- Má-li klient již uloženo číslo (id) naposledy přijaté události, požádá server o všechny nové události uložené na serveru až po klientovi poslední známé události. Tedy všechny ty, jejichž id je vyšší než id, které má uložen klient (getNewEvents).
- Server vrátí klientovi seznam všech nových událostí, jejichž typ odpovídá typu události požadované klientem (právě jeden typ pro každého klienta) a na základě nastavení přijímajícího klienta jsou vráceny všechny nové události nebo všechny události bez tzv. vlastních (= vygenerovaných službami ve stejné doméně, jako se nachází on sám).
- Klient předá přijatou dávku lokální aplikaci, která jej volala, a uloží si nejvyšší číslo (id) z přijatých událostí pro použití při dalším spuštění.
Nahlášení události na server¶
- Cílem klienta je odeslat na server novou událost (typicky událost detekovanou lokální detekční službou)
- Klient se spouští on demand ve chvíli, kdy lokální detekční služba detekuje novou událost.
- Spuštění klienta se provádí prostřednitvím funkce saveNewEvent, kterou volá lokální aplikace
- Každý klient má na serveru definováno, jaký typ události může serveru hlásit (právě jednu)
- Klient při spuštění obdrží od detekční služby informace o detekované události a událost odešle na server
- Server zkontroluje, zda-li pro daného klienta souhlasí typ hlášené události. Pokud ano, uloží událost do DB.
- Server potvrdí klientovi, zda událost úspěšně přijal, či nikoliv. Tento výsledek klient předá lokální aplikaci (jako návratovou hodnotu funkce saveNewEvent)
Administrace systému¶
- Pro administraci Warden serveru slouží nástroje uložené v adresáři /opt/warden-server/bin
- Ovladani demona Warden serveru:
/etc/init.d/wardend [start|stop|status|restart|force-stop]
- Administrace Warden klientu:
- pridani odesilajiciho klienta:
registerSender.pl [-h -n <hostname> -r <requestor> -s <service> -d <description_tags> -i <ip_net_client>]
- pridani prijimajiciho klienta:
registerReceiver.pl [-h -o -n <hostname> -r <requestor> -t <type> -i <ip_net_client>]
- odebrani klienta:
unregisterClient.pl [-h -i <client_id>]
- pridani odesilajiciho klienta:
- Zjistovani stavu Warden serveru
- zjisteni stavu serveru:
getStatus.pl
- zjisteni stavu zaregistrovanych klientu
getClients.pl
- zjisteni stavu serveru:
Zabezpečení komunikace¶
- Zabezpeceni komunikace je zajisteno protokolem SSL a realizovano modulem IO::Socket::SSL
- Klient muze odeslat/prijmout udalost na/z Warden serveru az po uspesnem procesu autentizace a autorizace.
- V níže popsaných funkcích je vždy realizován proces autentizace/autorizace. Není proto již explicitně zmiňován.
Autentizace¶
Proces autentizace provadi Warden server i klient vzdy pri volani vzdalene ci lokalni procedury.
- Vzdalene procedury (volane z jineho stroje, nez na kterem bezi server)
- overeni SSL certifikatu serveru klientem pomoci modulu SOAP::Transport::TCP::Client (SSL_verify_mode => 0x02)
- overeni SSL certifikatu klienta serverem pomoci modulu SOAP::Transport::TCP::Server (SSL_verify_mode => 0x03)
- overeni zda IP adresa prichoziho klienta spada do nastaveneho IP rozsahu uvedeno v tabulce clients(ip_net_client)
- Lokalni procedury (volane ze stroje, na kterem bezi server)
- overeni SSL certifikatu serveru klientem pomoci modulu SOAP::Transport::TCP::Client (SSL_verify_mode => 0x02)
- overeni SSL certifikatu klienta serverem pomoci modulu SOAP::Transport::TCP::Server (SSL_verify_mode => 0x03)
- overeni zda IP adresa prichoziho klienta je stejna jako IP adresa Warden serveru => lokalni pristup
Autorizace¶
Proces autorizace se provadi na Warden serveru vzdy pri volani vzdalene procedury.
- overeni, zda se prichozi klient s danymi parametry nachazi v tabulce clients a je tedy registrovany pro danou cinnost
- parametry odesilajiciho klienta: hostname, service, client_type
- parametry prijimajiciho klienta: hostname, type, client_type
Architektura Warden serveru¶
Schema tabulky events¶
id¶
- INTEGER PRIMARY KEY
- ciselny identifikator udalosti
- autoinkrement
hostname¶
- VARCHAR (256)
- identifikator stroje zasilajici událost
- domenove jmeno z X509
service¶
- VARCHAR (64)
- název služby produkující událost
- napr. honeyscan, nfscan, bfdetector ...
detected¶
- TIMESTAMP
- časová známka vzniku (= detekce) udalosti v lokálním čase
received¶
- TIMESTAMP
- casova znamka prijeti udalosti na warden serveru v lokálním čase
type¶
- VARCHAR (64)
- typ nahlasene udalosti
- seznam typu udalosti
sourcetype¶
- VARCHAR (64)
- napr. IP, URL, Reply-To:
source¶
- VARCHAR (256)
- identifikace zdroje útoku/hrozby
- napr. IP adresa (v4 i v6), URL - a.b.c.d, !http://www.phishing.cz, ...
targetproto¶
- VARCHAR (16)
- typ cíle útoku
- protokoly L3 a L4 - TCP, UDP
targetport¶
- INT (2)
- typ cíle útoku
- číslo portu - 3389, 22, 80, 443, ...
attackscale¶
- INT (4)
- mohutnost útoku
note¶
- TEXT
- poznámka/nestrukturovaný text
- null, <celý mail s hlavičkami>, ...
priority¶
- INT (1)
- vysoká, nízká, ...
- volitelna polozka
timeout¶
- INT (2)
- cas v minutach
- navrhovaná délka blokování
- volitelna polozka
valid¶
- INT (1)
- cas v minutach
- ukazatel, zda-li je udalost platna
- udalost je platna, pokud je klient zaregistrovany; neplatna, pokud dojde ke zruseni registrace klienta
- t/f
Schema tabulky clients¶
clientid¶
- INTEGER PRIMARY KEY
- ciselny identifikator klienta
- autoinkrement
hostname¶
- VARCHAR (256)
- identifikator odesilajiciho/prijimajiciho stroje
- not null
registered¶
- TIMESTAMP
- cas registrace nove klienta na serveru
requestor¶
- VARCHAR (256)
- email uzivatele, ktery pozadal o registraci noveho klienta
service¶
- VARCHAR (64)
- u odesilajiciho klienta název služby produkující událost (napr. honeyscan, nfscan, bfdetector ...)
- null u prijimajiciho klienta
clienttype¶
- VARCHAR (1)
- "s" - odesilajici klient
- "r" - prijimajici klient
type¶
- VARCHAR (64)
- typ hlasene udalosti, kterou klient bude prijimat (tuto a zadnou jinou)
- null u odesilajicich klientu (typ udalosti bude specifikovan pri volani saveNewEvent)
receiveownevents¶
- VARCHAR (1)
- "t" - true (klient prijima i udalosti reportovane odesilajicimi klienty z jeho domeny)
- "f" - false (klient neprijima udalosti reportovane odesilajicimi klienty z jeho domeny)
- null pro odesilajiciho klienta
descriptiontags¶
- VARCHAR (256)
- odesilajici klient: upresneni sluzby, viz Seznam typu udalosti
- null pro prijimajiciho klienta
ipnetclient¶
- VARCHAR (256)
- CIDR ve kterem muze byt klient umisten
Struktura balíku warden-server¶
/bin getClients.pl getStatus.pl registerReceiver.pl registerSender.pl unregisterClient.pl warden-alive warden-server.pl (serverové funkce) fce saveNewEvent fce getNewEvents fce getLastId fce registerSender fce registerReceiver fce unregisterClient fce getClients fce getStatus wardend /doc CHANGELOG INSTALL LICENSE README /etc warden-client.conf warden-server.conf /lib WardenConf.pm WardenReg.pm (klientské provozní fce) fce registerReceiver fce registerSender fce unregisterClient WardenStatus.pm (klientské provozní fce) fce getClients fce getStatus /sh create_tables.sh /var warden.db
Implementace funkcí¶
saveNewEvent(string class, soap_object data)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- data: SOAP objekt nesoucí informace o hlášené události (SERVICE, DETECTED, TYPE, SOURCE_TYPE, SOURCE, TARGET_PROTO, TARGET_PORT, ATTACK_SCALE, NOTE, PRIORITY, TIMEOUT).
- 1 při úspěšném přijetí události od klienta a uložení události do DB na Warden serveru.
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient, který se serverem komunikuje:
- je registrovaný jako odesílající klient (sender) v tabulce clients,
- přistupuje z povoleného CIDRu,
- není-li některá z podmínek splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně uloží klientem hlášenou událost do tabulky events a event_ID této události zapíše do logu.
- nepodaří-li se uložit do DB nebo do logu, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- jinak fce vrátí 1.
getNewEvents(string class, soap_object data)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- data: SOAP objekt nesoucí informace o požadované dávce nových událostí (REQUESTED_TYPE, LAST_ID).
- SOAP objekt: pole událostí při úspěšném načtení událostí z DB na Warden serveru (ID, HOSTNAME, SERVICE, DETECTED, TYPE, SOURCE_TYPE, SOURCE, TARGET_PROTO, TARGET_PORT, ATTACK_SCALE, NOTE, PRIORITY, TIMEOUT),
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient, který se serverem komunikuje:
- je registrovaný jako odesílající klient (sender) v tabulce clients,
- přistupuje z povoleného CIDRu,
- není-li některá z podmínek splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně načte z DB všechny události požadovaného typu s vyšším ID než LAST_ID.
- nepodaří-li se načíst, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce vytvoří z načtených dat SOAP objekt.
- fce odešle data klientovi jako SOAP objekt a zapíše do logu informaci o odeslané dávce.
getStatus(string class, void arg)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- arg: prázdný argument (pouze formální), nenese žádnou hodnotu
- SOAP objekt: v případě úspěchu "pole polí" popisujicí status Warden serveru/DB (tabulky events a clients):
- events: DB_SIZE, EVENTS_SUM, EVENTS_LAST_ID, EVENTS_FIRST_TIMESTAMP, EVENTS_LAST_TIMESTAMP, CLIENTS_SUM,
- clients: CLIENT_ID, HOSTNAME, SERVICE, COUNT, TIMESTAMP
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient přistupuje z localhostu (odjinud nelze volat administrátorské fce).
- není-li podmínka splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně načte z DB a všechny události požadovaného typu s vyšším ID než LAST_ID.
- nepodaří-li se načíst, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce vytvoří z načtených dat SOAP objekt.
- fce odešle data klientovi jako SOAP objekt a zapíše do logu informaci o odeslané dávce.
getClients(string class, void arg)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- arg: prázdný argument (pouze formální), nenese žádnou hodnotu
- SOAP objekt: v případě úspěchu "pole polí" popisujicí status jednotlivých registrovaných klientů z tabluky clients (CLIENT_ID, HOSTNAME, REGISTERED, REQUESTOR, SERVICE, CLIENT_TYPE, TYPE, RECEIVE_OWN_EVENTS, DESCRIPTION_TAGS, IP_NET_CLIENT),
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient přistupuje z localhostu (odjinud nelze volat administrátorské fce).
- není-li podmínka splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně načte z DB informace o klientech
- nepodaří-li se načíst, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce vytvoří z načtených dat SOAP objekt.
- fce odešle data klientovi jako SOAP objekt a zapíše do logu informaci o odeslané dávce.
registerSender(string class, soap_object data)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- data: SOAP objekt nesoucí informace o nově registrovaném odesílajícím ("sender") klientovi (HOSTNAME, REQUESTOR, SERVICE, DESCRIPTION_TAGS, IP_NET_CLIENT).
- 1 v případě úspěšné registrace nového odesílajícího ("sender") klienta
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient přistupuje z localhostu (odjinud nelze volat administrátorské fce).
- není-li podmínka splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně zkontroluje, zda klient požadovaných parametrů již není v DB registrován.
- nepodaří-li se provést kontrolu nebo existuje-li již takový klient v DB, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce se pokusí vložit nového klienta do DB a zaznamenat tuto akci do logu.
- v případě neúspěchu vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()),
- podaří-li se klienta vložit, vrátí fce 1
registerReceiver(string class, soap_object data)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- data: SOAP objekt nesoucí informace o nově registrovaném přijímajícím ("receiver") klientovi (HOSTNAME, REQUESTOR, TYPE, RECEIVE_OWN_EVENTS, IP_NET_CLIENT).
- 1 v případě úspěšné registrace nového přijímajícího ("receiver") klienta
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient přistupuje z localhostu (odjinud nelze volat administrátorské fce).
- není-li podmínka splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně zkontroluje, zda klient požadovaných parametrů již není v DB registrován.
- nepodaří-li se provést kontrolu nebo existuje-li již takový klient v DB, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce se pokusí vložit nového klienta do DB a zaznamenat tuto akci do logu.
- v případě neúspěchu vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()),
- podaří-li se klienta vložit, vrátí fce 1
unregisterClients(string class, soap_object data)¶
vstupní hodnoty:- class: definice třídy cílové SOAP funkce vyžadovaná na serveru modulem SOAP::Lite (v případě projektu Warden je třída "Warden"),
- data: SOAP objekt nesoucí id klienta, který má být odregistrován (CLIENT_ID).
- 1 v případě úspěšného odregistrování klienta.
- jinak vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce zkontroluje, zda klient přistupuje z localhostu (odjinud nelze volat administrátorské fce).
- není-li podmínka splněna, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- fce následně zkontroluje, zda klient požadovaných parametrů je v DB registrován.
- nepodaří-li se provést kontrolu nebo neexistuje-li takový klient v DB, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()).
- jde-li o odesílajícího ("sender") klienta:
- fce vymaže klienta z tabulky clients,
- fce nastaví v tabulce events všem událostem, které mají totožné hostname a service s odregistrovávaným klientem příznak valid na "f" (false)
- nepodaří-li se některý z přechozích kroků, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()),
- následně fce zapíše do logu informaci o odregistrování klienta a vrací 1
- jde-li o přijímajícího klienta:
- fce vymaže klienta z tabulky clients,
- nepodaří-li se vymazat, vypíše fce chybový výpis prostřednictvím Syslogu do logu serveru a ukončí se (fce die()),
- následně fce zapíše do logu informaci o odregistrování klienta a vrací 1
Architektura Warden klienta¶
Struktura balíku warden-client¶
- /doc
- CHANGELOG
- INSTALL
- LICENSE
- README
- README.cesnet
- example-receiver.pl.txt
- example-sender.pl.txt
- /etc
- warden-client.conf
- /lib
- WardenClientConf.pm
- WardenClientReceive.pm
- fce getNewEvents
- WardenClientSend.pm
- fce saveNewEvent
- /sh
- install.sh
- update.sh
- /var
Implementace provozních funkcí¶
Provozní funkce jsou distribuovány jako součást běžného Warden klienta. Slouží k odesílání událostí na Warden server a k přijímání událostí z Warden serveru.
saveNewEvent(string warden_path, array event)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- event: pole atributů definující jednu konkrétní událost, tedy ($service, $detected, $type, $source_type, $source, $target_proto, $target_port, $attack_scale, $note, $priority, $timeout).
- 1 při úspěšném uložení události
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce si vytvoří SOAP objekt ze vstupního pole event.
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a odeslat na server již vytvořený SOAP objekt (volání serverové fce saveNewEvent).
- Podaří-li se událost odeslat, vrací fce 1.
- Nepodaří-li se spojit se serverem nebo odeslat SOAP objekt, vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
getNewEvents(string warden_path, string requested_type)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- requested_type: řetězec udávající typ události. Tyto události budou staženy z Warden serveru do klienta.
- pole událostí při úspěšném stažení události/událostí
- jinak chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce se pokusí načíst last_ID ze souboru:
- existuje-li soubor, ale nelze jej otevřít, vypíše chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- existuje-li soubor, načte fce hodnotu last_ID,
- neexistuje-li soubor, fce získá hodnotu last_ID ze serveru zavoláním serverové fce getLastId:
- server vrátí hodnotu (ID) aktuálně nejnovější události. Fce uloží tuto hodnotu do last_ID souboru a pokračuje nadále s touto hodnotou.
- nelze-li vytvořit soubor pro uložení obdržené hodnoty ID nebo server nevrátí hodnotu (z jakéhokoliv důvodu), vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce se pokusí spojit s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fci getNewEvents (žádá všechny události požadovaného typu - requested_type - a novější než last_ID)
- nepodaří-li se spojit se serverem, vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- jinak fce načítá přijaté události
- fce uloží novou hodnotu last_ID (ID nejnovější obdržené události) do souboru
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce vrací pole nových událostí obdržených od Warden serveru
Implementace administrátorských funkcí¶
Administrátorské funkce jsou distribuovány pouze v serverovém balíku a slouží k administrativním úkonům při provozu a správě Warden serveru. Fungují však striktně jako klientské funkce (v rámci architektury klient/server), proto je uvádíme zde.
getStatus(string warden_path)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- pole atributů popisující stav Warden serveru/DB
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fce getStatus.
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce vrátí pole polí atributů popisujících stav serveru
- první pole obsahuje atributy popisující stav samotného serveru a DB ("$db_size", "$events_sum", "$events_last_id", "$events_first_timestamp", "$events_last_timestamp", "$clients_sum")
- druhé a každé další pole popisuje stav vždy jednoho registrovaného klienta ("$client_id", "$hostname", "$service", "$count", "$timestamp")
getClients(string warden_path)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- pole atributů popisující jednotlivé zaregistrovené klienty
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fce getClients.
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce vrátí pole polí atributů popisujících atributy jednotlivých klientů zaregistrovaných na Warden serveru ("$client_id", "$hostname", "$registered", "$requestor", "$service", "$client_type", "$type", "$receive_own_events", "$description_tags", "$ip_net_client")
registerSender(string warden_path, string hostname, string requestor, string service, string description_tags, string ip_net_client)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- následující parametry vyplývají ze struktury tabulky clients:
- string hostname: hostname přihlašovaného klienta,
- string requestor: e-mail uživatele, který požádal o registraci nového klienta,
- string service: název služby produkující událost (např. honeyscan, nfscan, bfdetector),
- string description_tags: upřesnění služby,
- string ip_net_client: CIDR z nějž může klient komunikovat s Warden serverem.
- 1 v případě úspěšného zaregistrování odesílajícího (sender) klienta
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce si vytvoří SOAP objekt ze vstupních atributů (string hostname, string requestor, string service, string description_tags, string ip_net_client).
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fce registerSender (této fci předá vytvořený SOAP).
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- v případě úspěšné registrace nového odesílajícího (sender) klienta vrací fce 1
registerReceiver(string warden_path, string hostname, string requestor, string type, string receive_own_events, string ip_net_client)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- následující parametry vyplývají ze struktury tabulky clients:
- string hostname: hostname přihlašovaného klienta,
- string requestor: e-mail uživatele, který požádal o registraci nového klienta,
- string type: typ hlášené události, kterou bude klient přijímat (tuto a žádnou jinou),
- string receive_own_events:
- "t" - true (klient přijímá i události reportované odesílajícími klienty z jeho domény),
- "f" - false (klient nepřijímá události reportované odesílajícími klienty z jeho domény),
- string ip_net_client: CIDR z nějž může klient komunikovat s Warden serverem.
- 1 v případě úspěšného zaregistrování přijímajícího (receiver) klienta
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce si vytvoří SOAP objekt ze vstupních atributů (string hostname, string requestor, string type, string receive_own_events, string ip_net_client).
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fce registerReceiver (této fci předá vytvořený SOAP).
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- v případě úspěšné registrace nového přijímajícího (receiver) klienta vrací fce 1
unregisterClients(string warden_path, integer client_id)¶
vstupní hodnoty:- warden_path: string obsahující cestu do warden adresáře,
- integer client_id: ID klienta, který bude odregistrován (nebude moci nadále komunikovat s Warden serverem)
- 1 v případě úspěšného odregistrování klienta
- jinak vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())
- fce se pokusí vytvořit spojení s Warden serverem (včetně autentizace/autorizace) a zavolat serverovou fci unregisterClients s parametrem client_id.
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die()).
- fce vrátí 1 v případě úspěšného odregistrování klienta.
- v případě neúspěchu zápisu vypíše fce chybový výpis na standardní chybový výstup hostující aplikace, ukončení funkce i celé aplikace (fce die())