Mengamankan SMTP Haraka dengan TLS Authentication (auth_flat_file)

Bagi teman-teman yang merupakan system administrator email server mungkin merasa bahwa sangat tidak mudah dalam mengelola email server, banyak yang perlu dilakukan untuk membuat/setup email server yang powerfull. Apapun basis email server yang digunakan, tetap saja membutuhkan effort yang besar, terutama dari sisi keamanan. Salah setup, email server bisa-bisa disalahgunakan oleh hacker untuk spamming, phising dan lain-lain.

Salah satu hal yang perlu diperhatikan adalah pembatasan di sisi pengiriman email. Pembatasan yang saya maksud disini adalah untuk bisa mengirimkan email maka user harus login menggunakan username dan password yang sudah terdaftar.

Pada tulisan sebelumnya (Baca : Setup SMTP Haraka di Ubuntu 18.04) SMTP Haraka yang saya setup tidak memiliki pembatasan tersebut, sehingga siapapun bisa saja kirim email menggunakan Haraka yang sudah saya setup tanpa username dan password. Teman-teman bisa test pada Haraka yang sudah di setup sesuai dengan tutorial sebelumnya, setelah itu testing kirim email menggunakan komputer lain dengan perintah berikut :

# swaks -s (ip/hostname Haraka) -t user@gmail.com -f user@domain.com

Apabila hasilnya Message Queued dan email tersebut sampai di tujuan, berarti teman-teman sudah berhasil kirim email tanpa username dan password.

Untuk mengamankan celah tersebut, teman-teman bisa melakukan pembatasan IP yang boleh mengirim email, yaitu dengan cara menambahkan IP yang diperbolehkan pada file smtp.ini.

~Default (Allow All IP)
listen=[::0]:25

~Allow Specific IP (192.168.0.1)
listen=[192.168.0.1]:25

Selain itu, cara lain yang bisa dilakukan adalah mengaktifkan TLS authentication, sehingga semua yang kirim email harus memasukkan username dan password yang sudah ditentukan. Berikut merupakan langkah-langkah untuk mengaktifkan TLS authentication.

Mengaktifkan TLS Authentication

  • Pastikan teman-teman sudah membaca dan melakukan langkah-langkah pada tulisan Setup SMTP Haraka di Ubuntu 18.04
  • Pastikan incoming port 587 server Haraka open. Pastikan server Haraka yang teman-teman gunakan port 587 incomingnya open, karena protkol TLS menggunakan port 587. Untuk memastikan incoming port 587 server Haraka open.
  • Edit file /etc/service/haraka/config/plugins dengan editor nano vim atau yang lainnya dan tambahkan teks berikut pada baris paling akhir
    auth/flat_file
  • Edit file /etc/service/haraka/config/smtp.ini dengan editor nano vim atau yang lainnya dan tambahkan teks berikut pada baris paling akhir
    listen=[::0]:587
  • Buat file auth_flat_file.ini pada direktori /etc/service/haraka/config/ dengan isi sebagai berikut
    [core]
    methods=LOGIN
    
    [users]
    username=password

    Pada bagian [users] isi username dan password sesuai dengan keinginan teman-teman. Username dan password tersebut akan digunakan autentikasi sebelum kirim email

  • Restart service Haraka
    # systemctl restart haraka

Uji Coba Kirim Email via Port 587

  • Pastikan kembali incoming port 587 server Haraka open dengan perintah berikut
    # telnet haraka.colamen.id 587
    Trying 192.168.11.184...
    Connected to 192.168.11.184.
    Escape character is '^]'.
    220 haraka ESMTP Haraka/2.8.25 ready
    ^]
  • Pastikan juga incoming port 25 server Haraka sudah tidak open dengan perintah berikut
    # telnet haraka.colamen.id 25 
    Trying 192.168.11.184...
    telnet: connect to address 192.168.11.184: Connection refused
    telnet: Unable to connect to remote host

    Secara default kiriman email menggunakan port 25 serta tanpa autentikasi. Testing diatas dilakukan untuk memastikan bahwa kiriman email tanpa autentikasi sudah tidak bisa dilakukan.

  • Testing kirim email ke gmail.com menggunakan swaks dengan perintah berikut
    #apt-get install swaks -y
    #swaks -s haraka.colamen.id -p 587 -t muhammadraihan519@gmail.com -f raihan@colamen.id --auth-user=username --auth-password=password
    === Trying haraka:587...
    === Connected to haraka.
    <- 220 haraka ESMTP Haraka/2.8.25 ready
    -> EHLO raihan-VirtualBox
    <- 250-haraka Hello [192.168.70.12]Haraka is at your service.
    <- 250-PIPELINING
    <- 250-8BITMIME
    <- 250-SMTPUTF8
    <- 250-SIZE 0
    <- 250 AUTH LOGIN
    -> AUTH LOGIN
    <- 334 VXNlcm5hbWU6
    -> cmFpaGFu
    <- 334 UGFzc3dvcmQ6
    -> cGFzc3dvcmQ=
    <- 235 2.7.0 Authentication successful
    -> MAIL FROM:<raihan@colamen.id>
    <- 250 sender <raihan@colamen.id> OK
    -> RCPT TO:<muhammadraihan519@gmail.com>
    <- 250 recipient <muhammadraihan519@gmail.com> OK
    -> DATA
    <- 354 go ahead, make my day
    -> Date: Wed, 05 Feb 2020 16:15:59 +0700
    -> To: muhammadraihan519@gmail.com
    -> From: raihan@colamen.id
    -> Subject: test Wed, 05 Feb 2020 16:15:59 +0700
    -> Message-Id: <20200205161559.017834@raihan-VirtualBox>
    -> X-Mailer: swaks v20170101.0 jetmore.org/john/code/swaks/
    -> 
    -> This is a test mailing
    -> 
    -> .
    <- 250 2.0.0 0159G0ew023094-0159G0ex023094 Message accepted for delivery (A4ED1C4C-BA61-4879-A692-6D84A8172211.1)
    -> QUIT
    <- 221 haraka closing connection. Have a jolly good day.
    === Connection closed with remote host.

Leave a Reply

Your email address will not be published. Required fields are marked *