← Zpět na všechny články blogu

Jak řešit spam pomocí příkazové řádky?

Karel Dytrych
David Janík 7. 6. 2021 - 9 min. čtení
Blog

Dneska se naučíme, jak být správný e-mailový detektiv. Naučíme se, jak řešit a vyhledávat spam za pomocí příkazové řádky.To se bude hodit, když vám VPS Centrum pošle e-mail, že nějaké vaše schránky nebo web rozesílají spam.

Když se to stane, tak je potřeba:

  • Najít příčinu a konkrétní zdroj – Jedná se o infikovaný web, nezabezpečený formulář nebo posílá spam konkrétní e-mailová schránka?
  • Smazat infikovaný soubor, zabezpečit webový formulář nebo přeheslovat e-mailovou schránku
  • Vyčistit e-mailovou frontu a napsat nám, jaké kroky jste učinili, abyste tomu zamezili

Doporučujeme přečíst i náš článek ohledně e-mail Blacklistu, jak se na ně člověk dostane, jak se ze seznamu odstraní nebo si povíme preventivní opatření. Případně náš článek, jak zlepšit doručitelnost e-mailu pomocí SPF, DKIM a DMARC záznamů.

Jak najít zdroj spamu?

Jako první se musíme podívat do e-mailové fronty, kde najdeme tzv. ID e-mailu.

VPS Centrum

Vyzkoušejte zdarma naši aplikaci pro správu serveru a domén. Budete si připadat jako zkušený administrátor.

Na postiženém serveru zadáme na SSH příkaz:

mailq 

Ten zobrazí veškeré e-maily ve frontě. Někdy jich tam je spousty, tak užitečný příkaz je tail 20. Tento druhý příkaz nevypíše celou e-mailovou frontu, ale pouze posledních 20 e-mailů.

mailq | tail -20

ID zprávy najdete hned na začátku výpisu, takže jej stačí zkopírovat a pak pomocí příkazu postcat zjistíme o dané zprávě více informací. Nejdůležitější informace jsou hned na začátku zprávy, takže místo doplňujícího příkazu tail využijeme head.

postcat -q BCEB97F682 | head -50

root@lan04-tomas-haubert ~ # postcat -q D0DC5879C3 | head -50

*** ENVELOPE RECORDS deferred/D/D0DC5879C3 ***

message_size: 2383 753 1 0 2383 0

message_arrival_time: Fri Jun 4 10:45:56 2021

create_time: Fri Jun 4 10:45:56 2021

named_attribute: log_ident=D0DC5879C3

named_attribute: rewrite_context=remote

sender: spam@saboo.cz

named_attribute: encoding=8bit

named_attribute: log_client_name=localhost.localdomain

named_attribute: log_client_address=127.0.0.1

named_attribute: log_client_port=40840

named_attribute: log_message_origin=localhost.localdomain[127.0.0.1]

named_attribute: log_helo_name=localhost

named_attribute: log_protocol_name=ESMTP

named_attribute: client_name=localhost.localdomain

named_attribute: reverse_client_name=localhost.localdomain

named_attribute: client_address=127.0.0.1

named_attribute: client_port=40840

named_attribute: server_address=127.0.0.1

named_attribute: server_port=10025

named_attribute: helo_name=localhost

named_attribute: protocol_name=ESMTP

named_attribute: client_address_type=2

named_attribute: dsn_orig_rcpt=rfc822;janik@vas-hosting.cz

original_recipient: janik@vas-hosting.cz

recipient: janik@vas-hosting.cz

Takto vypadá výstup pokud e-mail odesílá konkrétní schránka. Víme, kde je problém a pro vyřešení stačí dané schránce změnit heslo.

Co dělat, když spamovala e-mailová schránka?

Pokud spamovala e-mailová schránka, tak postup řešení je následovný.

Změna hesla

Jako první musíme k dané schránce změnit heslo. Nejlepší heslo je náhodně vygenerované. Často má schránka slabé heslo a někomu se podaří cracknout a pak rozesílá spam, dokud jej nikdo nezastaví.

Doporučujeme přečíst náš nedávný článek, jak pracovat s hesly.

Freelo - Nástroj na řízení úkolů a projektů

Přidej se, pozvi svůj tým a klienty, rozděl práci a sleduj, jak se úkoly dají do pohybu.

Kontrola veškerých zařízeních

Může se stát, že na nějakém zařízení máte nějaký malware. Je tedy nutné většinu zařízení zkontrolovat, jestli nemají škodlivý software nainstalovaný. Nezapomeňte, že i mobilní zařízení mohou mít malware.

Doporučujeme projet zařízení dostupným antivirem a ověřit si, že přístupové údaje neposílá kam nemá.

Kontrola wifi zabezpečení

