Packet filter i DNSBL

DNSBL (DNS-based Blacklist) czyli lista adresów IP podejrzanych o spamowanie. Listy takie bardzo często są używane przez serwery pocztowe, jako jedna z metod zabezpieczenia się przed spamem. Jest ich dostępnych wiele w internecie, część z nich jest zupełnie darmowa. Ich porównanie można znaleźć np na angielskiej Wikipedii. W podanym niżej przykładzie użyjemy takiej listy w połączeniu z packet filter w systemie OpenBSD.

Pobranie listy

Posłużymy się plikiem udostępnianym na stronie heise.de. Jak można przeczytać lista jest uaktualniana co 15 minut, a w pliku znajduje się 40000 adresów IP. Po 12h dany adres jest automatycznie usuwany z listy, jeśli nie wysyła już spamu. Plik zapiszemy i rozpakujemy w katalogu /tmp:

root@fw-s:~>wget http://www.dnsbl.manitu.net/download/nixspam-ip.dump.gz -O /tmp/spamips_list.gz
root@fw-s:~>gunzip /tmp/spamips_list.gz

Każda linika w pliku składa się z 2 pól: czasu i adresu IP. My potrzebujemy tylko kolumnę nr 2:

root@fw-s:~>cd /tmp && cat spamips_list | cut -d" " -f2 > spamips_list.txt
root@fw-s:~>wc -l /tmp/spamips_list
   40000 /tmp/spamips_list

Konfiguracja packet filter

Tak przygotowany plik można już wrzucić do firewall’a. W tym celu stworzymy nową tablicę spamips_list, która będzie wskazywać na nasz plik. Następnie zablokujemy cały ruch z tych adresów IP na interfejsie WAN dla portów 25, 110, 465 etc.

root@fw-s:~>cat /etc/pf.conf
table <spamips_list> persist file "/tmp/spamips_list.txt" 
block in log quick on $WAN proto tcp from <spamips_list> to any port {25,110,465}

Teraz wystarczy tylko zrestartować pfctl:

root@fw-s:~>pfctl -t spamips_list -T kill && pfctl -f /etc/pf.conf 

Warto jeszcze zobaczyć czy tablica została utworzona i czy jakieś adresy IP zostały już zablokowane:

root@fw-s:~>pfctl -t spamips_list -T show  | wc -l
   39785
root@fw-s:~>pfctl -sr -vv | grep -A2 spamips
@20 block drop in log quick on vr0 inet proto tcp from <spamips_list:33285> to any port = smtp
  [ Evaluations: 2177      Packets: 5         Bytes: 300         States: 0     ]

Tablica spamips_list zawiera 39785 adresów IP (zdublowane adresy są automatyczne usuwane), a nasz firewall zablokował już 5 pakietów na porcie 25 z adresów IP znajdujących się w tablicy. Czyli wszystko gra.
Jako że lista jest aktualizowana co 15 minut, warto napisać skrypt który automatycznie pobiera nowe adresy, a następnie restartuje firewall’a.

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*