NFsec Logo

Blokujemy najczęstsze źródła ataków według ISC SANS

20/01/2011 w Bezpieczeństwo 1 komentarz.  (artykuł nr 301, ilość słów: 487)

I

ternet Strom Center (ISC) jest programem Technologicznego Instytutu SANS (skrót od: SysAdmin, Audit, Networking, and Security), który ma za zadanie monitorowanie poziomu szkodliwych aktywności w Internecie – zwłaszcza w odniesieniu do zdarzeń mających miejsce w dużych infrastrukturach (poziom zagrożenia sygnalizowany jest odpowiednimi kolorami – zielony, żółty, pomarańczowy, czerwony).

Obecnie ISC gromadzi i analizuje miliony wpisów pochodzących z logów systemów obejmujących około pół miliona adresów IP w ponad 50 krajach. Codziennie tysiące czujników, działających na większości zapór ogniowych, systemów wykrywania włamań, urządzeniach dostępu do Internetu i programach niemal wszystkich systemów operacyjnych gromadzi informacje o niepożądanym ruchu z Internetu. Systemy te karmią bazę danych DShield, z której zarówno wolontariusze jak i zautomatyzowane maszyny szukają powtarzających się trendów w atakach oraz zaburzeń normalnego funkcjonowania sieci, systemów i aplikacji. Wyniki tych analiz wysyłane są na główną stronę ISC, gdzie można pobierać je za pomocą prostych skryptów lub oglądać niemal w czasie rzeczywistym.

Dzięki bezpłatnej działalności tej organizacji dla społeczności internetowej – znacznie szybciej możemy określić miejsca, które są wykorzystywane do ataków oraz otrzymać wiarygodne informacje na temat ich typów. Najbardziej znaną funkcją serwisu ISC jest dziennik “Handler Diary” redagowany przez jednego z około 40 ochotników, który podsumowuje wydarzenie dnia. Bardzo często jest on pierwszym publicznym źródłem informującym o nowym trendzie i formie ataku. Oprócz dziennika ISC udostępnia również takie raporty jak: najczęstsze cele ataków (w postaci portów aplikacji) oraz ich źródła (w postaci adresów IP). Poniżej znajduje się trochę przerobiony skrypt autorstwa Alessio Rocchi, który pobiera dane z raportu o źródłach ataku oraz blokuje je przy użyciu iptables na zaporze systemu:

#!/bin/sh

IPT="/usr/sbin/iptables"
IPTS="/usr/sbin/iptables-save"
FILE="/tmp/firewall.txt"

function isclist {
wget http://isc.sans.org/sources.html -O /tmp/sources.html --quiet
if [ $? -ne 0 ]
then
        echo "Błąd pobierania pliku."
        exit 1
fi
for bad_guy in $(grep ipinfo /tmp/sources.html |sed -e "s/.*ip\=\(.*\)\">.*/\1/g" | sed -e 's/^[0]*//' -e 's/\.[0]*/\./g')
do
        $IPT -A ISC -s $bad_guy -j DROP
done
rm /tmp/sources.html*
}

$IPTS > $FILE
CHAIN=`cat $FILE | grep ISC | wc -l`

if [ $CHAIN -eq "0" ]; then
    echo "Łańcuch ISC nie istnieje."
    $IPT -N ISC
    $IPT -I INPUT -j ISC
    isclist
else
    echo "Łańcuch ISC istnieje."
    $IPT -F ISC
    isclist
fi

rm $FILE
exit 0

Jeśli interesuje nas dłuższa lista źródłowych adresów IP – to możemy wykorzystać link generujący ją w formacie ASCII. W tym przypadku należy odpowiednio przebudować skrypt w miejscu pobierania i parsowania danych. Podobnie jak w przypadku wpisów z serwisu Spamhaus – tak prosty skrypt możemy umieścić np. w katalogu /etc/cron.daily/, aby nasze wpisy były aktualizowane raz na dzień.

Więcej informacji: Blokowanie skanera w00tw00t, Internet Strom Center

Kategorie K a t e g o r i e : Bezpieczeństwo

Tagi T a g i : , , , , , ,

1 komentarz.

  1. Ze względu na możliwość przejścia na API powyższy skrypt może mieć następującą postać:

    #!/bin/sh
    
    IPT="/sbin/iptables"
    IPTS="/sbin/iptables-save"
    FILE="/tmp/isc_rules.txt"
    DATE=`date +%Y-%m-%d`
    
    function isclist {
      wget https://isc.sans.edu/api/sources/attacks/1000/$DATE -O /tmp/sources.xml --quiet
    if [ $? -ne 0 ]
    then
            # echo "Błąd pobierania pliku."
            exit 1
    fi
    for bad_guy in $(grep -oP '(?< =).*?(?=)' /tmp/sources.xml | sed -r 's/^0*([0-9]+)\.0*([0-9]+)\.0*([0-9]+)\.0*([0-9]+)$/\1.\2.\3.\4/')
    do
            $IPT -A ISC -s $bad_guy -j DROP
    done
    rm /tmp/sources.xml*
    }
    
    $IPTS > $FILE
    CHAIN=`cat $FILE | grep ISC | wc -l`
    
    if [ $CHAIN -eq "0" ]; then
        # echo "Łańcuch ISC nie istnieje."
        $IPT -N ISC
        $IPT -I INPUT -j ISC
        isclist
    else
        # echo "Łańcuch ISC istnieje."
        $IPT -F ISC
        isclist
    fi
    
    rm $FILE
    exit 0