Скрипт от DDOS

Приведу пример простого скрипта против DDOS атак для NAT серверов.
Скрипт выполняется когда общее число «conntrack» соединений больше 500000, сохраняет в текстовый файл IP-адреcа у которых больше всего «conntrack» соединений, у кого больше 10000 — добавляет в ipset список.

Содержимое скрипта:

#!/bin/bash

count=`cat /proc/sys/net/netfilter/nf_conntrack_count`

if (($count > 500000));
then
    /usr/sbin/conntrack -L | awk '{if ($5 ~ /src/) print $5; else if ($4 ~ /src/) print $4}' | sed "s/src=/ /g" | sort | uniq -c | sort -n | tail -n10 > /var/log/ddos.log

    tracks=($(awk '{print $1}' /var/log/ddos.log))
    ips=($(awk '{print $2}' /var/log/ddos.log))
    for i in seq 0 9;
    do
        if ((${tracks[$i]} > 10000));
        then
         /sbin/ipset -A ddos ${ips[$i]}
        fi
    done
fi
exit 0

Соответственно должен быть создан ipset список, например с таймаутом 10 минут по истечении которых IP адрес автоматически удалится из списка.

/sbin/ipset -N ddos iphash timeout 600

Ну и запретим FORWARD всем кто в ipset списке:

/sbin/iptables -A FORWARD -m set --match-set ddos src -j DROP

Смотрите также мою статью:
Как обнаружить DDOS атаки

Did my article help you? How about buying me a cup of coffee as an encouragement? Buy me a coffe.

Оставьте комментарий

Добавить комментарий