Īsi sakot: Ja serveris sūta surogātpastu, parasti ir viens no trim cēloņiem: ievadīts vai ļaunprātīgi izmantots PHP skripts, pastkaste ar nozagtu paroli vai nepareizi konfigurēts pasta serveris. Nodrošiniet dažus gaidošos e-pastus, izlasiet to galvenes rindas un pasta žurnālu, un vairumā gadījumu atradīsit avotu. Pēc tam sūtīšanu apturiet, cēloni aizveriet un tikai tad pieprasiet izņemšanu no bloķēšanas sarakstiem.
Ja klienti jūsu rēķinus atrod surogātpasta mapē
Tas reti sākas ar drošības ziņojumu. Parasti atsaucas klienti, kas jūsu piedāvājumus vairs nesaņem, vai pastkaste piepildās ar atgriezeniskajiem ziņojumiem par e-pastiem, ko nekad neviens nav rakstījis. Dažkārt hostinga sniedzējs bloķē sūtīšanu un kā iemeslu min uzkrītošu pasta satiksmi.
Uzņēmumam tam ātri ir jūtamas sekas. Ja servera adrese ir bloķēšanas sarakstā, citi pasta serveri noraida arī jūsu īstos e-pastus: rēķinus, pasūtījumu apstiprinājumus, paroles saites no veikala. Domēna reputācija cieš, un kaitējums aug ar katru stundu, kurā sūtīšana turpinās.
Surogātpasta sūtīšana pieder pie zināmām kompromitēšanas sekām. Pēc PHP2Shell, ievainojamībām CVE-2026-109618 un CVE-2026-109619 ar koda izpildi bez pieteikšanās, tas ir vēl viens iemesls skatīties uzmanīgāk. Tomēr surogātpasts nav specifiska PHP2Shell norāde; apstiprinātu Indicators of Compromise nav. Citas vispārējas pazīmes apraksta Vai esmu jau kompromitēts?.
Trīs tipiski cēloņi, kad serveris sūta surogātpastu
| Cēlonis | Tipisks attēls | Kur skatīties |
|---|---|---|
| Ievadīts PHP skripts | e-pasti bez pieteikšanās, lokāli iesniegti ar sendmail |
galvenes rindas, PHP pasta žurnāls, jauni PHP faili |
| Ļaunprātīgi izmantota veidlapa | e-pasti caur kontaktu vai ieteikuma veidlapu uz svešiem adresātiem | veidlapas piekļuves žurnāls, galvenes rindas |
| Nolaupīta pastkaste | sūtīšana ar derīgu pieteikšanos pasta serverī | pasta žurnāls ar pieteikšanās vārdu, pieteikšanās vietas |
| Atvērts pasta serveris | svešie sūtītāji izmanto jūsu serveri kā pārsūtītāju | pasta servera konfigurācija, ārēja pārbaude |
Pirmie divi cēloņi attiecas uz vietni, trešais uz pasta kontiem, ceturtais uz servera konfigurāciju. Atšķirība ir svarīga, jo pretpasākumi ir pilnīgi atšķirīgi.
Pasta rindas nolasīšana
Serveros ar Postfix rinda parāda, ko tieši paredzēts nosūtīt. Šīs komandas tikai lasa:
# Parādīt rindas saturu (atbilst mailq)
postqueue -p | tail -30
# Parādīt viena e-pasta galvenes rindas (ievietot rindas ID no saraksta)
sudo postcat -q -h QUEUE-ID
# Sekmīgas pieteikšanās pasta serverī ar lietotājvārdu
sudo grep 'sasl_username=' /var/log/mail.log | awk -F'sasl_username=' '{print $2}' | sort | uniq -c | sort -rn | head
Galvenes rindas bieži jau atklāj avotu. Ja e-pasts nāk no pieteikušās pastkastes, pieteikšanās vārds parādās pasta žurnālā. Ja tur uzkrājas atsevišķs konts ar pieteikšanās reizēm no svešām valstīm, šīs pastkastes parole ļoti iespējams ir kļuvusi zināma. Ja e-pasts turpretī iesniegts lokāli, tas parasti nāk no skripta serverī.
Ja jūsu serverī darbojas cits pasta serveris, piemēram, Exim, komandas sauc citādi, princips paliek tas pats: apskatīt rindu, lasīt galvenes rindas, žurnālā saskaitīt pieteikšanās. Koplietošanas hostingā bez shell piekļuves rakstiski palūdziet hostinga sniedzējam pasta žurnāla izvilkumu un dažus paraugpastus ar pilnām galvenes rindām. Daudzi hostinga sniedzēji šīs ziņas pēc pieprasījuma sniedz, jo paši ir ieinteresēti sūtīšanu izbeigt.
Dažus pilnus e-pastus nodrošiniet, pirms rindu apturat vai iztukšojat. Tie ir pierādījumi vēlākai analīzei un sarunām ar hostinga sniedzēju vai bloķēšanas sarakstu operatoriem.
Atbildīgā PHP skripta atrašana
Ja sūtīšana notiek caur PHP, palīdz PHP pasta konfigurācija. Saskaņā ar PHP rokasgrāmatu mail.log protokolē katru mail() funkcijas izsaukumu ar pilnu skripta ceļu, rindas numuru, adresātu un galvenes rindām. mail.add_x_header papildus katrā e-pastā ieraksta galvenes rindu X-PHP-Originating-Script ar lietotāja identifikatoru un faila nosaukumu.
; php.ini vai FPM pūlā, pēc tam pārstartēt visus worker
mail.add_x_header = On
mail.log = /var/log/php/mail.log
Žurnāla failam jābūt rakstāmam PHP procesam. Galvenes rinda adresātiem atklāj faila nosaukumu; pēc analīzes to atkal izslēdziet, ja nevēlaties to pastāvīgi.
Ja kā sūtītājs atrodams nezināms fails, piemēram, augšupielāžu vai kešatmiņas mapē, tā ir norāde uz webshell. Kā šādus failus klasificēt, apraksta Webshell atpazīšana un noņemšana. Ja tas turpretī ir zināma kontaktu veidlapa, tā, visticamāk, ir ļaunprātīgi izmantota, piemēram, tāpēc, ka adresāti vai galvenes rindas tiek pārņemtas no veidlapas ievades. Tā ir kļūda kodā, nevis ielaušanās, taču tā jānovērš tikpat ātri.
Ne katrs surogātpasts izmanto mail() funkciju. Ļaunprātīgs kods var arī tieši izveidot savienojumu ar svešiem pasta serveriem. Tad sūtīšana neparādās ne rindā, ne PHP pasta žurnālā, bet gan kā izejoši savienojumi portā 25. Kā tos pārbaudīt, aprakstīts sadaļā Servera izejošo savienojumu pārbaude.
Sūtīšanu apturēt un tīri atsākt
Kad avots atrasts, attīrīšana seko šādā secībā:
- Apturēt sūtīšanu: bloķēt skarto ceļu, tātad deaktivizēt skriptu, bloķēt pastkasti vai apturēt rindu. Gaidošos e-pastus nodrošināt kā pierādījumu.
- Aizvērt cēloni: webshell gadījumā PHP novest labotā stāvoklī (8.5.12, 8.4.27, 8.3.36, 8.2.35 vai apstiprināts backport), pārstartēt visus worker un attīrīt vietni. Veidlapas gadījumā labot kodu. Pastkastes gadījumā nomainīt paroli un pārbaudīt lietotāja ierīci.
- Meklēt citas pēdas: kas surogātpastu sūta caur webshell, bieži ir izveidojis arī citas slēptās piekļuves.
- Ierobežot izeju: izejošos savienojumus portā 25 atļaut tikai pasta serverim, nevis tīmekļa servera lietotājam.
- Sakopt bloķēšanas sarakstus: tikai tagad pie bloķēšanas sarakstu operatoriem pieprasīt izņemšanu un īsi aprakstīt, kas ir novērsts.
Šajā reizē pārbaudiet sava domēna SPF, DKIM un DMARC. Šie DNS ieraksti nosaka, kuri serveri drīkst sūtīt jūsu domēna vārdā, un apgrūtina svešiem jūsu sūtītāja adreses ļaunprātīgu izmantošanu.
Kā PHP SOS palīdz konkrēti?
- Mēs izvērtējam rindu, galvenes rindas un pasta žurnālus un noskaidrojam, vai cēlonis ir skripts, veidlapa, pastkaste vai konfigurācija.
- Mēs sūtīšanu apturam kontrolēti un nodrošinām pierādījumus hostinga sniedzējam un bloķēšanas sarakstiem.
- Mēs vietni attīrām ļaunprogrammatūras noņemšanas ietvaros un aizveram ieejas vārtus.
- Mēs ierobežojam izejošo pasta satiksmi servera līmenī un pavadām izņemšanu no bloķēšanas sarakstiem.
Biežāk uzdotie jautājumi
Kā pamanīt, ka mans serveris sūta surogātpastu?
Tipiski ir atgriezeniskie ziņojumi par e-pastiem, ko neviens nav rakstījis, hostinga sniedzēja norādes, pilna pasta rinda un klienti, kas jūsu e-pastus pēkšņi atrod surogātpasta mapē. Arī jūsu servera adreses ieraksti publiskos bloķēšanas sarakstos ir skaidra pazīme.
Kā atrast PHP skriptu, kas sūta surogātpastu?
PHP var protokolēt katru mail() funkcijas izsaukumu ar skripta ceļu, ja ir iestatīts mail.log. Ar mail.add_x_header PHP skripta nosaukumu papildus ieraksta katra e-pasta galvenē. Jau nosūtītos vai gaidošos e-pastos palīdz skatiens galvenes rindās.
Vai pasta rindu dzēst nekavējoties?
Ne pirms esat nodrošinājuši dažus e-pastus kā pierādījumu. Galvenes rindas bieži parāda, kurš skripts vai kura pastkaste sūtīšanu izraisījusi. Apturēšana parasti ir labāka par dzēšanu, kamēr avots nav zināms.
Kā tikt prom no bloķēšanas sarakstiem?
Vispirms novērst cēloni, tad pie attiecīgajiem bloķēšanas sarakstu operatoriem pieprasīt izņemšanu. Lielākā daļa prasa paskaidrojumu, kas ir novērsts. Kas pieprasa pārāk agri un turpina sūtīt surogātpastu, tiek iekļauts atkal.