Wykryj spamerów na moim serwerze


12

Niedawno dostałem jeden Undelivered Mail Returned to Senderpodczas wysyłania mojego biuletynu do jednego z moich 1500 klientów. Moja witryna korzysta z procedury podwójnego wyboru, aby upewnić się, że użytkownik wyraźnie chce otrzymywać mój biuletyn.

Komunikat o błędzie:

smtp; 554 ...
    Swisscom AG IP: 94.130.34.42, You are not allowed to send us mail. Please
    refer to xyz.com if you feel this is in error.

Dostałem przykładowy spam (od dostawcy poczty odbierającego serwera poczty):

Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100
From: "Servizi online - Poste Italiane" <posteitaliane@test123.it>
Subject: Abbiamo ricevuto una segnalazione di accredito
Date: Mon, 12 Feb 2018 11:32:03 -0500

Dostawca stwierdził również, że mój serwer wydaje się być zhakowany. Stwierdził ponadto, że „serwer poczty odbiorcy po prostu zarejestrował rDNS przedstawiony mu przez połączenie IP, w tym przypadku mail.com ([94.130.34.42])” - co zdecydowanie NIE jest, ponieważ skonfigurowałem mój wpis rDNS (mail.lotsearch.de) dla mojego adresu IP. Więc jeśli dobrze zrozumiałem rDNS, serwer poczty odbierającej wysyła zapytanie do adresu IP nadawcy o wpis rDNS (94.130.34.42 => powinien rozstrzygnąć na => mail.lotsearch.de, co zdecydowanie robi, kiedy testuję go z mojego komputera lokalnego za pośrednictwem $ host 94.130.34.42).

Jak można sfałszować rDNS? Nie mogę sobie wyobrazić, jak to technicznie może działać (tylko z atakiem man-in-the-middle gdzieś w infrastrukturze między odbierającym serwerem pocztowym a moim serwerem).

Dostawca wspomniał również, że „prawdopodobne jest, że komputer łączący się z mojego adresu IP został przejęty i wysyłał te wiadomości przez bezpośrednie połączenia do serwera poczty odbiorcy (zwanego również bezpośrednim MX)”. Co direct MXznaczy Ktoś ukradł lub znalazł wyciek poświadczeń poczty na jednym z moich kont pocztowych i użył ich do wysyłania poczty?

Co zrobiłem do tej pory, aby upewnić się, że mój serwer NIE jest / nie zostanie zhakowany:

  • przeszukiwał mail logs ( var/log/mail*): nic specjalnego
  • sprawdziłem logi logowania ssh ( last, lastb): nic niezwykłego
  • sprawdzane, czy postfix przekazuje: nie, nie (sprawdzane przez telnet)
  • sprawdzone pod kątem złośliwego oprogramowania za pośrednictwem clamav: brak wyników
  • zainstalowane i skonfigurowane fail2ban dla ssh, postfix i dovecot
  • zainstalowałem najnowsze łatki / aktualizacje dla Ubuntu 16.04 (robię to co tydzień)
  • sprawdzone, czy mój adres IP znajduje się na czarnej liście: nie ma go
  • zweryfikowany wpis rDNS w konsoli zarządzania mojego dostawcy hostingu: jest poprawnie ustawiony na mail.lotsearch.de.
  • zmienione hasła do wszystkich kont pocztowych
  • zmieniono klucze publiczne dostępu do powłoki

Ważniejsze: posteitaliane@test123.itw dziennikach nie było żadnych informacji . Więc jeśli mój serwer zostałby niewłaściwie wykorzystany przez spamera (np. Z powodu wycieku poświadczeń smtp jednego z kont pocztowych), zobaczyłbym to w plikach dziennika.

Ostatnią możliwością, o której mogę pomyśleć, jest to, że intruz umieścił złośliwe oprogramowanie na moim serwerze, którego jeszcze nie znalazłem.

Jak mogę monitorować ruch poczty wychodzącej (według procesu i portu)?

Tylko monitorowanie portu wychodzącego 25 nie pomogłoby, ponieważ zatrzymałoby to tylko nieregularne wiadomości e-mail wysyłane za pomocą Postfiksa, ale nie ruch pocztowy spowodowany potencjalnym zainfekowaniem złośliwym oprogramowaniem (jeśli szkodliwe oprogramowanie używa innego portu niż 25 do bezpośredniego wysyłania wiadomości e-mail / komunikacji z serwerami pocztowymi adresatów) . Jeśli monitoruję ruch wychodzący na wszystkich portach, dostanę się do ogromnego pliku dziennika, którego nie będę w stanie skutecznie wyszukać podejrzanej aktywności.

EDYCJA - Dodano test dla otwartego przekaźnika:

$ telnet mail.lotsearch.de 25
$ HELO test@test.de
250 mail.lotsearch.de
$ MAIL FROM: test@test.com
250 2.1.0 Ok
$ RCPT TO:<realEmail@gmail.com>
454 4.7.1 <realEmail@gmail.com>: Relay access denied

EDYCJA - Uruchamianie aplikacji internetowych


