NFsec Logo

Małe lasso na SPAM

29/08/2009 w Bezpieczeństwo 1 komentarz.  (artykuł nr 141, ilość słów: 448)

Lista DROP (ang. Don’t Route Or Peer) projektu Spamhaus jest zbiorem bloków sieciowych, czyli zakresów adresów IP – składających się z komputerów zombie lub sieci w pełni kontrolowanych przez zawodowych spamerów. Lista ta jest dostępna pod postacią prostej listy tekstowej, którą można wykorzystać w własnych zaporach sieciowych czy sprzęcie odpowiedzialnym za routing.

Ze względu na fakt, iż lista ta nigdy nie będzie zawierać przestrzeni adresowej kontrolowanej przez legalnych właścicieli – nawet jeśli została ona im ponownie przyznana od “spamerów z piekła” – z powodzeniem można ją wykorzystać do blokady całego ruchu pochodzącego z bloków sieciowych tej listy. Wykorzystana w ten sposób, w naszej sieci lub głównych routerach naszego ISP powinna chronić naszych użytkowników w bliżej nieokreślonym stopniu przed spamowaniem, zbieraniem adresów e-mail, skanowaniem, czy atakami DDoS.

Najprostszą implementacją listy DROP w naszym hoście jest użycie narzędzia curl (ang. transfer a URL) w połączeniu z iptables:

curl -s http://www.spamhaus.org/drop/drop.lasso | grep ^[1-9]|cut -f 1 -d ' ' | xargs -iX -n 1 iptables -A INPUT -s X -i eth0 -j DROP

W systemie oczywiście musi być zainstalowane narzędzie curl (pakiet o tej samej nazwie) oraz xargs (pakiet findutils). Interfejs eth0 jest interfejsem zewnętrznym. Jeśli pragniemy odświeżać wpisy z listy, co jakiś czas (serwis Spamhaus prosi by lista nie była uaktualniana więcej razy niż jeden na godzinę) – najlepiej stworzyć osobny łańcuch (iptables -N SPAM), do którego będą wpisywane i uaktualniane wpisy z listy:

#!/bin/sh

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

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

if [ $CHAIN -eq "0" ]; then
    echo "Łańcuch SPAMHAUS nie istnieje."
    $IPT -N SPAM
    $IPT -I INPUT -j SPAM
    curl -s http://www.spamhaus.org/drop/drop.lasso | grep ^[1-9] | cut -f 1 -d ' ' | xargs -iX -n 1 iptables -A SPAM -s X -i wlan0 -j DROP
else
    echo "Łańcuch SPAMHAUS istnieje."
    $IPT -F SPAM
    curl -s http://www.spamhaus.org/drop/drop.lasso | grep ^[1-9] | cut -f 1 -d ' ' | xargs -iX -n 1 iptables -A SPAM -s X -i wlan0 -j DROP
fi

rm $FILE

exit 0

Tak prosty skrypt możemy umieścić np. w katalogu /etc/cron.daily/, aby nasze wpisy były aktualizowane raz na dzień. Jeśli nasz serwer pełni rolę routera / bramy wówczas należy łańcuch dla pakietów przychodzących zamienić na łańcuch dla pakietów przechodzących pomiędzy interfejsami:

xargs -iX -n 1 iptables -A FORWARD -s X -d 192.168.0.0/24 -j DROP

Gdzie 192.168.0.0/24 jest adresem sieci lokalnej w zapisie CIDR, którą obsługuje nasz router. Na stronie projektu Spamhaus możemy również znaleźć narzędzia do obsługi routerów CISCO oraz zapory ipfw dla systemu FreeBSD.

Więcej informacji: Spamhaus DROP Advisory Null List

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

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

1 komentarz.

  1. Jeśli pragniemy uruchomić DUŻE lasso na spam to serwis NiX Spam DNSBL udostępnia listę około 40 tysięcy wpisów adresów IP spamerów. Filtry NiX wychwytują około 200’ście tysięcy wiadomości spam / na godzinę. Lista aktualizowana jest mniej więcej, co 15 minut. Jeśli chcemy ją zaimplementować do iptables wystarczy zrobić to poprzez linijkę:

    curl -s http://www.heise.de/ix/nixspam/nixspam.blackmatches | grep ^[1-9] | cut -f 2 -d ‘ ‘ | dos2unix | awk ‘{$1=$1;OFS=””}1’ | xargs -iX -n 1 iptables -A spamhaus -i eth0 -p tcp -s X -j DROP

    Jednak ładowanie tak dużej liczby wpisów do tablic ip może zając dużo więcej czasu niż 15 minut, dlatego najlepiej skorzystać z serwera DNSBL – ix.dnsbl.manitu.net, ale ten musi zostać już zaimplementowany w samym MTA.