spam

…gdy wszyscy się na Ciebie czają.

parę tygodni temu odświeżyłem FreeBSD na którym stoi mój prywatny serwer pocztowy. od pewnego czasu ilość spamu po prostu rosła. stary spamassassin nieco nie dawał już sobie rady z poprawnym markowaniem.

enter spamd z projektu OpenBSD.

uaktualniony postfix ma wbudowany serwer realizujący greylisting działający dosyć dobrze. osobiście delikatnie go dopasowałem zwiększając znacznie czas, który musi upłynąć od ostatniej próby dostarczenia maila (1200 sekund, czyli 20 minut):

# w /etc/rc.conf:
postgrey_enable="YES"
postgrey_flags="--inet=10023 --delay=1200 --greylist-action=451 --x-greylist-header='X-Greylist: delayed %t seconds by postgrey-%v at %h; %d' --auto-whitelist-clients --lookup-by-subnet --greylist-text='4.7.1 Greylisted' --whitelist-clients=/usr/local/etc/postfix/postgrey_whitelist_clients"

dzięki temu o ile sam greylisting mamy załatwiony, możemy skupić się na uprzykrzeniu życia spamerom. spamd z projektu OpenBSD potrafi pracować w trybie blacklistingu - tj. każde skierowane do niego połączenie traktować będzie jako niereformalnego spamera i wykonywać tarpitting - reagować prawie jak prawdziwy serwer pocztowy ale w tempie jednego znaku na sekundę. oczywiście w końcu tak wymęczony nadawca jest odrzucany - co szczególnie boli tych spamerów, którzy nie zwracają uwagi na komunikaty zwrotne i starają się na siłe dostarczyć pocztę.

skąd wziąć takie adresy, skoro w tym trybie połączenie trafiające do spamd zostanie od razu poddane torturom przedłużonej agonii? używać traplist - specjalnie spreparowanych adresów, które nie są prawdziwe, a zostały umieszczone np. w komentarzach strony lub innych miejscach, których na pewno nie zebrałby prawdziwy, sensowny nadawca. ja mam ciągle rosnącą listę takich adresów, co pozwala mi z logów pocztowych wyłuskiwać wszystkie połączenia próbujące dostarczyć na te adresy cokolwiek - i mamy spamera złapanego na gorącym uczynku.

o ile część z adresów trafiających do mnie jest wynikiem właśnie takiego bezmyślnego przetwarzania przez skrypty, zdarzają się zlepki kierowane po prostu ’na domenę’ - w nadziei złapania się na konta typu ‘złap wszystko’. z czasem (dzięki przeglądaniu logów z serwera) takich adresów, które wiadomo, że są niewłaściwe przybywa - a dzięki temu skuteczność naszego filtra. i o ile te adresy są moimi spamtrapami:

us2@bromirski.net
it-admin@null0.pl
arek@bromirski.net
dobry.jozek@bromirski.net
jutro.bedzie.futro@bromirski.net

…o tyle te adresy dopisałem z czasem:

passw0rd@null0.pl
christop@null0.pl
scotty@null0.pl

lista zawiera dzisiaj 26 adresów i rośnie w tempie 1-2 miesięcznie.

opcje startowe dla obspamd:

# w /etc/rc.conf:
obspamd_enable="yes"
obspamd_flags="-b -l 127.0.0.1 -s 3 -v -n Postfix"
obspamlogd_enable="yes"

oczywiście ruch do spamd należy jeszcze przekierować. dla używanego przeze mnie pf:

# w /etc/pf.conf:
rdr on $ext_if inet proto tcp from { spamd, spamd-local } \
 to $ext_if port { smtp, 465, 587 } -> lo0 port spamd

pozostaje zbudować sobie skrypt, który na bieżąco lub co jakiś czas przejrzy /var/log/maillog i wszystkich próbujących wysyłać maile na adresy-pułapki doda do jednej z powyższych tabel. mój dopisuje codziennie ok. 4-5 nowych adresów IP, choć zdarzają się dni w które ruszają nowe kampanie spamowe, a wtedy dopisywanych jest po 30-40 adresów. obecnie tablice te zawierają u mnie odpowiednio:

# pfctl -t spamd -T show | wc -l
    3063
# pfctl -t spamd-local -T show | wc -l
    1087

…unikalnych IP.

jeśli zrobi się to dobrze, spamerzy zaczną cierpieć. sesje dla najbardziej zatwardziałych wiszą po 18 minut (choć zdarzają się lepsze wyniki) - zrzut z /var/log/spamd.log:

91.207.211.227: 1085 seconds.
14.177.85.0: 1085 seconds.
14.177.78.51: 1085 seconds.
91.207.211.227: 1082 seconds.
91.207.211.227: 1082 seconds.
91.207.211.227: 1080 seconds.
189.216.86.7: 1080 seconds.
199.59.150.86: 1079 seconds.
91.207.211.227: 1078 seconds.
199.59.150.86: 1074 seconds.
14.177.11.20: 992 seconds.
103.255.5.117: 981 seconds.
212.237.47.252: 595 seconds.
80.82.64.73: 543 seconds.
183.131.162.73: 400 seconds.
24.222.21.82: 219 seconds.
24.222.21.82: 217 seconds.
24.222.21.82: 217 seconds.
24.222.21.82: 216 seconds.
24.222.21.82: 215 seconds.
24.222.21.82: 215 seconds.
14.236.29.71: 34 seconds.
14.231.160.197: 34 seconds.
114.104.157.150: 16 seconds.
114.104.157.150: 14 seconds.
114.104.157.150: 14 seconds.
114.104.157.150: 14 seconds.
114.104.157.150: 14 seconds.
114.104.157.150: 13 seconds.
114.104.157.150: 13 seconds.
114.104.157.150: 13 seconds.
114.104.157.150: 13 seconds.

...i tak dalej

miłego uprzykrzania.