Mendeteksi spammer di server saya

12

Saya baru-baru mendapat satu Undelivered Mail Returned to Sendersaat mengirim buletin saya ke salah satu dari 1500 pelanggan saya. Situs web saya menggunakan prosedur opt-in ganda untuk memastikan, pengguna secara eksplisit ingin menerima buletin saya.

Pesan kesalahan:

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.

Saya mendapat contoh spam mail (dari penyedia mailserver penerima):

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" <[email protected]>
Subject: Abbiamo ricevuto una segnalazione di accredito
Date: Mon, 12 Feb 2018 11:32:03 -0500

Penyedia juga menyatakan, bahwa server saya tampaknya diretas. Dia lebih lanjut menyatakan, bahwa "server email penerima hanya mencatat rDNS yang disajikan kepadanya oleh IP penghubung, dalam hal ini mail.com ([94.130.34.42])" - yang jelas BUKAN ketika saya mengkonfigurasi entri rDNS saya (mail.lotsearch.de) untuk alamat IP saya. Jadi jika saya mengerti rDNS dengan benar, server e-mail penerima meminta IP pengirim untuk entri rDNS (94.130.34.42 => harus menyelesaikan ke => mail.lotsearch.de, yang pasti, ketika saya mengujinya dari mesin lokal saya melalui $ host 94.130.34.42).

Bagaimana mungkin melakukan spoof rDNS? Saya tidak dapat membayangkan bagaimana cara ini secara teknis dapat bekerja (hanya dengan serangan man-in-the-middle di suatu tempat di infrastruktur antara server surat penerima dan server saya).

Penyedia juga menyebutkan, bahwa "kemungkinan mesin yang menghubungkan dari IP saya telah dikompromikan dan mengirim pesan-pesan ini melalui koneksi langsung ke server mail penerima (juga dikenal sebagai MX langsung)". Apa direct MXartinya Seseorang mencuri atau menemukan kredensial surat bocor ke salah satu akun surat saya dan menggunakannya untuk mengirim surat?

Apa yang telah saya lakukan sejauh ini untuk memastikan server saya TIDAK / tidak akan diretas:

  • mencari log surat ( var/log/mail*): tidak ada yang istimewa di sana
  • memeriksa log masuk ssh ( last, lastb): tidak ada yang aneh
  • dicek jika postfix tidak merelay: tidak tidak (diperiksa melalui telnet)
  • memeriksa malware melalui clamav: tidak ada hasil
  • diinstal dan dikonfigurasi fail2ban untuk ssh, postfix dan dovecot
  • menginstal tambalan / pembaruan terbaru untuk Ubuntu 16.04 (saya melakukannya setiap minggu)
  • memeriksa apakah alamat IP saya ada di daftar hitam: tidak
  • entri rDNS yang diverifikasi di konsol manajemen penyedia hosting saya: diatur dengan benar ke mail.lotsearch.de.
  • kata sandi yang diubah dari semua akun email
  • kunci publik yang diubah untuk akses shell

Lebih penting: Tidak ada informasi tentang [email protected]dalam log. Jadi jika server saya akan disalahgunakan oleh spammer (karena bocornya smtp dari salah satu akun mail) saya akan melihatnya di file log.

Kemungkinan terakhir yang dapat saya pikirkan adalah bahwa seorang penyusup menempatkan malware di server saya yang belum saya temukan.

Bagaimana saya bisa memonitor lalu lintas surat keluar (per proses dan per port)?

Hanya memantau port keluar 25 tidak akan membantu karena ini hanya akan menjebak mail tidak teratur yang dikirim melalui postfix, tetapi tidak lalu lintas mail yang disebabkan oleh infeksi malware potensial (jika malware menggunakan port lain dari 25 untuk langsung mengirim email / berkomunikasi dengan server mail penerima) . Jika saya memantau lalu lintas keluar di semua port saya akan mendapatkan cara untuk file log besar yang saya tidak bisa mencari aktivitas mencurigakan secara efisien.

EDIT - Uji tambah untuk relai terbuka:

$ telnet mail.lotsearch.de 25
$ HELO [email protected]
250 mail.lotsearch.de
$ MAIL FROM: [email protected]
250 2.1.0 Ok
$ RCPT TO:<[email protected]>
454 4.7.1 <[email protected]>: Relay access denied

EDIT - Menjalankan webapps

mfuesslin
sumber
"Jika saya memonitor lalu lintas keluar di semua port" ... Mengapa? Lalu lintas apa lagi yang dikirimkan server email ini? Apakah Anda yakin Anda belum mengkonfigurasi relay terbuka? Dan tidak ada orang dengan akses untuk mengirim email di server yang telah bocor kredensial?
Daniel Widrick
@DanielWidrick Mailserver juga digunakan sebagai server web, sehingga lalu lintas di 443 dan 80 juga dimungkinkan. Saya memikirkan semacam malware yang ditempatkan di server saya berkomunikasi langsung dengan server email eksternal (bukan melalui postfix server mail default). Tentang open relay: Saya mengedit pertanyaan saya dengan cek yang saya lakukan untuk memastikan tidak ada open relay. Pertanyaan terakhir Anda sulit dijawab karena saya tidak tahu tentang "kesehatan" komputer pelanggan saya (di mana akun email server saya dikonfigurasi) atau jika mereka terinfeksi dengan malware / keylogger yang memperoleh kredensial dll.
mfuesslin
Disk itu murah. Dalam situasi Anda, ada kasus yang valid untuk menyimpan log selama satu tahun. Pertimbangkan untuk menggunakan syslog dll untuk mengirimkannya langsung ke server
Criggie

Jawaban:

13

Sebelum saya mendapatkan saran saya, saya ingin berkomentar sedikit pada sesuatu yang penyedia Anda katakan kepada Anda:

 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

Ini tidak menunjukkan bahwa DNS terbalik untuk 94.130.34.42 adalah (atau tadinya) mail.com. Sebaliknya, itu menunjukkan bahwa klien SMTP dikirim mail.comdalam nya HELO(atau EHLO) baris. (Server surat yang dikonfigurasi dengan baik akan menolak koneksi ini sepenuhnya, tetapi itu ada di Swisscom, bukan Anda ...) Baris ini tidak menunjukkan entri DNS terbalik. Jika ya, itu akan muncul di dalam tanda kurung. Sebagai contoh:

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

Dalam hal ini, nama host pertama adalah apa yang diidentifikasi oleh server email itu sendiri sebagai EHLO. Nama host kedua adalah DNS terbalik yang direkam pada saat koneksi dibuat.

RFC 5321 bagian 4.4 menjelaskan format baris Received:, dengan tata bahasa formal.

Dalam kasus Anda, tidak ada DNS terbalik yang direkam. Karena alamat IP Anda memiliki catatan PTR, ini mungkin karena mereka tidak mencarinya, atau ada kegagalan DNS sementara.


Sekarang, tampaknya Anda menjalankan layanan hosting web dan memiliki banyak aplikasi web. Jika salah satunya terganggu, ia mungkin mulai mengirim spam. Ini sering membuat koneksi langsung ke server surat jarak jauh dengan mencari catatan MX mereka dan menyambungkan ke port 25, seolah-olah mereka sebenarnya server surat itu sendiri, daripada mengirimkan surat ke gulungan surat lokal atau layanan surat terotentikasi pada port 587 atau 465 seperti yang dilakukan aplikasi web yang sah.

Salah satu cara saya menghentikan ini adalah dengan menerapkan aturan firewall yang mencegah koneksi keluar pada port 25 kecuali pengguna adalah pengguna server mail. Sebagai contoh:

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

Aplikasi web tidak lagi dapat mengirim surat secara langsung ke server SMTP jarak jauh, tetapi harus menggunakan gulungan surat lokal atau layanan surat terotentikasi.

Michael Hampton
sumber
Terima kasih atas jawaban Anda. Bagaimana saya perlu menentukan iptablesaturan untuk membiarkan pengguna postfix dan plesk mengirim email (seperti yang saya pikir Panel Plesk mengirim email secara langsung dan tidak melalui postfix). Apakah mungkin untuk mengkonfigurasi crondaemon (cronjobs saya) untuk mengirim email melalui smtp via postfix? Saya tidak ingin menambahkan pengguna cron ke iptables (sebagai pengecualian lain) karena akan lebih aman untuk membiarkan lalu lintas mail jika mungkin melalui postfix. Apakah mungkin untuk membiarkan crontab menggunakan postfix untuk mengirim log kesalahan? Haruskah saya letakkan itu di pertanyaan baru di serverfault?
mfuesslin
Saya tidak tahu bagaimana melakukan ini dengan Plesk. Kami tidak menangani pertanyaan tentang Plesk di sini .
Michael Hampton
Oke, tetapi jika saya ingin menentukan beberapa pengguna yang diizinkan mengirim data melalui port 25, dapatkah saya menyalin aturan iptables dan menambahkan yang kedua dengan pengguna lain atau haruskah saya menentukannya dalam satu aturan?
mfuesslin
Mungkin tidak; Anda harus membuat rantai pengguna, saya pikir.
Michael Hampton
Satu hal tentang aturan iptables yang disediakan: Apakah Anda yakin kami tidak perlu menetapkan aturan untuk pengguna root? Karena proses master postfix dijalankan oleh rootdalam banyak kasus. Atau apakah proses master postfix menelurkan subproses menggunakan postfix-user untuk mengirim email / melakukan hal-hal? Saya mencoba aturan iptables Anda, email tidak dapat dikirim ... Jika saya melakukannya, ps -ef | grep "postfix"saya melihat beberapa subproses dijalankan oleh postfix-user dan satu proses master dijalankan oleh root...
mfuesslin
7

Di zaman sekarang ini, mencoba melakukan server surat Anda sendiri adalah, untuk sebagian besar, pertempuran yang melelahkan dan Anda lebih baik mencari layanan yang terjangkau. Setelah mengatakan itu ..

  • Lihat log Anda ke penyedia yang memblokir Anda dan lihat apakah Anda dapat menemukan sesuatu yang mencurigakan. Mungkin saja, dan sering terjadi, seseorang lupa bahwa mereka berlangganan newsletter Anda dan menandai Anda sebagai spam. Kemudian tergantung pada penyedia Anda bisa mendapatkan dalam daftar hitam penyedia meskipun Anda tidak melakukan kesalahan.

  • Pisahkan surat massal dari semua email Anda yang lain menjadi dua server.

  • Simpan log selama berminggu-minggu di bulan minimum dan lebih baik. Jadi, kapan pun sesuatu terjadi, Anda meneliti.

  • Periksa log Anda setiap hari untuk situasi yang sama dari penyedia mana pun dan periksa setiap hari, atau lebih cepat .. Saat Anda diblokir dan jika Anda terus mencoba mengirimnya bisa menjadi lebih buruk. Anda dapat beralih dari blok sementara ke blok permanen .. hingga dilaporkan ke daftar hitam.

  • Tidak yakin bagaimana mereka mengimplementasikannya, tetapi satu hal yang saya tahu banyak penyedia lakukan untuk layanan email keluar adalah bahwa kedua penyedia / IP memblokir email maka tidak ada email lain yang mencoba dikirim. Idealnya Anda menginginkan sesuatu seperti itu. Karena yang kedua diblokir, mengirim lebih banyak hanya akan memperburuk masalah.

Francisco1844
sumber
4
@mfuesslin Mailchimp akan menjadi platform yang salah untuk digunakan. Mailchimp adalah Layanan Pemasaran Email, yang Anda butuhkan adalah Layanan Email Transaksional. Lihatlah Mandrill (dimiliki oleh orang yang sama yang memiliki Mailchimp). Ini $ 20 sebulan untuk satu blok 25.000 email. Tidak terlalu mahal. Mengirim banyak email ini setiap hari dari alamat IP Anda sendiri hanya akan menghasilkan tingkat kotak spam yang tinggi ... itu adalah pertempuran yang kalah. Anda bisa menyewa seluruh tim untuk tidak melakukan apa-apa selain cenderung pada tingkat pengiriman Anda setiap hari setiap hari, dan masih tidak sebaik menggunakan Layanan Transaksional.
SnakeDoc
1
Orang yang menggunakan serverfault.com harus mampu menjalankan server surat; tidak sulit untuk dilakukan. Yang mengatakan, sepertinya bukan mail server yang salah, sepertinya beberapa halaman web yang dikompromikan yang secara langsung mengirim spam.
wurtel
1
@wurtel hanya karena seseorang memiliki pengetahuan tentang bagaimana melakukan sesuatu itu tidak berarti masuk akal untuk melakukannya. Jika Anda dapat menemukan layanan untuk X / bulan untuk melakukan apa yang Anda butuhkan dan Anda membutuhkan waktu / usaha 4X / bulan untuk melakukannya sendiri maka itu benar-benar tidak masuk akal untuk melakukannya sendiri.
Francisco1844
1
@wurtel Mampu? Iya. Mengirim secara konsisten ke kotak masuk, mengirim 1500+ email sehari? Dipertanyakan, dan mungkin No. - Tidak ada yang mengatakan Anda tidak dapat melakukannya ... hanya untuk melakukannya dengan baik, secara konsisten, dan dalam jangka waktu yang lama, akan dikenakan biaya lebih dari $ 20 per bulan .
SnakeDoc
2
Saya telah memelihara server seperti itu selama lebih dari 15 tahun, secara teratur mengirimkan 30-50 ribu pesan milis di samping banyak pesan setiap hari untuk banyak domain, dan saya jarang menghabiskan lebih dari satu jam sebulan (selain upgrade bakat biasa). Server melayani beberapa situs web, jadi tidak ada investasi tambahan di sana. Saya agak sedih karena orang menganjurkan membeli layanan untuk melakukan hal-hal yang dapat Anda lakukan sendiri dengan mudah. Tidak ada yang salah dengan sedikit belajar di sepanjang jalan.
Wurtel