10 Langkah untuk Memeriksa Server Zimbra terhadap Kemungkinan Peretasan

Para peretas kerap memasang webshell pada sistem Zimbra yang tidak diinstal patch keamanan dan kemudian menunggu beberapa waktu sebelum akhirnya menyalahgunakan sistem yang telah disusupi itu. Khususnya pada sistem yang terlambat mendapatkan patch keamanan kritis, mungkin segalanya terlihat baik-baik saja, padahal seorang peretas telah mendapatkan akses ke sistem tersebut, namun belum melakukan aktivitas jahat lainnya.

Untuk memeriksa apakah kerentanan tersebut berpotensi dimanfaatkan pada server yang tidak diinstal patch, carilah entri log berikut pada server mailbox.

1. Pemeriksaan Integritas

Skrip dalam artikel ini memungkinkan administrator Zimbra untuk membuat checksum dari semua file dalam instalasi Zimbra. Keluaran dari skrip ini dapat digunakan untuk mengidentifikasi perubahan yang tidak diinginkan dan file-file baru yang dibuat. Perubahan seperti itu dapat disebabkan oleh peretas misalnya.

Anda dapat menggunakan skrip ini secara proaktif dengan menjadwalkannya dalam cron job dan menyimpan hasilnya ke server remote. Atau jika Anda mencurigai adanya peretasan, Anda dapat menjalankan skrip ini terhadap snapshot server Zimbra Anda (jika ada) dan membandingkannya dengan hasil dari skrip pada instansi yang berjalan.

Sebagai pengguna root, buatlah file /usr/local/sbin/zimbra-checksums dengan konten berikut:


#!/bin/bash DIR='/tmp' mkdir $DIR/CHECKSUMS dt=`date +'%m-%d-%Y-%T'` HN=`hostname` echo "Mengambil folder untuk dicari.." /bin/ls -la /opt/zimbra/ | awk '{print $9}' | egrep -v 'backup|log|db|index|store|data|zmstat' | sed '1,3d' > $DIR/CHECKSUMS/zimdir echo "Membuat daftar file.." for i in `cat $DIR/CHECKSUMS/zimdir` do find /opt/zimbra/"$i" -mount -type f | egrep -v "/opt/zimbra/backup/|/opt/zimbra/data/|/opt/zimbra/zmstat/" >> $DIR/CHECKSUMS/sha1files_"$HN"_"$dt".txt done sed -i 's/^/"/ ; s/$/"/' $DIR/CHECKSUMS/sha1files_"$HN"_"$dt".txt echo "Menghitung checksum.. (Ini bisa memakan waktu)" cat $DIR/CHECKSUMS/sha1files_"$HN"_"$dt".txt | tee -a /tmp/asdf.log | xargs sha1sum >> $DIR/CHECKSUMS/sha1sum_zimbra_"$HN"_"$dt".log echo "Selesai" exit

Jalankan sebagai berikut:


chmod +x /usr/local/sbin/zimbra-checksums /usr/local/sbin/zimbra-checksums

Membandingkan Hasil Hasil dari skrip dapat ditemukan di folder /tmp/CHECKSUMS. Contoh:


/tmp/CHECKSUMS/sha1sum_zimbra_zimbra10.example.com_10-11-2022-08:44:06.log


cat /tmp/CHECKSUMS/sha1sum_zimbra_zimbra10.example.com_10-11-2022-08\:44\:06.log | sort -k2 > /tmp/resultY cat /tmp/CHECKSUMS/sha1sum_zimbra_zimbra10.example.com_10-10-2022-13\:21\:01.log | sort -k2 > /tmp/resultX diff -Naur /tmp/resultX /tmp/resultY

Perintah diff akan menampilkan perubahan checksum dan file-file baru yang dibuat.

2. Periksa file-file tidak dikenal di folder webapps

Carilah file-file tidak dikenal di folder webapps, terutama yang berakhiran .jsp, .js, .sh atau .py: /opt/zimbra/jetty/webapps/zimbra/ /opt/zimbra/jetty/webapps/zimbraAdmin/ File-file ini mungkin memiliki nama acak, atau nama yang menyesatkan seperti security.jsp. Untuk menemukan file yang dibuat dalam 60 hari terakhir, jalankan:


find /opt/zimbra/jetty/webapps/ -type f -newerct "-60 days"

3. Periksa file-file tidak dikenal di tempat lain