„Jeśli monitoruję ruch wychodzący na wszystkich portach” ... Dlaczego? Jaki inny ruch wysyła ten serwer pocztowy? Czy na pewno nie skonfigurowałeś otwartego przekaźnika? I nikt z dostępem do wysyłania poczty na serwerze nie ujawnił poświadczeń?
Daniel Widrick

@DanielWidrick Serwer pocztowy jest również używany jako serwer WWW, więc możliwy jest także ruch na poziomie 443 i 80. Myślałem o złośliwym oprogramowaniu umieszczonym na moim serwerze komunikującym się bezpośrednio z zewnętrznymi serwerami pocztowymi (nie za pośrednictwem domyślnej poprawki serwera pocztowego). O otwartym przekaźniku: Zredagowałem swoje pytanie, sprawdzając, czy nie ma otwartego przekaźnika. Trudno odpowiedzieć na twoje ostatnie pytanie, ponieważ nie wiem o „zdrowiu” komputerów moich klientów (gdzie są skonfigurowane konta pocztowe mojego serwera) lub jeśli zainfekowali je złośliwym oprogramowaniem / keyloggerem, który uzyskał poświadczenia itp.
mfuesslin

Dysk jest tani. W twojej sytuacji uzasadnione jest przechowywanie dzienników o wartości rocznej. Rozważ użycie syslog itp., Aby wysłać je bezpośrednio z serwera.
Criggie

Odpowiedzi:


13

Zanim przejdę do mojej sugestii, chcę skomentować coś, co powiedział ci twój dostawca:

 Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100

Nie oznacza to , że zwrotny DNS dla 94.130.34.42 to (lub był) mail.com. Wskazuje raczej, że klient SMTP wysłał mail.comswój HELO(lub EHLO) wiersz. (Dobrze skonfigurowany serwer pocztowy całkowicie odrzuciłby to połączenie, ale dotyczy to Swisscom, nie ty ...) Ta linia nie wskazuje żadnego odwrotnego wpisu DNS. Gdyby tak było, pojawiłby się w nawiasach. Na przykład:

Received: from mail-io0-f197.google.com (mail-io0-f197.google.com [209.85.223.197])

W takim przypadku pierwsza nazwa hosta jest identyfikowana przez serwer pocztowy EHLO. Druga nazwa hosta to odwrotny DNS zarejestrowany podczas nawiązywania połączenia.

RFC 5321 sekcja 4.4 wyjaśnia format linii Received: z formalną gramatyką.

W twoim przypadku nie zarejestrowano odwrotnego DNS. Ponieważ twój adres IP ma rekord PTR, może to być spowodowane tym, że nie sprawdzili go lub wystąpiła tymczasowa awaria DNS.


Teraz wydaje się, że prowadzisz usługę hostingową i masz wiele aplikacji internetowych. Jeśli jeden z nich zostanie naruszony, może zacząć wysyłać spam. Często nawiązują bezpośrednie połączenia ze zdalnymi serwerami poczty, wyszukując ich rekordy MX i łącząc się z portem 25, tak jakby to był sam serwer pocztowy, zamiast dostarczać pocztę do lokalnej szpuli poczty lub uwierzytelnionej usługi pocztowej na portach 587 lub 465 tak jak legalne aplikacje internetowe.

Jednym ze sposobów, aby to zatrzymać, jest wdrożenie reguły zapory ogniowej, która zapobiega wychodzącym połączeniom na porcie 25, chyba że użytkownik jest użytkownikiem serwera pocztowego. Na przykład:

iptables -I OUTPUT -m owner ! --uid-owner postfix -m tcp -p tcp --dport 25 -j REJECT

Aplikacje internetowe nie mogą już dostarczać poczty bezpośrednio do zdalnych serwerów SMTP, ale muszą korzystać z lokalnego bufora poczty lub uwierzytelnionej usługi pocztowej.


Dziękuję za Twoją odpowiedź. W jaki sposób muszę określić iptablesregułę, aby umożliwić użytkownikom postfix i plesk wysyłanie e-maili (jak myślę, że Panel Plesk wysyła maile bezpośrednio, a nie przez postfix). Czy można również skonfigurować crondaemona (moje cronjobs), aby wysyłał e-maile przez smtp przez Postfix? Nie chcę dodawać użytkownika cron do iptables (jako innego wyjątku), ponieważ bezpieczniej byłoby pozwolić ruchowi pocztowemu, gdzie to możliwe, przejść przez Postfix. Czy jest możliwe, aby crontab używał Postfiksa do wysyłania dzienników błędów? Czy powinienem umieścić to w nowym pytaniu na temat błędu serwera?
mfuesslin

Nie wiem, jak to zrobić z Pleskiem. Zresztą nie zajmujemy się tutaj pytaniami o Plesk .
Michael Hampton

Ok, ale jeśli chcę określić wielu użytkowników, którzy zezwalają na wysyłanie danych przez port 25, czy mogę po prostu skopiować regułę iptables i dodać drugiego z drugim użytkownikiem, czy też muszę to określić w ramach jednej reguły?
mfuesslin

