Task #973
closedUtilita na odesílání událostí z příkazové řádky
0%
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.
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.
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í.
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).
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í.