Обнаружение атак и их дампы., Часть 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 раз
|
|
coolman |
6.7.2015, 8:52
Сообщение
|
|
мудрено что то, полезность только сбор пакетов при атаке, которые можно потом проанализировать, если в них есть уязвимость для сервера, но как правила уязвимых пакетов хватает совсем немного, что бы положить сервер, от ддоса поможет стандартный conntrack и логирование при превышении лимита и все, если я не прав, расскажите мне в чем ошибаюсь.
А где первая часть?
Отредактировал: coolman, - 6.7.2015, 9:07
|
|
|
Fire |
6.7.2015, 10:00
Сообщение
|
|
мудрено что то, полезность только сбор пакетов при атаке, которые можно потом проанализировать, если в них есть уязвимость для сервера, но как правила уязвимых пакетов хватает совсем немного, что бы положить сервер, от ддоса поможет стандартный conntrack и логирование при превышении лимита и все, если я не прав, расскажите мне в чем ошибаюсь. А где первая часть? В первой части как раз и есть логирование. (в этом-же разделе) коннтрэк считает кол. коннектов общее\с ипа, удобно при флуде, да. Но опять-же, сам по себе коннтрек при мощном флуде нихерово так загрузит систему. Обычное логирование не всегда дает всю нужную информацию, поэтому дампы зачастую полезны. В данном мане, все-же, основной упор на DDOS, который может забить канал, либо значительно превысить нормальный юсадж трафика сервером. |
|
|
coolman |
6.7.2015, 10:05
Сообщение
|
|
В первой части как раз и есть логирование. (в этом-же разделе) коннтрэк считает кол. коннектов общее\с ипа, удобно при флуде, да. Но опять-же, сам по себе коннтрек при мощном флуде нихерово так загрузит систему. Обычное логирование не всегда дает всю нужную информацию, поэтому дампы зачастую полезны. В данном мане, все-же, основной упор на DDOS, который может забить канал, либо значительно превысить нормальный юсадж трафика сервером. я имел введу для ограничения новых пакетов использовать hashlimit, а conntrack для количества соединений. |
|
|
Fire |
6.7.2015, 10:13
Сообщение
|
|
я имел введу для ограничения новых пакетов использовать hashlimit, а conntrack для количества соединений. А какое это имеет отношение в ману? То, о чем ты говоришь это защита сервера от школьного флуда, оно даже от hping не всегда спасет. И сам по себе hashlimit немного не то для кс, ибо очень много нюансов. Для него нужна тонкая настройка лимитов под каждый сервер. А данной тузлой, можно кстати и дергать скрипты, которые будут банить наглые ипы, при возрастании юсаджа канала\pps |
|
|
coolman |
7.7.2015, 6:19
Сообщение
|
|
А какое это имеет отношение в ману? То, о чем ты говоришь это защита сервера от школьного флуда, оно даже от hping не всегда спасет. И сам по себе hashlimit немного не то для кс, ибо очень много нюансов. Для него нужна тонкая настройка лимитов под каждый сервер. А данной тузлой, можно кстати и дергать скрипты, которые будут банить наглые ипы, при возрастании юсаджа канала\pps Ну просто я с досом ддосом борюсь именно этими плюшками, без всяких скрипов используя только iptables, превысил лимит? автоматом в бан уходит ip на время которое мне нужно, либо с ограничением к определенным портам либо вообще к серверу, пинг вообще закрыт у меня да опять же теме же командами можно сделать лимит на пинг. Лично я считаю, что iptables достаточно и не для школьного флуда, был бы канал пошире и сетевая посерьезней. |
|
|
Fire |
16.7.2015, 23:06
Сообщение
|
|
Обновление от разработчика, теперь не нужны грабли в виде sh скриптов ;)
Cкрытый текст Цитата [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
Сообщение
|
Цитата После завершения сетапа, на всякий случай выполняем Код 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
Сообщение
|
|
Zod,
Собрать 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
Сообщение
|
спасибо
все пакеты прутся в дроп, в чем может быть проблема? в логах всё ок Цитата 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
Сообщение
|
Дополню
по ридми нужно было добавить сетку белых айпишников в /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
Сообщение
|
|
|