Jump to content
Калькуляторы

Написал небольшой монитор для отлова атак по SFLOW

Коллеги, не далее как два дня назад соорудил небольшой коллектор/агрегатор статистики по SFLOW, вчера с его помощью отловил 200 Мбит транзитного DDoS-а).

Если кому-то надо, могу поделиться. Написан на Perl. Работает без СУБД, на файлах.

Поиск злодейства делается через cat ... | sort ... )

Возможно, будут какие-то ЦУ, замечания, предложения, буду рад дополнить.

Share this post


Link to post
Share on other sites

Выложи тут интересно посмотреть. Ну или в личку.

Edited by chipset

Share this post


Link to post
Share on other sites

dignity, а что мой анализатор не хотите взять? :) У него уже добрая сотня отловленных атак на счету. Ждете, как PF_RING прикручу?

Share this post


Link to post
Share on other sites

dignity, а что мой анализатор не хотите взять? :) У него уже добрая сотня отловленных атак на счету. Ждете, как PF_RING прикручу?

 

Наверное потому не захотел брать, что ваш анализатор не-sFlow :-). Я ваш анализатор не смотрел, но вы сами пишете, что используется миррор трафика, т.е. вы в анализатор вдуваете *весь* трафик. У sFlow другой подход -- можно делать выводы, имея 1/1000 трафика для анализа. Причём выводы будут правильные в пределах статистической погрешности (все пакеты имеют равную вероятность попасть в коллектор - заявлено технологией sFLow, как на самом деле реализовано в китайских свичах, неизветно, но фича аппаратная, должно быть как заявлено).

 

Хотелось бы посмотреть на творчество dignity.

Share this post


Link to post
Share on other sites

Выложу. Монитор простой) особой интеллектуальной аналитики нет. В основном каунтеры пакетов. Если будет предложение по каким-то интеллектуальным плюхам, могу реализовать попробовать.

Share this post


Link to post
Share on other sites

https://github.com/netpoint-dc/sflow-analyzer

 

Изначально SFLOW снимается с BROCADE CER.

 

Как пользоваться:

0) устанавливаем sflowtool

1) создаем каталог /sflow /sflow/processed

2) помещаем каталоги из репозитория в корень

3) генерируем ключ SSH (/root/.ssh/id_rsa.backup) для того хоста, на который будут складываться архивы SFLOW и каунтеров каждый час для последующего временного анализа.

4) меняем хост, куда будут складываться архивы по SSH в /etc/cron.hourly/rotate-sflow и меняем там прочие шурушки

5) запускаем /etc/cron.hourly/rotate-sflow

6) начинает генерироваться файл /sflow/current

7) каждый час создается /sflow/processed/sflow-MMDD.csv

8) если хотим что-то проанализировать, делаем /opt/get_aggregated_by_hour /sflow/current получаем /sflow/aggregated-DD-HH

9) cat /sflow/aggregated-DD-HH/_utilization | sort -n -k3 -r | head -n 20

10) так же там есть различная статистика, агрегированная по IP портам.

Share this post


Link to post
Share on other sites

dignity, а что мой анализатор не хотите взять? :) У него уже добрая сотня отловленных атак на счету. Ждете, как PF_RING прикручу?

 

Наверное потому не захотел брать, что ваш анализатор не-sFlow :-). Я ваш анализатор не смотрел, но вы сами пишете, что используется миррор трафика, т.е. вы в анализатор вдуваете *весь* трафик. У sFlow другой подход -- можно делать выводы, имея 1/1000 трафика для анализа. Причём выводы будут правильные в пределах статистической погрешности (все пакеты имеют равную вероятность попасть в коллектор - заявлено технологией sFLow, как на самом деле реализовано в китайских свичах, неизветно, но фича аппаратная, должно быть как заявлено).

 

Хотелось бы посмотреть на творчество dignity.

 

Ох, да, ваша правда, мой с flow не работает, у нас задачка стоит чуточку иная и нужна высокая точность и отлов всех пакетов.

Share this post


Link to post
Share on other sites
Коллеги, не далее как два дня назад соорудил небольшой коллектор/агрегатор статистики по SFLOW, вчера с его помощью отловил 200 Мбит транзитного DDoS-а).
почему просто nfdump'ом или flow-tools'ом не собрать top dstip по flows и если flows и bps больше определенного значения кидать dstip в блекхол ? :)

 

ps: 200Mbps - это разве DDoS ? даже DoS бывает крупнее. :)

Share this post


Link to post
Share on other sites

Это обсуждать не буду. Вот что у меня сейчас строится:

 

===========================================================

_utilization

 

Holds general utilization statistics in PPS for period.

Format is:

IP PPS_Send PPS_Received COUNTRY

 

===========================================================

ports/<PORT>.ips

 

Holds IP exchange statistics per port.

Format is:

IP PPS_Send&ReceivedFromLocal<PORT> PPS_Send&ReceivedFromRemote<PORT>

 

===========================================================

<OCTET>/<IP>.packets

 

Holds IP exchange statistics per IP for every minute.

Format is:

MINUTE PPS_Send PPS_Received

 

===========================================================

<OCTET>/<IP>.peers

 

Holds IP exchange statistics for IP for every peer.

Format is:

<IP> PPS_Send PPS_Received COUNTRY

 

===========================================================

<OCTET>/<IP>.geo

 

Holds IP exchange statistics for IP for every peer.

Format is:

<COUNTRY> PPS_Send PPS_Received

 

===========================================================

<OCTET>/<IP>.ports

 

Holds IP exchange statistics for IP per port.

Format is:

<PORT> PPS_SendFromLocalPort PPS_SendToRemotePort PPS_ReceivedFromRemotePort PPS_ReceivedToLocalPort

 

===========================================================

countries/<CC>.ips

 

Holds IP exchange statistics for certain countries for IPs.

Format is:

<IP> PPS_Send PPS_Received

 

 

===========================================================

countries/_stats

 

Holds IP exchange statistics for every country.

Format is:

<CC> PPS_Send PPS_Received

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this