Обнаружение атак и их дампы., Часть 2. |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
|
Обнаружение атак и их дампы., Часть 2. |
Fire
|
5.7.2015, 21:41
Сообщение
|
![]() ![]() |
Вот и пришло время описать вторую часть.
Предупрежу сразу, данный мануал не сработает на VDS\VPS с виртуализацией OpenVZ Мануал рассчитан на Debian 7, но отличие от других осей минимальны. Итак, для обнаружения атак и снятия дампов мы воспользуемся тузлой под названием FastnetMon, разработки моего друга, Павла Одинцова. Про саму тузлу можно почитать на хабре: http://habrahabr.ru/post/259399/ Вкратце, тузла которая использует PF_RING, либо netmap, netflow Мы будем использовать именно pf_ring как наиболее быстрое и менее ресурсоемкое решение. Итак, начнем. Для начала установим gcc и g++ ну и tcpdump Код apt-get install -y gcc g++ tcpdump Далее, все очень просто, Павел написал скрипт авто-сетапа тузлы и всех либ, так что нам не придется вручную собирать pf_ring как в первых версиях. Скачиваем установщик: Код wget https://raw.githubusercontent.com/FastVPSEestiOu/fastnetmon/master/src/fastnetmon_install.pl -Ofastnetmon_install.pl Запускаем: Код perl fastnetmon_install.pl Терпеливо ждем завершения. После завершения сетапа, на всякий случай выполняем Код modprobe pf_ring Т.к не всегда модуль подгружается в ядро с первого раза. Далее, настраиваем детекторы. В конфиге Код /etc/fastnetmon.conf Меняем следующие параметры: Код enable_ban = on ban_for_pps = on ban_for_bandwidth = on ban_for_flows = on mirror = on // включаем работу через pf_ring Остальное можно не трогать. Так-же выставляем лимиты срабатываний при атаках. Код # Limits for Dos/DDoS attacks threshold_pps = 10000 threshold_mbps = 50 threshold_flows = 3500 Нам интересны threshold_pps - кол. пакетов в секунду threshold_mbps - кол. мбит в секунду. После внесения изменений запускаем\перезапускаем fastnetmon Код systemctl restart fastnetmon Для автоматического запуска мониторинга при старте системы, добавляем в /etc/rc.local Код /opt/fastnetmon/fastnetmon --daemonize Далее настраиваем скрипт, который будет делать дампы: Код cp /usr/src/fastnetmon/src/notify_about_attack.sh /usr/local/bin/notify_about_attack.sh chmod 755 /usr/local/bin/notify_about_attack.sh Приводим скрипт Код /usr/local/bin/notify_about_attack.sh к такому видуСкрытый текст Код #!/usr/bin/env bash # $1 client_ip_as_string # $2 data_direction # $3 pps_as_string # $4 action (ban or unban) email_notify="ваша_почта" time="`date '+%m-%d_%H:%M'`" # Далее возможны два варианта: # это первый запуск, при котором нужно банить IP (на stdin пусто) # это второй запуск, когда скрипт уже собрал (если смог) детали об атаке (на stdin даные об атаке) if [ "$4" = "unban" ]; then # Unban actions if used exit 0 fi if [ "$4" = "ban" ]; then # cat | mail -s "FastNetMon Guard: IP $1 blocked because $2 attack with power $3 pps" $email_notify; # You can add ban code here! # iptables -A INPUT -s $1 -j DROP # iptables -A INPUT -d $1 -j DROP /usr/sbin/tcpdump -v -n -c 300 >> /root/attack_$time.log /usr/sbin/tcpdump -v -x -n -w /root/ddos_$time.log -c 300 exit 0 fi if [ "$4" == "attack_details" ]; then cat | mail -s "FastNetMon Guard: IP $1 blocked because $2 attack with power $3 pps" $email_notify; fi Если хотите что-бы приходили уведомления на почту, убираем # перед: Код # cat | mail -s "FastNetMon Guard: IP $1 blocked because $2 attack with power $3 pps" $email_notify; На этом настройка закончена. Смотрим логи: Скрытый текст Код 2015-07-05 15:23:47,339 [INFO] We use custom sampling ratio for netflow: 1 2015-07-05 15:23:47,339 [INFO] netflow plugin will listen on 0.0.0.0:2055 udp port 2015-07-05 15:23:47,339 [INFO] sflow plugin started 2015-07-05 15:23:47,339 [INFO] sflow plugin will listen on 0.0.0.0:6343 udp port 2015-07-05 15:23:47,339 [INFO] PF_RING plugin started 2015-07-05 15:23:47,339 [INFO] We selected interface:eth0 2015-07-05 15:23:47,341 [INFO] Successully binded to: eth0 2015-07-05 15:23:47,341 [INFO] Device RX channels number: 2015-07-05 15:23:47,341 [INFO] Using PF_RING v.6.0.3 2015-07-05 15:23:47,341 [INFO] Run banlist cleanup thread Все ок, все работает. Можем запустить клиент, что-бы видеть текущую статистику: Код /opt/fastnetmon/fastnetmon_client Несколько скриншотов: ![]() ![]() При атаках, в папке /root/ создаются 2 файла: attack_дата_время.log ddos_дата_время.log attack_дата_время.log - лог который можно просматривать обычным текстовым редактором, там основная информация о атаке: Скрытый текст ![]() ddos ddos_дата_время.log - Более подробный дамп для просмотра через tcpdump (tcpdump -n -v -x -r ddos_дата_время.log ) Скрытый текст ![]() ps\\ Если что-то не работает, первым делом смотрим логи, там все написано (tail -f /var/log/fastnetmon.log ) pss\\ Немного рекламы. Отдельная благодарность Олегу Солодкому, директору riaas.ru за предоставленные ресурсы для тестов и написания фака. ![]() |
Поблагодарили 23 раз
|
|
Zod
|
22.6.2017, 1:57
Сообщение
|
|
|
Дополню
по ридми нужно было добавить сетку белых айпишников в /etc/networks_list содержимое ls -l /etc/networks_list 199.231.241.222/29 что было сделано изначально, но никак не повлияло на решение проблемы в предыдущем посте
Отредактировал: Zod, - 22.6.2017, 2:02
|
|
|
|
Fire
|
22.6.2017, 3:55
Сообщение
|
![]() ![]() |
![]() |
|
|
|
joker_burn
|
7.9.2018, 23:59
Сообщение
|
![]() |
статья три года назад написана, актуальна такая защита на сегодня?
|
|
|
|
l0vecwk
|
8.9.2018, 10:36
Сообщение
|
|
|
|
|
|
|
![]() ![]() |