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

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

Новости

30-дек
29-дек
26-дек
15-дек

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

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

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

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


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

Стаж: 7 лет 11 месяцев

Сообщений: 1936
Благодарностей: 1940
Полезность: 1238

multiplay.ru
Вот и пришло время описать вторую часть.
Предупрежу сразу, данный мануал не сработает на 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 за предоставленные ресурсы для тестов и написания фака.


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 15 раз
   Цитировать сообщение
Статус пользователя coolman
сообщение 6.7.2015, 8:52
Сообщение #2


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

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

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

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


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

Стаж: 7 лет 11 месяцев

Сообщений: 1936
Благодарностей: 1940
Полезность: 1238

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

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


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


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

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

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

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


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

Стаж: 7 лет 11 месяцев

Сообщений: 1936
Благодарностей: 1940
Полезность: 1238

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

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


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


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

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

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

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


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

Стаж: 7 лет 11 месяцев

Сообщений: 1936
Благодарностей: 1940
Полезность: 1238

multiplay.ru
Обновление от разработчика, теперь не нужны грабли в виде 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


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