Další možností je přítomnost útočníka ve WiFi síti. Pokud tam máte slabé zabezpečení nebo slovníková hesla, tak existuje možnost, že útočník odposlouchává vaší síť. Pokud tedy veškerý přenos není přes HTTP, tak může odposlouchávat a odcizit vaše hesla.

Pokud máte zabezpečení WPA/2 a silné heslo, které se ve slovníku nenachází, tak šanci útočníkům pomalu nedáte.

Teď si ukážeme, jak takový spam vypadá, pokud za něj může PHP skript. (Zvýrazněný řádek)

*** ENVELOPE RECORDS deferred/F/F25798856B ***

message_size: 1058 738 1 0 1058 0

message_arrival_time: Fri Jun 4 12:43:48 2021

create_time: Fri Jun 4 12:43:48 2021

named_attribute: log_ident=F25798856B

named_attribute: rewrite_context=remote

sender: info@fortnite.sk

named_attribute: log_client_name=localhost.localdomain

named_attribute: log_client_address=127.0.0.1

named_attribute: log_client_port=41498

named_attribute: log_message_origin=localhost.localdomain[127.0.0.1]

named_attribute: log_helo_name=localhost

named_attribute: log_protocol_name=ESMTP

named_attribute: client_name=localhost.localdomain

named_attribute: reverse_client_name=localhost.localdomain

named_attribute: client_address=127.0.0.1

named_attribute: client_port=41498

named_attribute: server_address=127.0.0.1

named_attribute: server_port=10025

named_attribute: helo_name=localhost

named_attribute: protocol_name=ESMTP

named_attribute: client_address_type=2

named_attribute: dsn_orig_rcpt=rfc822;janik@vas-hosting.cz

original_recipient: janik@vas-hosting.cz

recipient: janik@vas-hosting.cz

*** MESSAGE CONTENTS deferred/F/F25798856B ***

Received: from localhost (localhost.localdomain [127.0.0.1])

by lan04.vas-server.cz (Postfix) with ESMTP id F25798856B

for <janik@vas-hosting.cz>; Fri, 4 Jun 2021 12:43:48 +0200 (CEST)

X-Spam-Flag: NO

X-Spam-Score: 0.329

X-Spam-Level:

X-Spam-Status: No, score=0.329 required=3

tests=[HEADER_FROM_DIFFERENT_DOMAINS=0.249, NO_RELAYS=-0.001,

PP_MIME_FAKE_ASCII_TEXT=0.081] autolearn=no autolearn_force=no

Received: from lan04.vas-server.cz ([127.0.0.1])

by localhost (localhost [127.0.0.1]) (amavisd-new, port 10024)

with ESMTP id mjcL8iAQzBfz for <janik@vas-hosting.cz>;

Fri, 4 Jun 2021 12:43:48 +0200 (CEST)

Received: by lan04.vas-server.cz (Postfix, from userid 33)

id C45FC8856D; Fri, 4 Jun 2021 12:43:48 +0200 (CEST)

To: janik@vas-hosting.cz

Subject: Simple Spam via PHP

X-PHP-Originating-Script: 33:spamujeme.php

From: spam@sabo.cz

Message-Id: <20210604104348.C45FC8856D@lan04.vas-server.cz>

Date: Fri, 4 Jun 2021 12:43:48 +0200 (CEST)

Tohle je spam vygenerovaný pomocí PHP skriptu

*** HEADER EXTRACTED deferred/F/F25798856B ***

Zvýrazněný řádek, nám říká, že e-mailová zpráva pochází z PHP skriptu, který se jmenuje “spamujeme.php”.

Co dělat, když spamoval web/skript?

Když nám spamuje web, tak existují 2 hlavní viníci, které rozesílání nevyžádané pošty způsobují.

  • Zranitelnost webu v podobě nahrání škodlivého skriptu.
  • odposlechnutí přístupových údajů na FTP/administrace,
  • nezabezpečený webový formulář.

Nahrání škodlivých souborů

Druhým nejčastějším problémem je neautorizované nahrání souboru přímo na web. To znamená, že útočník si může nahrát backboor do vašeho webu nebo právě spamovací skript, který bude zneužívat váš web a IP adresu.

Tady přichází na řadu kontrola FTP. Ať už používáte FTP klienta nebo webové rozhraní, tak všude uvidíte, kdy naposledy se soubor měnil nebo nahrával. To nám pomůže při detektivní práci.

Pokud jste na web dlouhé týdny nic nepřidávali, a uvidíte soubor se jménem xmadnez.php, tak už jenom název prozradí, že se nejedná o váš soubor. Taky vidíte, že byl nahrán v době, kdy začal web spamovat.