Mungkin ada file yang ditempatkan di direktori lain, seperti /tmp/, /opt/zimbra/log/, dll. Periksa lokasi-lokasi ini untuk file dengan nama tidak lazim seperti amd64, libd, dll. Misalnya, untuk mencari file executable di bawah /opt/zimbra/ yang diubah dalam 60 hari terakhir, jalankan:

find /opt/zimbra/ -executable -type f -newerct "-60 days"

Untuk memeriksa semua file baru, namun mengecualikan backup, store dan data:


find /opt/zimbra/ \( -path /opt/zimbra/backup -o -path /opt/zimbra/store -o -path /opt/zimbra/db/data \) -prune -o -newerct "-60 days"

(Perhatikan bahwa ct digunakan bukan mt yang biasa, karena waktu modifikasi dapat dengan mudah diubah)

4. Periksa entri crontab baru untuk pengguna zimbra dan root

Peretas sering memasang skrip jahat melalui entri crontab untuk mendapatkan akses berkelanjutan ke sistem. Periksa entri crontab untuk memastikan tidak ada yang mencurigakan. Contoh perintab:

  • sudo crontab -l -u zimbra untuk melihat crontab pengguna zimbra
  • sudo crontab -l -u root untuk melihat crontab pengguna root
  • Periksa setiap baris entri crontab, jika ada yang mencurigakan seperti mengeksekusi skrip atau binary yang tidak dikenal, kemungkinan itu adalah upaya peretasan.

5. Periksa akun admin tidak dikenal

Peretas dapat membuat akun admin baru untuk mendapatkan kontrol penuh atas sistem Zimbra. Periksa daftar akun admin untuk mencari yang tidak dikenal. Contoh perintah:

  • zmprov -l gacf untuk melihat daftar lengkap akun admin
  • Periksa setiap baris, jika ada akun yang tidak dikenal atau mencurigakan, kemungkinan itu dibuat oleh peretas.

6. Periksa Zimlet tidak dikenal

Zimlet adalah plugin untuk Zimbra yang dapat membahayakan jika dieksploitasi. Periksa untuk Zimlet yang tidak dikenal atau mencurigakan. Contoh perintah:

  • zmprov -l gc untuk melihat daftar Zimlet terinstal
  • Periksa setiap baris, jika ada Zimlet yang tidak dikenal atau mencurigakan, kemungkinan itu adalah upaya peretasan.
  • zmprov gdl /opt/zimbra/lib/ext/zimlets/ untuk melihat detail tentang Zimlet terinstal

7. Pastikan paket Pax telah diinstal

Pax adalah utilitas pengarsipan standar di Zimbra yang dibutuhkan untuk operasi normal. Jika tidak ada, mungkin telah dimodifikasi oleh peretas. Contoh perintah:

  • rpm -qa | grep pax untuk mengecek apakah pax terinstal
  • Jika tidak ada output, instal dengan zmrpmrebuild -a pax

8. Pastikan paket unrar tidak diinstal dan menggunakan 7zip

Unrar memiliki kerentanan, Zimbra menggunakan 7zip sebagai gantinya. Periksa agar unrar tidak terinstal. Contoh perintah:

  • rpm -qa | grep unrar untuk memeriksa instalasi unrar
  • rpm -e unrar untuk menghapus jika terinstal
  • rpm -qa | grep p7zip untuk memastikan 7zip terinstal

9. Periksa konfigurasi sshd, validasi file authorized_keys

Konfigurasi SSH yang tidak aman dapat membuka celah bagi peretas. Periksa konfigurasi dan file authorized_keys. Contoh perintah:

  • cat /etc/ssh/sshd_config untuk melihat konfigurasi sshd
  • Pastikan hanya protokol 2 yang diizinkan dan root login dimatikan
  • cat ~user/.ssh/authorized_keys untuk melihat kunci akses SSH
  • Periksa setiap baris, jika ada kunci tidak dikenal kemungkinan dari peretas

10. Periksa port terbuka dan konfigurasi firewall

Port terbuka yang tidak perlu meningkatkan risiko serangan. Pastikan hanya port yang dibutuhkan yang terbuka dan firewall dikonfigurasi dengan benar. Contoh perintah:

  • netstat -tulpn untuk melihat daftar port TCP/UDP yang terbuka
  • iptables -L atau firewall-cmd --list-all untuk melihat aturan firewall
  • Periksa port terbuka, tutup yang tidak dibutuhkan
  • Periksa aturan firewall, buka hanya port yang dibutuhkan

referensi: Barry De Graaff

0 Komentar