Дата: Среда, 10.10.2018, 00:42 | Сообщение # 1
Администраторы BSR
- Сообщений:
- 265
Offline
Вот и пришло время описать вторую часть. Предупрежу сразу, данный мануал не сработает на 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/FastVPS....tall.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
Несколько скриншотов:
Уменьшено: 28% от [ 635 на 308 ] — нажмите для просмотра полного изображения
Уменьшено: 29% от [ 609 на 356 ] — нажмите для просмотра полного изображения
При атаках, в папке /root/ создаются 2 файла: attack_дата_время.log ddos_дата_время.log
attack_дата_время.log - лог который можно просматривать обычным текстовым редактором, там основная информация о атаке: Скрытый текст Уменьшено: 22% от [ 785 на 171 ] — нажмите для просмотра полного изображения
ddos ddos_дата_время.log - Более подробный дамп для просмотра через tcpdump (tcpdump -n -v -x -r ddos_дата_время.log ) Скрытый текст Уменьшено: 22% от [ 790 на 167 ] — нажмите для просмотра полного изображения
ps\\ Если что-то не работает, первым делом смотрим логи, там все написано (tail -f /var/log/fastnetmon.log ) pss\\ Немного рекламы. Отдельная благодарность Олегу Солодкому, директору riaas.ru за предоставленные ресурсы для тестов и написания фака.

|