Prawdopodobnie nie; myślę, że musiałbyś stworzyć łańcuch użytkowników.
Michael Hampton

Jedna rzecz w dostarczonej regule iptables: Czy jesteś pewien, że nie musimy ustawiać reguły dla użytkownika root? Ponieważ rootw większości przypadków uruchamiany jest proces główny postfiksa . Czy też proces główny postfiksa spawnuje podprocesy za pomocą opcji postfix-user do wysyłania e-maili / robienia rzeczy? Wypróbowałem twoją regułę iptables, e-maile nie mogły zostać dostarczone ... Jeśli to zrobię ps -ef | grep "postfix", zobaczę niektóre podprocesy uruchomione przez postfix-user i jeden proces główny uruchomiony przez root...
mfuesslin 21.02.18

7

W dzisiejszych czasach próba stworzenia własnego serwera pocztowego jest w większości przegraną bitwą i lepiej znaleźć niedrogą usługę. Powiedziawszy to ...

  • Spójrz na dzienniki prowadzące do dostawcy, który Cię zablokował, i sprawdź, czy możesz znaleźć coś podejrzanego. Możliwe i często zdarza się, że ktoś zapomina o subskrypcji Twojego newslettera i oznaczy Cię jako spam. Następnie w zależności od dostawcy możesz dostać się na czarną listę dostawcy, nawet jeśli nie zrobiłeś nic złego.

  • Oddziel masowe wysyłki od wszystkich pozostałych wiadomości e-mail na dwóch serwerach.

  • Przechowuj dzienniki przez co najmniej tygodnie i lepsze miesiące. Więc za każdym razem, gdy coś się dzieje, badasz.

  • Codziennie sprawdzaj dzienniki pod kątem podobnych sytuacji od dowolnego dostawcy i przeglądaj je codziennie lub szybciej. Sekunda zostanie zablokowana, a jeśli będziesz próbował wysłać, może się pogorszyć. Możesz przejść z bloku tymczasowego do bloku stałego ... i zgłosić się na czarną listę.

  • Nie jestem pewien, jak to zaimplementują, ale wiem, że wielu dostawców robi usługi poczty wychodzącej, że po drugie dostawca / adres IP blokuje wiadomość e-mail, a następnie nie próbuje się wysłać żadnej innej wiadomości e-mail. Idealnie chcesz czegoś takiego. Ponieważ drugi zostaje zablokowany, wysyłanie kolejnych tylko pogorszy problem.


4
@mfuesslin Mailchimp byłby niewłaściwą platformą do użycia. Mailchimp to usługa e-mail marketingu, potrzebna jest transakcyjna usługa e-mail. Zajrzyj do Mandrill (należącego do tych samych osób, które są właścicielami Mailchimp). To 20 USD miesięcznie za blok 25 000 e-maili. Niezbyt drogie. Wysyłanie tak wielu wiadomości e-mail codziennie z własnego adresu IP spowoduje tylko wysoki wskaźnik spamowania ... to przegrana bitwa. Możesz zatrudnić cały zespół, który nie będzie robił nic poza codzienną poprawą wskaźników dostarczalności i nadal nie będzie tak dobry, jak korzystanie z Usługi Transakcyjnej.
SnakeDoc

1
Osoby korzystające z serverfault.com powinny mieć możliwość uruchamiania serwera pocztowego; to nie jest takie trudne. To powiedziawszy, nie wydaje się, aby serwer poczty był winny, wygląda na to, że zaatakowana strona internetowa bezpośrednio wysyła spam.
wurtel

1
@wurtel tylko dlatego, że ktoś wie, jak coś zrobić, nie oznacza to, że ma to sens. Jeśli możesz znaleźć usługę na X / miesiąc, aby zrobić to, czego potrzebujesz, a zajmie ci to 4x / miesiąc czasu / wysiłku, aby zrobić to sam, to naprawdę nie ma sensu robić tego sam.
Francisco1844

1
@wurtel Capable? Tak. Ciągłe dostarczanie do skrzynki odbiorczej, wysyłanie ponad 1500 e-maili dziennie? Wątpliwe i prawdopodobnie nie. - Nikt nie mówi, że nie możesz tego zrobić ... tyle, że robienie tego dobrze, konsekwentnie i przez długi okres czasu będzie cię kosztować znacznie więcej niż 20 $ miesięcznie .
SnakeDoc

2
Utrzymuję taki serwer przez ponad 15 lat, regularnie wysyłając 30-50 tysięcy wiadomości listy mailowej oprócz codziennych przesyłek wiadomości dla wielu domen i rzadko spędzam ponad godzinę w miesiącu (oprócz regularnych aktualizacji umiejętności). Serwer i tak obsługuje wiele stron internetowych, więc nie ma tam dodatkowych inwestycji. Trochę mi przykro, że ludzie zalecają kupowanie usług, aby robić rzeczy, które możesz łatwo zrobić samemu. Nie ma nic złego w odrobinie nauki po drodze.
wurtel
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.