Obrona przed spamem w systemie Linux


Dwa tryby pracy

Obrona przed spamem w systemie Linux

Automatycznie - już podczas kompilacji SpamAssassin dopasowuje szablony, których będzie potem używać.

SpamAssassin stosuje dwie metody do kontroli nadchodzących wiadomości. Pierwsza to wywołanie SpamAssassin dla każdej przychodzącej wiadomości, druga to ciągła praca w tle jako demon, któremu program pomocniczy dostarcza przeznaczone do kontroli wiadomości. Ta druga wersja to zarazem znacznie szybsze przetwarzanie wiadomości. Jej wada polega na tym, że reguły filtrowania i reguły filtra Bayes'a można zdefiniować tylko globalnie. W większości przypadków wada ta nie jest jednak zbyt uciążliwa, jako że większość użytkowników jest i tak zbyt leniwa, by przetestować filtr Bayes'a, czy też tworzyć własne reguły filtrowania. Wersja demona posiada także tę zaletę, że z pracy bardziej zaawansowanych użytkowników korzystają również i pozostali. Wybór pracy jako demon wydaje się więc być najwłaściwszy. Aby po instalacji rpm demon ładował się automatycznie podczas startu komputera, posłużymy się programem chkconfig.

chkconfig spamd 35

umieszcza SpamAssassin na poziomach uruchomieniowych 3 i 5.

Jeżeli pobrałeś program przez CPAN, potrzebujesz na początek skryptu startowego. Zamiast pisać go własnoręcznie lub przekształcać metodą prób i błędów, kopiowania z innego skryptu, możesz skorzystać z dużo wygodniejszego rozwiązania - w pakiecie CPAN SpamAssassin znajdują się gotowe skrypty do Red Hat, Slackware, NetBSD i Solaris. Moduł CPAN jest na tyle przyjazny, że po instalacji nie usuwa wykorzystanych pakietów, lecz zapisuje je w folderze pamięci podręcznej. Pozostaje zatem tylko wydobyć go z archiwum:

tar -xzvf ~/.cpan/sources/authors/id/F/FE/FELICITY/Mail-SpamAssassin-3.0.2/ Mail-SpamAssassin-3.0.2/spamd/*.sh

skopiować z właściwą nazwą do folderu /etc/init.d i wpisać do odpowiednich poziomów uruchomieniowych.

Podstawowa konfiguracja

Od tego momentu wszystko znów działa z SUSE 9.2 Choć można wykorzystać SpamAssassin do filtrowania wiadomości pojedynczego klienta poczty, to jednak jego najczęstsze wykorzystanie polega na współpracy z serwerem poczty. Niezbędne do tego ustawienia robocze demon pobiera z pliku /etc/mail/spamassassin/local.cf.

Plik ten jest tworzony automatycznie podczas instalacji, nie zawiera jednak żadnych poleceń, przez co SpamAssassin pracuje w konfiguracji domyślnej. Nie wystarcza to oczywiście do pracy w roli demona całego systemu, należy dopisać przynajmniej kilka parametrów. Obejmują one przede wszystkim funkcje w rodzaju Auto-Whitelist i filtr Bayes'a. Obie funkcje korzystają z plików baz danych, które trzeba najpierw utworzyć, na przykład w drzewie katalogów poniżej /var.

mkdir -p /var/cache/spam/awl

mkdir -p /var/cache/spam/bayes

Auto-Whitelist

Nazwa Auto-Whitelist nie najlepiej oddaje możliwości funkcji. Jej działanie lepiej opisywałaby nazwa Auto-White/Blacklist. Funkcja ta zapamiętuje dla wiadomości każdego nadawcy jej wartość w kategoriach spamu, tworzy ze wszystkich dostępnych informacji wartość średnią, a następnie dla wszystkich kolejnych wiadomości dopasowuje opisaną wartość spamu.

Przykład: od pewnego nadawcy przychodzą dwie wiadomości, przy czym SpamAssassin dla pierwszej z nich wylicza wartość 20, a dla drugiej - wartość 2. Funkcja Auto-Whitelist dopasowuje wartość dla drugiej wiadomości do 11. Działa to oczywiście również i w drugą stronę. Dla nadawcy, który nadesłał wiele wiadomości, ale żadnego spamu, następuje w pewnej chwili korekta wartości w dół.

Funkcja Auto-Whitelist jest domyślnie włączona, ale SpamAssassin musi wiedzieć, gdzie ma przechowywać zbiór danych. W tym celu plik /etc/mail/spamassassin/local.cf należy rozszerzyć o odpowiedni parametr (Listing 1).

Jak widać powyżej, warto wpisać do konfiguracji również parametr aktywacji funkcji Auto-Whitelist. Po pierwsze, od razu widać, które funkcje są wykorzystywane, po drugie, w razie potrzeby pewne funkcje można szybko wyłączyć, bez potrzeby szukania wartości domyślnych w dokumentacji.

Filtr Bayes'a

Obrona przed spamem w systemie Linux

Gotowe - po zakończeniu kompilacji SpamAssassin jest gotowy do pracy.

W ostatnich miesiącach rozpowszechniła się wśród producentów rozwiązań antyspamowych moda na stosowanie tzw. naiwnego filtru Bayes'a. Bada on względną częstotliwość występowania określonych słów kluczowych (tokenów), by zaklasyfikować wiadomość jako spam lub nie-spam. Podobnie jak Auto-Whitelist korzysta on z bazy danych, do której ścieżkę dostępu trzeba mu dostarczyć (Listing 2).

Ostatni parametr informuje SpamAssassin, że filtr Bayes'a ma automatycznie uczyć się nowych reguł filtra. To ma sens, w przypadku współpracy z serwerem pocztowym, bo wówczas zadanie przetwarzania reguł przejmuje SpamAssassin. Ze względów bezpieczeństwa do treningu wykorzystywane są tylko wiadomości o bardzo niskiej lub bardzo wysokiej wartości w kategoriach spamu.

Filtr języków obcych

Wielu użytkowników może rozpoznać spam już na pierwszy rzut oka - wiadomość jest napisana w języku, którego normalnie nie używają. Kto współpracuje wyłącznie z polskojęzycznymi kontrahentami, z reguły nie otrzymuje poczty w języku hiszpańskim czy portugalskim. Korzysta z tego SpamAssassin i zezwala na pewne języki w treści wiadomości, a pewne odrzuca. Do konfiguracji wystarczą dwa parametry:

ok_languages pl en

ok_locales pl

Przy takich ustawieniach polski i angielski są używanymi językami (dozwolonymi), zaś wszystkie inne to kandydaci do kategorii spamu. Parametr ok_locales to tylko doprecyzowanie. Określa on zastosowany zestaw znaków. Ponieważ wszystkie języki zachodnie korzystają z ISO-8859-1 - znanego też jako Latin-1 - oznaczenie en odnosi się do wszystkich języków zachodnich.

Ograniczenia językowe należy jednak wprowadzać z najwyższą ostrożnością. W końcu nie zawsze wiadomo, z jakimi partnerami i w jakich językach kontaktują się inni użytkownicy serwera pocztowego. Może szybko pojawić się, jeżeli z powodu zbytnio zawężonego filtra językowego jakaś ważna wiadomość nie dotrze do odbiorcy.

Listing 1

use_auto_whitelist 1

auto_whitelist_path /var/cache/spam/awl/

Listing 2

use_bayes 1

bayes_path /var/cache/spam/bayes/

bayes_auto_learn 1