GNU/Linux >> Belajar Linux >  >> Cent OS

Cara Mengamankan Server Email Dari Peretasan dengan VPN (CentOS/RHEL)

Dalam tutorial ini, saya akan membagikan tips dan trik saya untuk mengamankan server email CentOS/RHEL 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 berdiri dan berjalan. Jika tidak, ikuti salah satu tutorial di bawah ini untuk menyiapkan server email Anda sendiri.

  • Cara Mudah Mengatur Server Email Berfitur Lengkap di CentOS 8 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 CentOS

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 publik dari nama host server email Anda.

  • Mengatur Response Policy Zone (RPZ) di BIND Resolver di CentOS/RHEL

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 (CentOS/RHEL), jalankan perintah berikut di server email. Ganti 12.34.56.78 dengan alamat IP server VPN.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="12.34.56.78" accept'

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 firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="IP-address-of-the-other-web-server" accept'

Muat ulang firewalld agar perubahan diterapkan.

sudo systemctl reload firewalld

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. Pelaku jahat dapat melakukan serangan brute force di port 587 dan 465.

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

postfix/smtps/smtpd[18071]:Koneksi TLS anonim dibuat dari tidak dikenal[92.118.38.56]:TLSv1.2 dengan cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bit)postfix/smtps/smtpd[ 18071]:peringatan:tidak diketahui[92.118.38.56]:Otentikasi SASL LOGIN gagal:UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:koneksi terputus setelah AUTH dari tidak dikenal[92.118.38.56]postfix/smtps/smtpd[18071]:putuskan sambungan dari tidak dikenal[ 92.118.38.56] ehlo=1 auth=0/1 rset=1 perintah=2/3postfix/smtps/smtpd[18071]:terhubung dari tidak dikenal[92.118.38.56]postfix/smtps/smtpd[18071]:Koneksi TLS anonim dibuat dari tidak diketahui[92.118.38.56]:TLSv1.2 dengan sandi ECDHE-RSA-AES256-GCM-SHA384 (256/256 bit)postfix/smtps/smtpd[18071]:peringatan:tidak diketahui[92.118.38.56]:otentikasi SASL LOGIN gagal:UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:koneksi terputus setelah AUTH dari tidak dikenal[92.118.38.56]postfix/smtps/smtpd[18071]:putuskan sambungan dari tidak dikenal[92.118.38.56] ehlo=1 auth=0/1 rset=1 perintah=2/3postfix/smtps/smtpd[18071]:sambungkan dari tidak diketahui n[92.118.38.56]postfix/smtps/smtpd[18071]:Koneksi TLS anonim dibuat dari tidak dikenal[92.118.38.56]:TLSv1.2 dengan cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bit)postfix/smtps /smtpd[18071]:peringatan:tidak diketahui[92.118.38.56]:Otentikasi SASL LOGIN gagal:UGFzc3dvcmQ6postfix/smtps/smtpd[18071]:koneksi terputus setelah AUTH dari tidak dikenal[92.118.38.56]postfix/smtps/smtpd[18071]:putuskan sambungan dari tidak diketahui[92.118.38.56] ehlo=1 auth=0/1 rset=1 perintah=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.

Pada CentOS/RHEL, jalankan dua perintah berikut untuk menonaktifkan imap , imaps , smtp-submission , smtps , pop3s dan pop3s layanan.

sudo firewall-cmd --permanent --remove-service={smtp-submission,smtps,imap,imaps,pop3,pop3s}sudo firewall-cmd --permanent --remove-port={587/tcp,465 /tcp,143/tcp,993/tcp,110/tcp,995/tcp}

Jika Anda melihat peringatan seperti Warning: NOT_ENABLED: smtps , Anda dapat mengabaikan peringatan tersebut. Muat ulang firewalld agar perubahan diterapkan.

sudo systemctl reload firewalld

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.domain-anda.com.conf

Tambahkan baris berikut di server {...} konteks. Ini hanya akan mengizinkan alamat IP 12.34.56.78 untuk mengakses email web, dan menolak semua alamat IP lainnya.

izinkan 12.34.56.78;tolak semua;

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

izinkan 12.34.56.78;izinkan 12.34.56.79;tolak semua;

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 di /etc/httpd/conf.d/ direktori, seperti

sudo nano /etc/httpd/conf.d/mail.domain-anda.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.

  Memerlukan ip 12.34.56.78 

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

  Memerlukan ip 12.34.56.78 12.34.56.79 

Simpan dan tutup file. Kemudian uji konfigurasi Apache.

sudo apachectl -t

Jika sintaksnya Ok, muat ulang Apache agar perubahan diterapkan.

sudo systemctl reload httpd

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# nonaktifkan daftar putih di virtual hosted Nginx -i 's/deny all;/#deny all;/g' /etc/nginx/conf.d/mail.domain-anda.com.confsystemctl muat ulang nginx# perbarui Sertifikat TLScertbot perbarui --quiet# aktifkan daftar putih -i 's/#deny all;/deny all;/g' /etc/nginx/conf.d/mail.domain-anda.com.confsystemctl muat ulang nginx

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

#! /bin/bash# nonaktifkan daftar putih di Apache virtual hosted -i 's/Require ip/#Require ip/g' /etc/httpd/conf.d/mail.your-domain.com-le-ssl.confsystemctl reload Apache2 # perbarui sertifikat TLScertbot perbarui --quiet# aktifkan daftar putih -i 's/#Require ip/Require ip/g' /etc/httpd/conf.d/mail.your-domain.com-le-ssl.confsystemctl reload Apache2 

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

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

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 Menyiapkan Otentikasi Kunci Publik SSH di CentOS/RHEL
  • Mengatur Otentikasi Dua Faktor SSH (2FA) di Server CentOS/RHEL

Cent OS
  1. Cara Setup SysLog Server di CentOS 7 / RHEL 7

  2. Cara Install Puppet 6.x Di CentOS 7 / RHEL 7

  3. Bagaimana cara mengirim email dengan server CentOS saya?

  1. Cara menginstal server vnc di RHEL 8 / CentOS 8

  2. Cara Memasang Wayang Di CentOS 8 / RHEL 8

  3. Cara Setup Server NFS di CentOS 7 / RHEL 7

  1. Cara menginstal Nextcloud di server RHEL 8 / CentOS 8

  2. Cara menginstal OwnCloud di server RHEL 8 / CentOS 8

  3. Cara menginstal server PostgreSQL di RHEL 8 / CentOS 8