Perl скрипт, который считывает файл лога  IDS Suricata - eve.json,, берёт подготовленный файл для импорта IPSET под iptables сливает их вместе и де

Linux > Perl скрипт, который считывает файл лога  IDS Suricata - eve.json,, берёт подготовленный файл для импорта IPSET под iptables сливает их вместе и де
24.02.2015 12:00:49


Наиболее часто встречающиеся слова в статье:

[signature] [blacklist_mai] [iptables] [--match-set] [/bin/bash] [--log-prefix] ["DROP_BL_M"] [FORWARD] [element-] [blacklist]


Статья:

Perl скрипт, который считывает файл лога   IDS Suricata - eve.json,, берёт подготовленный  файл для импорта IPSET под iptables сливает их вместе  и делает уникальными IP

Формат файла под IPSET

192.168.20.10

194.12.10.10

PERL скрипт parsing.pl

#!/usr/bin/perl

#------------Формировние вывода IP c IDS suricata из формата вывода eve.json
use JSON;
#use Data::Dumper;
#Получаем список с suricata
open(MYFILE, "/var/log/suricata/eve.json");
@array3;
@array;
@signature;
#--------ЗАполнение базы сигнатур которые надо добавить в список - по ним будим сотавлять список IP
push @signature,'2011517';push @signature,'2012086';push @signature,'2012936';
push @signature,'2008228';push @signature,'2011768';push @signature,'2016032';
push @signature,'2016983';push @signature,'2016979';push @signature,'2016980';
push @signature,'2016981';push @signature,'2014704';push @signature,'2016982';
push @signature,'2016977';push @signature,'2020102';push @signature,'2016978';
push @signature,'2018326';push @signature,'2003466';push @signature,'2019232';
push @signature,'2019308';push @signature,'2019309';push @signature,'2017590';
push @signature,'2012090';push @signature,'2008453';push @signature,'2012088';
push @signature,'2016222';push @signature,'2018232';push @signature,'2009217';
push @signature,'2012087';push @signature,'2017500';push @signature,'2010908';
push @signature,'2019137';push @signature,'2008455';push @signature,'2008454';
push @signature,'2101390';push @signature,'2010794';push @signature,'2003869';
push @signature,'2013115';push @signature,'2102056';push @signature,'2402000';
push @signature,'2400003';push @signature,'2019239';push @signature,'2017616';
#---------------------------------------------------------------------------------------------------
#>>>>>>>>>>>>>>>>>>секция для теста
# 2018232
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

while ($json =<MYFILE>) {
chomp $json;
push @array3, decode_json($json);

}


foreach $element (@array3) {
$src_ip=$element->{'src_ip'} ;
$dest_ip= $element->{'dest_ip'} ;
$signature_id= $element->{'alert'}->{'signature_id'};
if ($dest_ip=='94.19.152.210'||$dest_ip=='192.168.1.2' )
{
#условие для отбора плохих IP в сравнении с массивом @signature
while (($key2,$value2) = each(@signature)) {
if ($signature_id==$value2 )
{push @array,$src_ip; }
}


}


}
#print Dumper( @array);

#читаем старый iptables сформированный файл IPSET
open(MYFILE2, "mai.txt");
while ($row =<MYFILE2>) {
chomp $row;
push @array2, $row;

}

#сливаем массивы в воедино
push @array, @array2 ;
#удаление повторяющихся значений
%hash = map { $_ => 1} @array;
@dst = keys %hash;
#вывод на экран\поток
while (($key, $value) = each(@dst)) {
if ($value!="нет") {print("$value\n");}
}

 

Скрипт вызова perl скрипта работы  с массивами

#!/bin/bash

echo -n "PODGOTOVKA blacklist to IPSET..."
./parsing.pl > new_mai.txt
cp new_mai.txt mai.txt
rm new_mai.txt

 

Скрипт заполнения  IPSET

#!/bin/bash

echo -n "Applying blacklist to IPSET..."
ipset -F blacklist_mai
xfile=$(cat /home/iocsha/blacklist/mai.txt)
for ipaddr in $xfile
do
ipset -A blacklist_mai $ipaddr
done
echo "...Done"

 

Скрипт создания  IPSET списка

#!/bin/bash

echo -n "Applying blacklist to IPSET..."
ipset -N blacklist_mai iphash
xfile=$(cat /home/iocsha/blacklist/mai.txt)
for ipaddr in $xfile
do
ipset -A blacklist_mai $ipaddr
done
echo "...Done"

 

Скрипт добавления  правила  в Iptables

#!/bin/bash

iptables -v -I INPUT -m set --match-set blacklist_mai src -j DROP
iptables -v -I INPUT -m set --match-set blacklist_mai src -j LOG --log-prefix "DROP_BL_M"

iptables -v -I OUTPUT -m set --match-set blacklist_mai dst -j DROP
iptables -v -I OUTPUT -m set --match-set blacklist_mai dst -j LOG --log-prefix "DROP_BL_M"

iptables -v -I FORWARD -m set --match-set blacklist_mai src -j DROP
iptables -v -I FORWARD -m set --match-set blacklist_mai src -j LOG --log-prefix "DROP_BL_M"

iptables -v -I FORWARD -m set --match-set blacklist_mai dst -j DROP
iptables -v -I FORWARD -m set --match-set blacklist_mai dst -j LOG --log-prefix "DROP_BL_M"