Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Важная информация

Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения.
Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме.
При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.

Обнаружение атак и их дампы.

, Часть 2.
Статус пользователя Fire
сообщение 5.7.2015, 21:41
Сообщение #1


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Вот и пришло время описать вторую часть.
Предупрежу сразу, данный мануал не сработает на 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 раз
   Цитировать сообщение
Статус пользователя coolman
сообщение 6.7.2015, 8:52
Сообщение #2


Стаж: 17 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

мудрено что то, полезность только сбор пакетов при атаке, которые можно потом проанализировать, если в них есть уязвимость для сервера, но как правила уязвимых пакетов хватает совсем немного, что бы положить сервер, от ддоса поможет стандартный conntrack и логирование при превышении лимита и все, если я не прав, расскажите мне в чем ошибаюсь.
А где первая часть?

Отредактировал: coolman, - 6.7.2015, 9:07
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 6.7.2015, 10:00
Сообщение #3


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Цитата(coolman @ 6.7.2015, 9:52) *
мудрено что то, полезность только сбор пакетов при атаке, которые можно потом проанализировать, если в них есть уязвимость для сервера, но как правила уязвимых пакетов хватает совсем немного, что бы положить сервер, от ддоса поможет стандартный conntrack и логирование при превышении лимита и все, если я не прав, расскажите мне в чем ошибаюсь.
А где первая часть?

В первой части как раз и есть логирование. (в этом-же разделе)
коннтрэк считает кол. коннектов общее\с ипа, удобно при флуде, да. Но опять-же, сам по себе коннтрек при мощном флуде нихерово так загрузит систему.
Обычное логирование не всегда дает всю нужную информацию, поэтому дампы зачастую полезны.
В данном мане, все-же, основной упор на DDOS, который может забить канал, либо значительно превысить нормальный юсадж трафика сервером.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя coolman
сообщение 6.7.2015, 10:05
Сообщение #4


Стаж: 17 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

Цитата(Fire @ 6.7.2015, 13:00) *
В первой части как раз и есть логирование. (в этом-же разделе)
коннтрэк считает кол. коннектов общее\с ипа, удобно при флуде, да. Но опять-же, сам по себе коннтрек при мощном флуде нихерово так загрузит систему.
Обычное логирование не всегда дает всю нужную информацию, поэтому дампы зачастую полезны.
В данном мане, все-же, основной упор на DDOS, который может забить канал, либо значительно превысить нормальный юсадж трафика сервером.

я имел введу для ограничения новых пакетов использовать hashlimit, а conntrack для количества соединений.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 6.7.2015, 10:13
Сообщение #5


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Цитата(coolman @ 6.7.2015, 11:05) *
я имел введу для ограничения новых пакетов использовать hashlimit, а conntrack для количества соединений.

А какое это имеет отношение в ману? То, о чем ты говоришь это защита сервера от школьного флуда, оно даже от hping не всегда спасет.
И сам по себе hashlimit немного не то для кс, ибо очень много нюансов. Для него нужна тонкая настройка лимитов под каждый сервер.
А данной тузлой, можно кстати и дергать скрипты, которые будут банить наглые ипы, при возрастании юсаджа канала\pps


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя coolman
сообщение 7.7.2015, 6:19
Сообщение #6


Стаж: 17 лет
Город: Екатеринбург

Сообщений: 1220
Благодарностей: 218
Полезность: 149

Цитата(Fire @ 6.7.2015, 13:13) *
А какое это имеет отношение в ману? То, о чем ты говоришь это защита сервера от школьного флуда, оно даже от hping не всегда спасет.
И сам по себе hashlimit немного не то для кс, ибо очень много нюансов. Для него нужна тонкая настройка лимитов под каждый сервер.
А данной тузлой, можно кстати и дергать скрипты, которые будут банить наглые ипы, при возрастании юсаджа канала\pps

