Project

General

Profile

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

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>]
  • Zjistovani stavu Warden serveru
    • zjisteni stavu serveru:
      getStatus.pl
    • zjisteni stavu zaregistrovanych klientu
      getClients.pl

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)
    1. overeni SSL certifikatu serveru klientem pomoci modulu SOAP::Transport::TCP::Client (SSL_verify_mode => 0x02)
    2. overeni SSL certifikatu klienta serverem pomoci modulu SOAP::Transport::TCP::Server (SSL_verify_mode => 0x03)
    3. 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)
    1. overeni SSL certifikatu serveru klientem pomoci modulu SOAP::Transport::TCP::Client (SSL_verify_mode => 0x02)
    2. overeni SSL certifikatu klienta serverem pomoci modulu SOAP::Transport::TCP::Server (SSL_verify_mode => 0x03)
    3. 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.

  1. 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

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).
návratová hodnota:
  • 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()).
funkcionalita:
  • 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).
návratová hodnota:
  • 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()).
funkcionalita:
  • 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
návratová hodnota:
  • 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()).
funkcionalita:
  • 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
návratová hodnota:
  • 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()).
funkcionalita:
  • 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).
návratová hodnota:
  • 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()).
funkcionalita:
  • 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).
návratová hodnota:
  • 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()).
funkcionalita:
  • 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).
návratová hodnota:
  • 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()).
funkcionalita:
  • 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).
návratová hodnota:
  • 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())
funkcionalita:
  • 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.
návratová hodnota:
  • 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())
funkcionalita:
  • 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,
návratová hodnota:
  • 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())
funkcionalita:
  • 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,
návratová hodnota:
  • 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())
funkcionalita:
  • 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.
návratová hodnota:
  • 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())
funkcionalita:
  • 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.
návratová hodnota:
  • 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())
funkcionalita:
  • 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)
návratová hodnota:
  • 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())
funkcionalita:
  • 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())

Files