Project

General

Profile

Actions

Task #973

closed

Utilita na odesílání událostí z příkazové řádky

Added by Pavel Kácha over 11 years ago. Updated over 11 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Jan Soukal
Category:
-
Target version:
Start date:
04/11/2013
Due date:
04/19/2013
% Done:

0%

Estimated time:

Description

Vytvoření řádkové utility, která odešle zprávu na základě potřebných údajů, předaných jako parametry v příkazové řádce.
Vhodné pro projekty, které nepoužívají nativně Perl.

Actions #1

Updated by Jan Soukal over 11 years ago

  • Due date set to 04/19/2013
Actions #2

Updated by Jan Soukal over 11 years ago

K dispozici v revizi 5ead95a9

  • Pro zpracování vstupů jsem použil Getopt::Std, nicméně velké množství atributů by možná zasloužilo vícepismenné identifikátory, které Getopt::Std neumí. Ale možná je to jen můj pocit. Ostatně v aplikaci se to volání napíše jednou a pak už to nikdo neřeší. Jediný problém by to mohlo dělat analytikům, kteří by tuto featuru chtěli využívat "ručně" a často.
  • Již jsem odstranil podporu timeout a priority atributů, která se bude v budoucnu rušit.
  • Odzkoušel jsem proti serveru 2.1 na sandboxu - zdá se, že vše funguje.
  • Oproti serveru 2.2 je problematická změna DB schématu. Aktuálně proti 2.2 serveru nefunguje žádný z ukázkových klientů. Toto musím probrat s Tomem, protože nevím, jestli jde přímo o featuru nebo o dočasný bug, který se zahladí.
  • Skript jsem pojmenoval command-line-sender.pl a umístil mezi další klienty do warden-client/doc. Tentokrát jsem nedodal za skript příponu .txt, jelikož již nejde o ukázku, ale o plnohodnotný nástroj.

Využil jsem jako základ stávajícího example-sendera, do nějž jsem doplnil obsluhu řádkových parametrů, nápovědu, atd. Viz help:

~/warden/src/warden-client/doc $ ./command-line-sender.pl

Usage: ./command-line-sender.pl [-s <service>] [-d <timestamp_of_detection>] [-t <type>] [-o <source_type>] [-v <source>] [-p <protocol>] [-r <port>] [-a <attack_scale>] [-n <note>] [-w <warden_directory>] [-h]

Arguments:

-s <service>                -  Name of detection service
-d <timestamp_of_detection> -  Timestamp of detection.
                               Default is current system time (2013-04-19T17:14:37)
-t <type>                   -  Type of detected event
-o <source_type>            -  Type of detected event's source

Optional (but important) arguments:

-v <source>                 -  Source of detected event
-p <protocol>               -  Protocol
-r <port>                   -  Port
-a <attack_scale>           -  Scale of detected event
-n <note>                   -  Note, comment or other data
-w <warden_directory>       -  Path to warden-client directory. Default is '../../warden-client'
-h                          -  Print this help

Example: ./command-line-sender.pl -s test -t webattack -o URL -v 123.123.098.098 -p TCP -r 443 -a 100 -n "important notice" 

NOTE: For more information how to use particular values see warden-client/doc/README file.

Actions #3

Updated by Pavel Kácha over 11 years ago

Super.

Myslím, že dlouhé argumenty jsou dobrý nápad, ne přesto, ale právě proto, že to každý napíše do skriptu jednou. S jednopísmennými se k tomu vrátí za půl roku a nebude tušit která bije. Byl bych pro použít parametry, které se názvem co nejvíce blíží jménům atributů.
Getopt::Long je v distribucích, nebál bych se ho použít.

Na Toma (nefunkčnost proti 2.2) klidně otevři bugreport, ať to máme zadokumentované a nezapomeneme to otestovat. Možná je to dočasné, pokud ano, tak se jen zavře až se věci uklidní.

Actions #4

Updated by Jan Soukal over 11 years ago

Pavel Kácha wrote:

Myslím, že dlouhé argumenty jsou dobrý nápad, ne přesto, ale právě proto, že to každý napíše do skriptu jednou. S jednopísmennými se k tomu vrátí za půl roku a nebude tušit která bije. Byl bych pro použít parametry, které se názvem co nejvíce blíží jménům atributů.
Getopt::Long je v distribucích, nebál bych se ho použít.

Ok. Doplnil jsem podporu "dlouhých" argumentů v revizi a1d3538c. Krátké argumenty jsem ponenechal, když už je máme integrované, takže použití je následující:

$ ./command-line-sender.pl --help

About command-line-sender.pl

  Script is supposed to be used as a simple command-line warden client that can send one event to the warden server at a time.
For more information about the Warden system and it's events' structure, please see warden-client/doc/README file.

Usage:

  ./command-line-sender.pl -s <service> -e <event_type> -o <source_type> [-t <timestamp_of_detection>] [-v <source>] [-p <protocol>]
[-r <port>] [-a <attack_scale>] [-n <note>] [-w <warden_directory>] [-h]

Arguments:

  -s SERVICE, --service=SERVICE                -  Name of detection service

  -e EVENT_TYPE, --event-type=EVENT_TYPE       -  Type of detected event

  -o SOURCE_TYPE, --source-type=SOURCE_TYPE    -  Type of detected event's source

Optional (but important) arguments:

  -t TIMESTAMP, --timestamp=TIMESTAMP          -  Timestamp of detection.
                                                  Default is current system time (2013-04-25T13:52:03)

  -v SOURCE_VALUE, --source-value=SOURCE_VALUE -  Source of detected event

  -p PROTO, --proto=PROTO                      -  Protocol

  -r PORT, --port=PORT                         -  Port

  -a ATTACK_SCALE, --attack-scale=ATTACK_SCALE -  Scale of detected event

  -n NOTE, --note=NOTE                         -  Note, comment or other data

  -w WARDEN_DIR, --warden-dir=WARDEN_DIR       -  Path to the warden-client directory. Default is '../../warden-client'

  -h, --help                                   -  Print help

Example #1: ./command-line-sender.pl -s PhishTracker -e webattack -o URL -v 123.123.098.098 -p TCP -r 443 -a 100 -n "important notice" 

Example #2: ./command-line-sender.pl --service=ScanGuardian --event-type=portscan --source-type=IP --timestamp="2013-04-25T13:36:31" 
--source-value="123.123.1.23" --proto=TCP --port=25 --attack-scale=1234 --note="The very first run of ScanGuardian :)" 
--warden-dir "/opt/warden/warden-client" 

NOTE: For more information how to use particular values see warden-client/doc/README file.

Na Toma (nefunkčnost proti 2.2) klidně otevři bugreport, ať to máme zadokumentované a nezapomeneme to otestovat. Možná je to dočasné, pokud ano, tak se jen zavře až se věci uklidní.

Toto je již vyřešeno. Šlo o dočasnou nekonzistenci v databázi způsobenou změnami databázového schématu (client_id do tabulky events). S Tomem jsme to řešili osobně, takže ticket k tomu, myslím, není potřeba (nešlo o chybu, kterou bychom potřebovali z vývojových důvodů evidovat/archivovat).

Actions #5

Updated by Pavel Kácha over 11 years ago

  • Status changed from New to Closed

Ok, to vypadá dobře. Bude potřeba, aby na to nezapomněl Kuba při testování.

Actions

Also available in: Atom PDF