Názvy soubory jsou vždycky jiné, ale datum poslední změny nikdy nelže. Tady je důležité znát svůj web a vědět, jaké soubory k webové prezentaci patří, protože to váš hostingový provider nemůže vědět. Případně se obraťte na vašeho správce webu nebo programátora.

Jakmile podezřelý soubor najdete, tak ho musíte nejdříve odstranit a pak hledat, jak se tam vlastně dostal. Nejčastěji bývá chyba v nastavení PHP nebo zranitelnost aplikace, ale to v dnešním článku nedokážeme obsáhnout.

Obvykle se provádějí tzv. penetrační testy, které dokážou odhalit, jestli je web náchylný k podobným chybám. Můžete mrknout na základní typologie bezpečnostních testů. Nástroje, které poslouží k testům je např. známynmap neboKali Linux, které už mají potřebné nástroje implementované

Odposlechnuté přístupové údaje (FTP, administrace)

Poslední možností je odposlechnutí nebo cracknutí hesel na FTP, do administrace nebo aplikace 3. stran. Např. se nedoporučuje ukládat hesla do FTP klientů, jako je WinSCP nebo Filezilla, protože většina malwaru umí taková hesla odposlechnout.

Pokud lezete na stránky s torrenty, seriály zdarma a kliknete kam nemáte, tak se k vám může dostat odposlouchávací malware, který sbírá vaše přístupové údaje kamkoliv na internet jdete.

Ať už to je Netflix, administrační prostředí vašeho webu nebo FTP. Takové údaje pak útočník může někomu prodat nebo je použije k vlastnímu prospěchu, jako je rozesílání spamu.

Tady se doporučuje nainstalovat bezpečnostní antivir, který vás bude proti takovým virům chránit. Pokud nemůžete přijít, na to, jak se tam soubor dostal, tak nejlepší řešení je změnit hesla k FTP, administračnímu prostředí a následně si počítač projet antivirem.

Zabezpečení webového formuláře

Většina webů má kontaktní formulář pomocí kterého mohou návštěvníci posílat dotazy nebo poptávky. Je to nedílná součást marketingu, jenže bohužel i největší rozesílač spamu.

Pokud takový formulář na webu máte, tak jej musíte i správně zabezpečit. To lze udělat vícero způsoby, ale ten nejrozšířenější je reCAPTCHA od Googlu.

Stačí zaregistrovat svůj web, ověřit doménu a nakonec formulář s tímto nástrojem propojit. Tady je např. návod, jak zprovoznit reCAPTCHU na WordPressu.

Další možnosti jsou kontrolní otázky či nějaké počty, ale chytrý spammer si může web otestovat, zjistí kolik tam má otázek a pak své spamboty upravit, takže takové řešení nedoporučujeme.

Cloudflare se snaží přijít na chytřejší a rychlejší řešení, které by nám život na internetu zase zpříjemnili. Průměrnému člověku vezme jedna challenge kolem 32 vteřin a podle jejich propočtů ztratíme 500 let života každý den, jen abychom potvrdili, že jsme lidi.

Pokročilé vyhledávání v mail.logu

Na závěr si povíme ještě pár šikovných příkazů, které používáme pro prohledávání e-mailových logů. Vyhledávání v Linuxu je velice rychlé a hlavně pohodlné.

Důležitý log najdete na SSH ve složce /var/log/mail.log nebo se připojíte do VPS Centra > Přehledy > mail.log

Pokud chceme vyhledat e-maily, které se vrátily (bounced), tak použijeme tento příkaz.

cat /var/log/mail.log | grep bounced

Nebo ve VPS Centru…

Další spojení, která indikují problém s odesíláním:

  • deferred – často vyskočí, když se dostanete na email Blacklist
  • delayed – e-mail se nedaří zatím odesílat
  • blocked – spojení se serverem bylo zablokované

Příkazy by tedy vypadaly..

cat /var/log/mail.log | grep defererd

cat /var/log/mail.log | grep delayed

cat /var/log/mail.log | grep blocker

Jak vyprázdnit e-mailovou frontu

Posledním krokem je vyprázdnění e-mailové fronty. Nejjednodušším řešením je přihlášení do VPS Centra > Správa server > E-mail.

Stačí zadat schránku, která rozesílala spam a během chvilky celou e-mailovou frontu této schránky promaže.

Další možností je pomocí SSH příkazu:

# cd /var/spool/mqueue/

# ls

# rm *

Tímto způsobem vymažete celou e-mailovou frontu od každé schránky / domény.

Zůstaňte s námi v kontaktu

Jednou za měsíc posíláme souhrn novinek. Nemusíte se bát, spam neposíláme a odhlásit se můžete kdykoliv...

Karel Dytrych
Tým Váš Hosting
Vyzkoušejte náš trial na týden zdarma

Garance 14denní záruky vrácení peněz

Vyzkoušejte server na týden zdarma

Vyzkoušet server