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.
0 Komentarze.