ADD: script to update signature table in ossec database
This commit is contained in:
parent
f36b0ffabb
commit
07bc45ec8d
70
bin/ossec-update-rules-database.pl
Normal file
70
bin/ossec-update-rules-database.pl
Normal file
@ -0,0 +1,70 @@
|
||||
#!/usr/bin/env perl
|
||||
|
||||
#ABSTRACT: script to update the rules within the mysql database
|
||||
#PODNAME: ossec-update-rules-database.pl
|
||||
use strict;
|
||||
use warnings;
|
||||
use File::Basename;
|
||||
use OSSEC;
|
||||
use XML::LibXML;
|
||||
use Try::Tiny;
|
||||
|
||||
my $ossec = OSSEC->new();
|
||||
my $mysql = $ossec->mysql();
|
||||
|
||||
# clear rules from database
|
||||
$mysql->deleteAllRules();
|
||||
|
||||
my @includes = $ossec->config()->getElementsByTagName("include");
|
||||
|
||||
for my $i (@includes)
|
||||
{
|
||||
if (! -e $ossec->ossecPath() . "/rules/" . $i->textContent)
|
||||
{
|
||||
warn($i . " not found\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
readpipe("echo \"<root>\" > /tmp/".$i->textContent);
|
||||
readpipe("cat " . $ossec->ossecPath() . "/rules/" . $i->textContent . ">> /tmp/".$i->textContent);
|
||||
readpipe("echo \"</root>\" >> /tmp/".$i->textContent);
|
||||
readpipe("sed -i '/pcre2/d' /tmp/".$i->textContent );
|
||||
|
||||
open(my $fh, '<', "/tmp/" . $i->textContent);
|
||||
binmode $fh;
|
||||
my $ruleFile;
|
||||
|
||||
my $parser = XML::LibXML->new;
|
||||
$parser->set_option("pedantic_parser",0);
|
||||
$parser->set_option("validation", 0);
|
||||
$parser->set_option("recover",1);
|
||||
|
||||
try {
|
||||
$ruleFile = $parser->load_xml(IO => $fh);
|
||||
} catch {
|
||||
warn("Error parsing " . $i->textContent . ": $_\n");
|
||||
};
|
||||
close $fh;
|
||||
|
||||
my @rules = $ruleFile->getElementsByTagName("rule");
|
||||
|
||||
for my $r (@rules)
|
||||
{
|
||||
my $rule = {};
|
||||
my $description;
|
||||
if ($r->getElementsByTagName("description"))
|
||||
{
|
||||
$description = $r->getElementsByTagName("description")->[0]->textContent;
|
||||
}
|
||||
else
|
||||
{
|
||||
$description = "unknown";
|
||||
}
|
||||
|
||||
$mysql->addRule($r->getAttribute("id"), $r->getAttribute("level"), $description);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user