Обнаружение атак и последующие действия.

Fire

Участник
Сообщения
13
Реакции
60
Предупрежу сразу, данный мануал не сработает на VDS\VPS с виртуализацией OpenVZ
Мануал рассчитан на Debian 7\8, но отличие от других осей минимальны.

Итак, для обнаружения атак и снятия дампов мы воспользуемся тузлой под названием FastnetMon, разработки моего товарища, Павла Одинцова.
Про саму тузлу можно почитать на хабре:
http://habrahabr.ru/post/259399/
Вкратце, тузла которая использует PF_RING, либо netmap, netflow
Мы будем использовать именно pf_ring как наиболее быстрое и менее ресурсоемкое решение.
Итак, начнем.
Для начала установим gcc и g++ ну и tcpdump
C-подобный:
apt-get install -y gcc g++ tcpdump

Далее, все очень просто, скачиваем скрипт авто-сетапа тузлы и всех либ, так что нам не придется вручную собирать pf_ring как в первых версиях.
Скачиваем установщик:
C-подобный:
wget https://raw.githubusercontent.com/pavel-odintsov/fastnetmon/master/src/fastnetmon_install.pl -Ofastnetmon_install.pl
Запускаем:
C-подобный:
perl fastnetmon_install.pl
Терпеливо ждем завершения.
После завершения сетапа, на всякий случай выполняем
C-подобный:
modprobe pf_ring

Теперь нам нужно поправить конфиг и установить нужные лимиты срабатывания.
Редактируем файл /etc/fastnetmon.conf
Находим и меняем следующие параметры:
C-подобный:
enable_ban = on
mirror = on // включаем работу через pf_ring
Лимиты настраиваем по своему усмотрению, я рекомендую примерно следующие:
C-подобный:
# Limits for Dos/DDoS attacks
threshold_pps = 20000
threshold_mbps = 80
threshold_flows = 3500

# Per protocol attack thresholds
# We don't implement per protocol flow limits, sorry :(
# These limits should be smaller than global pps/mbps limits

threshold_tcp_mbps = 40
threshold_udp_mbps = 50
threshold_icmp_mbps = 10

threshold_tcp_pps = 10000
threshold_udp_pps = 20000
threshold_icmp_pps = 5000

ban_for_tcp_bandwidth = on
ban_for_udp_bandwidth = on
ban_for_icmp_bandwidth = on

ban_for_tcp_pps = on
ban_for_udp_pps = on
ban_for_icmp_pps = on
Так-же включаем создание дампов трафика при атаках и вызов скрипта бана\анбана.
C-подобный:
notify_script_pass_details = on
collect_attack_pcap_dumps = on


Думаю тут всем понятно, что pps - пакетов в секунду, mbps - мбит в секунду.
Запускаем утилиту:
C-подобный:
/opt/fastnetmon/fastnetmon --daemonize

Запускаем клиент и смотрим, все ли в порядке:
C-подобный:
/opt/fastnetmon/fastnetmon_client
Должны увидеть примерно такое:
mc [roottel1]usrsrcfastnetmonsrc (126 kb) закачан 4 июля 2017 г. Joxi

Далее настраиваем call-скрипт, с помощью него мы можем выполнять некие условия, в момент атак, например восстановить конфиг фаервола расчитанный для работу под атаками:
C-подобный:
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

Приводим его к такому виду:
C-подобный:
#!/usr/bin/env bash
# This script will get following params:
#  $1 client_ip_as_string
#  $2 data_direction
#  $3 pps_as_string
#  $4 action (ban or unban)

#email_notify="art.ack@yandex.ru"
time="`date '+%m-%d_%H:%M'`"

if [ "$4" = "unban" ]; then
      /sbin/iptables-restore < /etc/iptables_def.conf
    exit 0
fi


if [ "$4" = "ban" ]; then
        cat > /dev/null
        /sbin/iptables-restore < /etc/iptables_attack.conf
    exit 0
fi

if [ "$4" == "attack_details" ]; then
        cat > /dev/null
    exit 0
fi

Думаю понятно, что при действии бан, мы восстанавливаем конфиг фаервола расчитаный под атаку:
C-подобный:
/sbin/iptables-restore < /etc/iptables_attack.conf
В случае прекращения атаки, восстанавливаем обычный конфиг:
C-подобный:
/sbin/iptables-restore < /etc/iptables_def.conf

При атаках, дампы трафика пишутся в
C-подобный:
/var/log/fastnetmon_attacks

Дальше будет....
 
Сверху Снизу