bezpieczeństwo Weryfikacja nadawcy Weryfikacja nadawcy dylematy administratora Janusz Bielec Wszędobylski spam wymusza na administratorach poszukiwanie różnych metod zabezpieczania serwerów pocztowych przed zalewem niechcianych wiadomości. Nie ma jedynie słusznych metod niektóre metody sprawdzają się znakomicie w pewnych warunkach, w innych zaś ich skuteczność jest zdecydowanie mniejsza. edną z metod możliwych do zastosowania np. w Post- system on freeBSD fiksie jest weryfikacja nadawcy. Pomysł jest zdrowo- ehlo poczta.lsdialog.pl rozsądkowy i ma swoje proste odniesienie do rzeczy- 250-pryncyp.mol.uj.edu.pl J wistości zupełnie niezwiązanej ze światem kompute- 250-PIPELINING rów. Są ludzie, którzy nie znoszą anonimowych listów. Ta- 250-SIZE 8000000 kowe listy bez czytania wyrzucają do kosza i nie cierpią przy 250-VRFY tym żadnych moralnych katuszy. Tak samo bez obciążeń wy- 250-ETRN rzucają listy podpisane życzliwy etc. Człowiek taki nie da 250-AUTH PLAIN LOGIN się też łatwo oszukać, gdy ktoś chce się podszyć pod jego zna- 250 8BITMIME jomych rozpoznaje bowiem styl, charakter pisma, ogólnie mail from: jjb@lsdialog.pl rzecz ujmując, potrafi w jakiś sposób zweryfikować nadaw- 250 Ok cę listu. Oczywiście ta weryfikacja nie jest może profesjonalna, rcpt to: jjb@mol.uj.edu.pl ale jednakowoż istnieje, a to w wielu przypadkach wystarczy. 250 Ok Weryfikacja nadawcy w Postfiksie Na czym polega weryfikacja nadawcy w Postfiksie? Przyj- O autorze rzyjmy się typowej wymianie informacji w sesji SMTP. Janusz Bielec jest trenerem w Compendium Centrum Możemy to zobaczyć, łącząc się programem telnet z por- Edukacyjnym oraz pracownikiem Uczelnianego Ośrodka tem 25 serwera: Komputerowo-Sieciowego Uniwersytetu Jagiellońskiego. Posiada stronę domową o adresie: http://awe.mol.uj. telnet pryncyp.mol.uj.edu.pl 25 edu.pl/~jjb 220 pryncyp.mol.uj.edu.pl ESMTP over Postfix 38 czerwiec 2007 linux@software.com.pl bezpieczeństwo Weryfikacja nadawcy data potwierdzenie, że to akurat on wysłał tę powinien być szybki. Postfix może współ- 354 End data with . przesyłkę, ale możemy przynajmniej spraw- pracować z wieloma bazami danych, żeby Teraz podawany jest tekst wiadomości. dzić, czy taki użytkownik istnieje. się dowiedzieć, jakie mamy możliwości. Wy- Ok: queued as D3E05104FCD W Postfiksie do takich zadań służy pro- starczy wydać polecenie: gram verify. Uruchomiony jako demon w mo- Nieparzyste numery dotyczą klienta, parzy- mencie, kiedy serwer odbierze określony po- postconf -m ste to odpowiedzi serwera. W praktyce klien- leceniem mail from: adres nadawcy, łączy się btree tem będzie najczęściej inny MTA i takich sy- z serwerem nadawcy jako klient chcący prze- cidr tuacji dotyczą dalsze rozważania. słać na adres nadawcy przesyłkę. Oczywiście environ Konfigurując MTA, przyjmuje się zwy- nie wysyła żadnej przesyłki, nawet pustej, hash kle, że każdy może do nas napisać. Podob- chce tylko potwierdzić, że nadawca istnieje mysql nie jak każdy może do nas wysłać list pocz- i można do niego wysłać w tym momencie nis tą. Z tego powodu w typowej konfiguracji przesyłkę. W zależności od zachowania serwe- proxy agent transportu nie poświęca dużo uwagi ra nadawcy Postfix podejmuje decyzje okreś- regexp danym przekazanym w wierszu 5. po pole- lone w konfiguracji, którą omówimy dokład- sdbm ceniu mail from:, skoro w następnym swoim nie nieco dalej. static kroku (wiersz 7.) klient deklaruje, że chce Zasadniczo demon verify mógłby za każ- tcp przekazać przesyłkę do lokalnego użytkow- dym razem sprawdzać istnienie nadawcy unix nika rcpt to: jjb@mol.uj.edu.pl. Teraz po pole- i jego gotowość do przyjęcia przesyłki, ale ceniu data treść informacji powinna dotrzeć to zabiera trochę czasu, innymi słowy nie Widzimy tu, że w tym przypadku można się do odbiorcy. W wielu przypadkach będzie byłoby to zbyt wydajne rozwiązanie. W ta- oprzeć np. na bazie typu hash, btree czy mysql. to spam, który może zostać wychwycony kim razie może lepiej byłoby zbierać takie Załóżmy, że wykorzystamy bazę typu hash, przez analizę treści, ale taka dokładna ana- zweryfikowane informacje i przechowywać chociaż przy mocno obciążonych systemach liza pożera zasoby serwera. je przez pewien czas. Do tego jest potrzeb- wydajniejsza będzie baza btree albo mysql. W tej sytuacji możemy pokusić się o spraw- na jakaś baza danych, która te informacje bę- Teraz przejdzmy do konfiguracji Post- dzenie, czy nadawca listu mógł wysłać prze- dzie przechowywać. Zasadniczo jest to bar- fiksa. Wszelkie zmiany będą wprowadzane syłkę z konkretnego serwera. Nie będzie to dzo prosta tabela, ale dostęp do informacji w pliku main.cf zwykle znajduje się on w /etc/ R E K L A M A www.lpmagazine.org 39 bezpieczeństwo Weryfikacja nadawcy postfix. Powinien się tu znalezć wpis określa- helo=jący rodzaj i położenie pliku z bazą zweryfi- internet.fr> kowanych nadawców, np. dla bazy hash bę- dig -t mx nauka.pl dzie to wpis tego rodzaju: albo: informuje mnie, dokąd wyśle zapytanie mój address_verify_map = pryncyp postfix/smtpd[7141]: serwer przy próbie weryfikacji nadawcy: hash:/var/log/mail/verify NOQUEUE: reject: RCPT from unknown[189.141.1.18]: 450 Ten wpis nie ustanawia jeszcze żadnej restry- t@graphinity.com>: Sender address IN MX 10 mx.nauka.pl. kcji, ustala jedynie, gdzie należy wpisywać rejected: undeliverable address: informację o zweryfikowanych nadawcach host mx1.cribellum.net[198.173. Teraz łączę się telnetem z portem 25. serwera i gdzie jej potem szukać. 211.125] said: 550 unknown user mx.nauka.pl: Narzućmy teraz na nadawcę obowiązek (in reply to weryfikacji: RCPT TO command); from=inity.com> to= Trying 195.149.231.91... smtpd_sender_restrictions = proto=ESMTP helo= Connected to mx.nauka.pl reject_unverified_sender (195.149.231.91). Jeżeli adres nadawcy jest niedoręczalny (un- Escape character is '^]'. Teraz nadawca, który nie będzie gotów przy- deliverable), Postfix odrzuca informację. Ale 220 smtp.h.win.pl ESMTP jąć od nas przesyłki, zostanie odrzucony. Po- początkowo warto śledzić, kiedy system helo pryncyp.mol.uj.edu.pl winniśmy zadeklarować, jak go traktować, podjąłby taką decyzję, nie odrzucając jednak 250 smtp.h.win.pl tzn. jakim kodem odpowiedzieć. 450 w po- informacji. W tym celu należy posłużyć się mail from: jjb@mol.uj.edu.pl niższym przypadku oznacza błąd o charak- poleceniem warn_if_reject. System zapisze w 250 ok terze nietrwałym: dzienniku, że informacja zostałaby odrzuco- rcpt to: mailing@nauka.pl na, ale przyjmie ją do dalszej analizy: 511 sorry, no mailbox here by that unverified_sender_reject_code = 450 name / skrzynka pocztowa odbiorcy smtpd_sender_restrictions = nie istnieje (#5.1.1 vuser) Jeżeli będziemy pewni poprawności dzia- warn_if_reject reject_ łania naszego systemu, możemy ten numer unverified_sender Zapytajmy teraz bazę verify: zmienić na 550. Ale do tego momentu warto przeglądać dzienniki Postfiksa (np. /var/log/ A oto wpis w dzienniku: postmap -q mailing@nauka.pl hash: maillog), obserwując jego zachowanie w kon- /var/log/mail/verify kretnych przypadkach. Będziemy mieli wpi- pryncyp postfix/smtpd[7540]: NOQUEUE: 2:0:1168402483:host mx.nauka.pl sy podobne temu: reject_warning: RCPT from expredir4 [195.149.231.91] said: 511 sorry, .cites.uiuc.edu[128.174.5.187]: 450 no mailbox here by that name / pryncyp postfix/smtp[7116]: : Sender address skrzynka pocztowa odbiorcy nie D1FFE104EB8: to=t>, orig_to=, Address verification in progress; to RCPT TO command) relay=gateway-s.comcast.net[63.240.76 from= .26], delay=12, status=undeliverable to= To jest niestety częsty przypadek jak sobie (host gateway-s.comcast.net[63.240.7 proto=ESMTP helo=6.26] said: 551 not our customer (in uiuc.edu> formacji z tej domeny bez weryfikacji nadaw- reply to RCPT TO command)) cy, ale problem jest dosyć popularny. Wiele Po upewnieniu się, że wszystko działa popraw- list dyskusyjnych, systemów wysyłających in- lub: nie, możemy wpis warn_if_reject wyrzucić. formacje np. o rezerwacjach biletów wpisuje w nazwie nadawcy coś, co ma znaczenie dla ba- pryncyp postfix/smtpd[7132]: NOQUEUE: Typowe problemy zy rezerwacji, ale nie jest weryfikowalnym kon- reject: RCPT from i07v-212-194- Zapisuję się do grupy językowej, aby otrzy- tem. W dodatku na ogół nie są przesyłane żad- 92-142.d4.club-internet.fr[212.19 mywać codzienną dawkę ćwiczeń, a tu infor- ne dodatkowe informacje, że jest to konto typu 4.92.142]: 450 internet.fr>: Sender address rejected: wiadomości i widzę wpis: undeliverable address: host mx.club- Podsumowanie internet.fr[194.158.120.25] said: 550 Message-Id: Moim zdaniem jest to konfiguracja utrudniają- 5.1.1 : <200703260507.l2Q57eii013232@nauka.pl> ca kontrolowanie spamu. Swego czasu przyję- Recipient address rejected: User From: "Nauka.pl" te było, że pewne nazwy w adresach należy unknown in local recipient table łączyć z listami mailowymi, ale teraz wydaje (in reply to RCPT TO command); mi się to mało sensowną zasadą. Po prostu from= to To znaczy, że wysyła to użytkownik mailing z należałoby stworzyć choćby alias dla adre- = proto=ESMTP domeny nauka.pl. su nadawcy. 40 czerwiec 2007