vermin.eu.org

Specjalista IT na tru^Hopie

Entries Comments



walczymy ze spamem - postfix, spamassasin, clamav i amavisd-new

24 September, 2006 (12:00) | bezpieczeństwo, debian(ized), poczta | By: vermin

W ramach walki ze spamem przeszliśmy już przez MUA oraz wstępnie zabezpieczyliśmy MTA. Wstępnie, ponieważ nadal ktoś może podszyć się pod domenę z whitelisty a także nie wszędzie możemy zastosować greylisting. W tej sytuacji wyposażymy naszego postfixa w kolejne narzędzia.

Dwoma chyba najpopularniejszymi pakietami do walki ze spamem oraz wirusami są spamassassin oraz clamav. Ponieważ są to pakiety zewnętrzne, do integracji ich z postfixem użyjemy pośrednika - amavisd-new. Po instalacji odpowiednich pakietów, czyli standardowym aptitude install amavisd-new spamassassin clamav clamav-daemon clamav-freshclam otrzymujemy działające środowisko. Teraz musimy tylko poinstruować amavisa i postfixa jak z niego korzystać.

Po pierwsze musimy zająć się kilkoma opcjami w /etc/amavis/amavisd.conf. Ustawiamy zmienną $mydomain na własną domenę, oraz zaznaczamy jako komentarz (#) linie @bypass_spam_checks_acl = qw( . ); oraz @bypass_virus_checks_acl = qw( . );. Musimy jeszcz ustawić właściwy filtr antywirusowy w sekcji VII pliku konfiguracyjnego - odznaczamy komentarze przy clamav, komentujemy wszystkie pozostałe - oczywiście jeśli posiadamy drugi silnik antywirusowy warto go zaznaczyć, ponieważ amavis może wykorzystywać kilka silników jednocześnie.
Będąc w sekcji VII warto także zwrócić uwagę na listę programów archiwizujących (gzip bzip2 lzop uncompress unfreeze arc unarj unrar zoo lha cpio) - jeśli zainstalujemy te wszystkie pakiety będziemy mogli dokonywać skanów także na skompresowanych plikach.
Zanim przejdziemy do konfiguracji postfixa warto jeszcze uruchomić vigr i dodać użytkownika clamav do grupy amavis - ponieważ inaczej niestety clamav nie będzie mógł właściwie wykonywać swojej pracy.

Ok - teraz zostało już tylko(!) skonfigurowanie Postfixa. Otwieramy do edycji plik /etc/postfix/main.cf i dodajemy linię

content_filter = amavis:[127.0.0.1]:10024

. W ten sposób dodaliśmy konieczność odpytywania o amavisa, który domyślnie słucha na porcie 10024 interfejsu lokalnego. Amavis dla odmiany po wykonaniu swojej pracy będzie chciał zwrócić informacje na port 10025. Musimy wobec tego uruchomić kolejną instancję postfixa słuchającą na tym porcie, która oczywiście już nie będzie przechodzić przez filtry. W tym celu dodajemy do /etc/postfix/master.cf następujące linie

smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes

127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000

Restart postfixa (/etc/init.d/postfix restart) i juź netstat -tlpn powinien nam pokazać nowego postfixa na porcie 10025… i działające rozwiązanie.

Warto zauważyć, że dzięki temu rozwiązaniu spam można filtrować na dwa sposoby - albo dodawać linijkę tematu/odpowiedni header, albo zatrzymywać przesyłkę na serwerze i wysyłać do użytkownika wiadomość, że taka akcja została podjęta i żeby się ewentualnie zgłosił po przesyłkę.

Z zastosowanym rozwiązaniem mam dwa problemy - pierwszym z nim są timeouty, gdy maszyna jest obciążona i wszystkie testy nie zdążą się wykonać - pomaga ustawienie opcji timeout (ale bez przesady - bo się sesja TCP skończy!).
Drugim problemem ulepszanie działania filtru spamassasina poprzez możliwość jego uczenia. Nie znalazłem wciąż rozwiązania pozwalającego łatwo, spod outlooka, tworzenia whitelist oraz zaznaczania, że dana wiadomość to jednak nie spam… Może ktoś coś takiego widział?

Write a comment