Ну просто я с досом ддосом борюсь именно этими плюшками, без всяких скрипов используя только iptables, превысил лимит? автоматом в бан уходит ip на время которое мне нужно, либо с ограничением к определенным портам либо вообще к серверу, пинг вообще закрыт у меня да опять же теме же командами можно сделать лимит на пинг.
Лично я считаю, что iptables достаточно и не для школьного флуда, был бы канал пошире и сетевая посерьезней.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 16.7.2015, 23:06
Сообщение #7


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Обновление от разработчика, теперь не нужны грабли в виде sh скриптов ;)
Cкрытый текст
Цитата
https://github.com/FastVPSEestiOu/fastnetmo...a13f7d63ddd9af6
[23:43:06] Pavel Odintsov: спешал фо ю :)
[23:43:12] Pavel Odintsov: bool collect_attack_pcap_dumps = true;
[23:43:46] Pavel Odintsov:
ls -al /var/log/fastnetmon_attacks/10.10.10.221_16_07_15_22\:35\:18*
-rw-r--r-- 1 root root 76K Jul 16 22:35 /var/log/fastnetmon_attacks/10.10.10.221_16_07_15_22:35:18
---x--x--- 1 root root 38K Jul 16 22:35 /var/log/fastnetmon_attacks/10.10.10.221_16_07_15_22:35:18.pcap
[23:44:02] Pavel Odintsov: tcpdump -r /var/log/fastnetmon_attacks/10.10.10.221_16_07_15_22:35:18.pcap -c 10
reading from file /var/log/fastnetmon_attacks/10.10.10.221_16_07_15_22:35:18.pcap, link-type EN10MB (Ethernet)
22:35:18.312983 IP 10.2.203.255.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313012 IP 10.2.204.0.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313035 IP 10.2.204.2.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313073 IP 10.2.204.4.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313078 IP 10.2.204.6.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313134 IP 10.2.204.5.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6
22:35:18.313158 IP 10.2.204.10.1025 > 10.10.10.221.http: Flags [S], seq 1:7, win 10, length 6


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zod
сообщение 21.6.2017, 21:09
Сообщение #8
Стаж: 9 лет 6 месяцев

Сообщений: 243
Благодарностей: 73
Полезность: < 0

Цитата
После завершения сетапа, на всякий случай выполняем
Код
modprobe pf_ring


modprobe pf_ring
modprobe: FATAL: Module pf_ring not found in directory /lib/modules/4.4.0-20-generic

как победить?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fire
сообщение 22.6.2017, 0:49
Сообщение #9


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Zod,
Собрать pf_ring руками.
http://www.ntop.org/products/packet-capture/pf_ring/
Перед сборкой убедится что в /lib/modules/4.4.0-20-generic/ есть симлинки source и build на хидер ядра в /usr/src/linux-headers-4.4.0-20-generic/


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Zod
сообщение 22.6.2017, 1:38
Сообщение #10
Стаж: 9 лет 6 месяцев

Сообщений: 243
Благодарностей: 73
Полезность: < 0

спасибо
все пакеты прутся в дроп, в чем может быть проблема?
в логах всё ок

Цитата
Screen updated in: 0 sec 853 microseconds
Traffic calculated in: 0 sec 16 microseconds
Total amount of not processed packets: 645
Packets received: 645
Packets dropped: 2627
Packets dropped: 407.3 %


Вся остальная стата соответственно не работает

Отредактировал: Zod, - 22.6.2017, 1:39
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Zod
сообщение 22.6.2017, 1:57
Сообщение #11
Стаж: 9 лет 6 месяцев

Сообщений: 243
Благодарностей: 73
Полезность: < 0

Дополню
по ридми нужно было добавить сетку белых айпишников в /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
Сообщение #12


Иконка группы

Стаж: 15 лет

Сообщений: 2201
Благодарностей: 2227
Полезность: 963

Zod,
Надо смотреть. Может драйвер кривой, либо еще что.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя joker_burn
сообщение 7.9.2018, 23:59
Сообщение #13


Стаж: 13 лет
Город: Казань

Сообщений: 99
Благодарностей: 4
Полезность: 38

статья три года назад написана, актуальна такая защита на сегодня?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
l0vecwk
сообщение 8.9.2018, 10:36
Сообщение #14
Стаж: 5 лет 11 месяцев

Сообщений: 346
Благодарностей: 49
Полезность: < 0

Меценат Меценат

Цитата(joker_burn @ 7.9.2018, 23:59) *
статья три года назад написана, актуальна такая защита на сегодня?

обновляется, защита, так же как и атаки новые.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: