GNU/Linux >> Belajar Linux >  >> Debian

Cara Mengamankan Server Email Dari Hacking dengan VPN (Debian/Ubuntu)

Dalam tutorial ini, saya akan membagikan tips dan trik saya untuk mengamankan server email dari peretasan dengan server VPN yang dihosting sendiri. Banyak spammer mencoba meretas ke server email orang lain. Jika berhasil, mereka akan menggunakan server email yang diretas untuk mengirim spam dalam jumlah besar atau mencuri data berharga. Mengapa kami menggunakan server VPN yang dihosting sendiri? Karena memungkinkan Anda untuk mengaktifkan daftar putih, jadi hanya pengguna tepercaya yang terhubung ke server VPN yang dapat mengakses server email Anda.

Prasyarat

Diasumsikan bahwa Anda memiliki server email dan berjalan. Jika tidak, ikuti salah satu tutorial di bawah ini untuk menyiapkan server email Anda sendiri.

  • Cara Mudah Menyiapkan Server Email Lengkap di Ubuntu 20.04 dengan iRedMail
  • Cara Mudah Mengatur Server Mail di Debian 10 Buster dengan iRedMail

Anda juga dianggap telah menyiapkan server VPN . Jika belum, silahkan ikuti salah satu tutorial di bawah ini. Server email dan server VPN dapat berjalan pada host yang terpisah, atau pada host yang sama.

  • Siapkan Server VPN WireGuard Anda Sendiri di Ubuntu
  • Siapkan Server VPN WireGuard Anda Sendiri di Debian

Petunjuk :Disarankan untuk menjalankan server VPN dan server email pada host terpisah untuk mengurangi kerumitan operasional . Jika server email dan server VPN berjalan di host yang sama, maka ada langkah tambahan yang diperlukan, yaitu menyiapkan zona kebijakan respons di server VPN untuk menimpa catatan DNS A dari nama host server email Anda.

  • Mengatur Response Policy Zone (RPZ) di BIND Resolver di Debian/Ubuntu

Katakanlah DNS A record untuk mail.yourdomain.com memutuskan ke 12.34.56.78 , maka Anda perlu membuat catatan di zona kebijakan respons untuk menyelesaikannya ke alamat IP pribadi server VPN 10.10.10.1 .

Dalam teks berikut, saya menggunakan 12.34.56.78 sebagai alamat IP publik dari server VPN. Jika server VPN dan server email berjalan di host yang sama, maka Anda perlu mengganti 12.34.56.78 dengan alamat IP pribadi server VPN 10.10.10.1 .

Langkah 1:Tambahkan Alamat IP Server VPN ke Daftar Putih Firewall

Setelah server email dan server VPN Anda aktif dan berjalan, Anda harus menambahkan alamat IP server VPN ke daftar putih firewall server email. Jika Anda menggunakan firewall UFW (Debian/Ubuntu), jalankan perintah berikut di server email. Ganti 12.34.56.78 dengan alamat IP server VPN.

sudo ufw insert 1 allow in from 12.34.56.78

Anda juga dapat memasukkan alamat IP server lain ke daftar putih. Misalnya, beberapa orang mungkin memiliki server web lain yang perlu mengirim email melalui server email. Kemudian tambahkan juga di daftar putih.

sudo ufw insert 1 allow in from IP-address-of-the-other-web-server

Langkah 2:Tutup Port Pengiriman, Port IMAP, dan Port POP3

  • Port pengiriman :587 dan 465
  • Port IMAP :143 dan 993
  • Port POP3 :110 dan 995

Port 587 dan 465 digunakan oleh klien email seperti Mozilla Thunderbird dan Microsoft Outlook untuk mengirimkan email keluar. Peretas dapat melakukan serangan brute force pada port 587 dan 465.

Berikut ini adalah contoh yang ditemukan di log email saya (/var/log/mail.log di Debian/Ubuntu, /var/log/maillog pada CentOS/RHEL). Pelaku jahat mencoba masuk, tetapi autentikasi SASL selalu gagal.

postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3
postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3
postfix/smtps/smtpd[18071]: connect from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: Anonymous TLS connection established from unknown[92.118.38.56]: TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)
postfix/smtps/smtpd[18071]: warning: unknown[92.118.38.56]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
postfix/smtps/smtpd[18071]: lost connection after AUTH from unknown[92.118.38.56]
postfix/smtps/smtpd[18071]: disconnect from unknown[92.118.38.56] ehlo=1 auth=0/1 rset=1 commands=2/3

Saya tidak ingin melihat aktivitas semacam ini di log email saya, jadi saya cukup menutup port 587, 465, 143, 993, 110 dan 995 di firewall. Dan karena alamat IP server VPN saya masuk daftar putih, jadi hanya pengguna yang terhubung ke server VPN saya yang dapat mengakses port tersebut.

Untuk menutup port ini di firewall UFW, buat daftar aturan firewall Anda terlebih dahulu.

sudo ufw status numbered

Contoh keluaran

Seperti yang Anda lihat, ada aturan IPv4 dan IPv6. Untuk menutup port 587, saya perlu menghapus aturan #16 dan #6 . (Anda harus terlebih dahulu menghapus aturan dengan nomor indeks yang lebih tinggi.)

sudo ufw delete 16
sudo ufw delete 6

Maka Anda harus menjalankan sudo ufw status numbered perintah lagi untuk mendapatkan daftar baru aturan firewall. Perhatikan bahwa nomor indeks berubah untuk beberapa aturan.

Kali ini saya ingin menutup port 465, jadi saya harus menghapus aturan #15 dan #6 .

sudo ufw delete 15
sudo ufw delete 6

Kemudian gunakan metode yang sama untuk menutup port 143, 993, 110, dan 995. Tentu saja, Anda harus menjaga port 25 tetap terbuka untuk menerima email dari server SMTP lain.

Langkah 3:Melindungi Panel Admin dan Email Web

Kami dapat menutup port 80 dan 443 untuk melindungi panel admin dan email web dari peretasan. Namun, itu akan melarang akses publik ke semua host virtual. Beberapa orang mungkin memiliki host virtual di Apache/Nginx yang perlu dibuka ke Internet. Daripada menutup port 80 dan 443 di firewall, kita bisa menggunakan fitur kontrol akses bawaan di Apache/Nginx.

Nginx

Edit file host virtual untuk email web, seperti

sudo nano /etc/nginx/conf.d/mail.your-domain.com.conf

Tambahkan baris berikut ke blok server SSL. Ini hanya akan mengizinkan alamat IP 12.34.56.78 untuk mengakses email web, dan menolak semua alamat IP lainnya.

allow 12.34.56.78;
deny all;

Jika Anda memiliki beberapa server VPN, Anda dapat menambahkan beberapa alamat IP seperti:

allow 12.34.56.78;
allow 12.34.56.79;
deny all;

Simpan dan tutup file. Kemudian uji konfigurasi Nginx.

sudo nginx -t

Jika pengujian berhasil, muat ulang Nginx agar perubahan diterapkan.

sudo systemctl reload nginx

Pengguna yang tidak ada dalam daftar putih akan melihat 403 kesalahan terlarang.

Apache

Edit file host virtual untuk email web, seperti

sudo nano /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf

Tambahkan baris berikut di antara <VirtualHost>...</VirtualHost> tag. Ini hanya akan mengizinkan alamat IP 12.34.56.78 untuk mengakses email web, dan menolak semua alamat IP lainnya.

    <LocationMatch "^/">
       Require ip 12.34.56.78
    </LocationMatch>

Jika Anda memiliki beberapa server VPN, Anda dapat menambahkan beberapa alamat IP seperti:

    <LocationMatch "^/">
       Require ip 12.34.56.78 12.34.56.79
    </LocationMatch>

Simpan dan tutup file. Kemudian uji konfigurasi Apache.

sudo apache2ctl -t

Jika sintaksnya Ok, muat ulang Apache agar perubahan diterapkan.

sudo systemctl reload apache2

Pengguna yang tidak ada dalam daftar putih akan melihat 403 kesalahan terlarang.

Perpanjangan Sertifikat Certbot TLS

Jika Anda mengaktifkan daftar putih di host virtual Apache/Nginx, maka Anda juga akan memblokir server Let's Encrypt untuk mengakses server web Anda, yang diperlukan untuk memperbarui sertifikat Let's Encrypt TLS dengan tantangan HTTP-01. Untuk mengatasi masalah ini, kami dapat menonaktifkan daftar putih sebelum perpanjangan sertifikat dan mengaktifkannya kembali setelah perpanjangan.

Buat skrip shell di /root/ direktori.

sudo nano /root/certbot-renewal.sh

Jika Anda menggunakan Nginx, tambahkan baris berikut ke file ini.

#! /bin/bash

# disable whitelisting
sed -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.your-domain.com.conf
systemctl reload nginx postfix dovecot

Jika Anda menggunakan Apache, tambahkan baris berikut ke file ini.

#! /bin/bash

# disable whitelisting
sed -i 's/Require ip/#Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2

# renew TLS certificate
certbot renew --quiet

# enable whitelisting
sed -i 's/#Require ip/Require ip/g' /etc/apache2/sites-enabled/mail.your-domain.com-le-ssl.conf
systemctl reload apache2 postfix dovecot

Simpan dan tutup file. Kemudian tambahkan izin eksekusi ke file ini.

sudo chmod +x /root/certbot-renewal.sh

Kemudian edit file crontab pengguna root.

sudo crontab -e

Tambahkan baris berikut di akhir file, sehingga skrip shell akan berjalan sekali sehari.

@daily bash /root/certbot-renewal.sh

Simpan dan tutup file.

Tutup Port SSH?

Karena alamat IP server VPN Anda masuk daftar putih, Anda juga dapat menutup port SSH di firewall. Namun, melakukan itu membawa risiko. Jika server VPN Anda berhenti bekerja, maka Anda akan mengunci diri. Untuk melindungi layanan SSH dari peretasan, saya sarankan untuk menyiapkan autentikasi kunci publik atau autentikasi dua faktor.

  • 2 Langkah Sederhana untuk Mengatur Login SSH Tanpa Kata Sandi di Ubuntu
  • Mengatur Otentikasi Dua Faktor SSH (2FA) di Server Ubuntu

Debian
  1. Cara Menginstal Server FTP vsftpd dan Mengamankannya dengan TLS di Debian 11

  2. Cara Install SSH Server di Ubuntu / Debian dengan OpenSSH

  3. Cara Mengatur Server Email dengan Mail-in-a-Box di Ubuntu

  1. Cara Setup Server FTP dengan VSFTPD di Debian 9

  2. Cara Install Puppet 6.x Di Ubuntu 18.04 / Ubuntu 16.04 &Debian 9

  3. Cara Menginstal Spamassassin dengan Postfix dan Dovecot di Server Ubuntu/Debian

  1. Cara Mengatur Server OpenVPN di Debian 9

  2. Cara Menginstal Server Email dengan ISPConfig di Debian 10

  3. Cara Mengatur Server Mail dengan PostfixAdmin di Debian 11