Meningkatkan Keamanan Pada Server cPanel

Halo Sobat AntMediaHost

Pada tutorial kali ini membahas tentang bagaimana cara meningkatkan keamanan pada server yang menggunakan cPanel, seperti diketahui bersama berdasarkan rilis yang sudah diterbitkan oleh tim support cPanel bahwa terdapat celah keamanan dengan detail sebagai berikut :

  • Problem RPMs di dalam OpenSSH binaries
  • Problem libkeyutils directories
  • Problem root-level di dalam server

Dalam kasus ini, Trojan horse (Trojan) memengaruhi file yang berisi direktori dan di dalam binari ini. Kami sangat menyarankan agar penyedia hosting dan administrator sistem menggunakan dokumen ini untuk menentukan status keamanan sistem.

Catatan:
Direktori OpenSSH Binaries dan libkeyutils yang terpengaruh menghasilkan lalu lintas jaringan yang serupa.

Jika Sobat mengalami masalah saat melakukan pemeriksaan ini atau Sobat mencurigai adanya penyusup ke server Sobat, Segera hubungi penyedia hosting atau staff sistem administrator Sobat untuk mendapatkan bantuan.

Catatan :

  • Untuk memeriksa sistem Sobat untuk yang tidak terkait dengan OpenSSH Binaries dan direktori libkeyutils, sobat bisa melakukan pengecekan Keamanan ke dalam WHM, dan lebih tepatnya pada detail berikut : (WHM >> Home >> Security Center >> Security Advisor).
  • Kami sangat menyarankan Sobat untuk membaca dokumentasi Tips Membuat Server Sobat Lebih Aman.

Sistem yang dapat di susupi

Open SSH rpms

Pada sistem CentOS dan Red Hat® Enterprise Linux®, menentukan bahwa binari OpenSSH berikut berisi Trojan Ebury :

  • The sshd binary.
  • The ssh binary.
  • The ssh-keygen binary.
  • The ssh-askpass binary.

Kode Trojan ini mengumpulkan kredensial otentikasi untuk koneksi jaringan masuk dan keluar, serta kunci SSH yang dihasilkan oleh binari ini.

Gunakan pemeriksaan berikut untuk menentukan apakah Trojan mengkompromikan binari OpenSSH sistem Sobat.

Memeriksa suatu proses berbahaya

Untuk melakukan pengecekan suatu proses berbahaya di dalam server, silahkan jalankan perintah berikut :

netstat -plan | grep atd

Perintah ini tidak mengembalikan output pada sistem apabila tidak susupi. Pada sistem yang disusupi, perintah ini mengembalikan output yang menyerupai contoh berikut :

unix 2 [ ACC ] STREAM LISTENING 103713 8119/atd @/tmp/dbus-ZP7tFO4xsL

Pengecekan logs RPM

Untuk memeriksa log perubahan pada RPM, silahkan jalankan perintah berikut :

rpm -q –changelog openssh-5.3p1-209.el6 | head -10

Dalam contoh ini, openssh-5.3p1-209.el6 mewakili biner OpenSSH RPM yang ingin Sobat periksa.

RPM yang tidak disusupi berisi tanda tangan, Sementara untuk RPM yang disusupi tidak berisi entri.

Pengecekan logs sistem yum

Buka file /var/log/yum.log sistem Sobat dengan editor teks dan cari binari OpenSSH. Isi file menyerupai contoh berikut :

Jika file /var/log/yum.log sistem Sobat tidak berisi RPM OpenSSH, server mungkin dalam keadaan terganggu yang harus segera dilakukan pengecekan.

Utilitas libkeysutils

Untuk memeriksa utilitas libkeysutils Sobat untuk Ebury Trojan, lakukan langkah-langkah berikut :

Penting :

  • Kami menyarankan Sobat melakukan setiap langkah berikut untuk sepenuhnya menentukan status server Sobat.
  • Arsitektur server Sobat menentukan output yang Sobat terima saat menjalankan perintah di bagian ini. Sistem 32-bit menggunakan lib. Sistem 64-bit menggunakan /lib64. Library /lib64 juga dapat berisi direktori lib dengan library 32-bit untuk tujuan kompatibilitas. Untuk menemukan arsitektur server Sobat, jalankan perintah arch :

[pengguna@host ~]$ arch

Outputnya akan menyerupai salah satu contoh berikut :

  • Server 64-bit — x86_64
  • Server 32-bit — i386

Verifikasi paket keyutils-libs

Perubahan tidak boleh terjadi pada sistem Sobat tanpa persetujuan Sobat. Untuk memeriksa perubahan pada sistem Sobat, jalankan salah satu dari perintah berikut :

1 rpm -V keyutils-libs atau
2 netstat -plan | grep atd

Perintah ini tidak mengembalikan output pada sistem yang tidak dikompromi. Pada sistem yang disusupi, perintah ini mengembalikan output berikut :

….L… /lib64/libkeyutils.so.1

Catatan : Operator sistem kontrol Ebury sering menambal jumlah MD5 dari paket libkeyutils1 agar sesuai dengan paket lama, sehingga pemeriksaan MD5 mungkin tidak mengungkapkan paket yang disusupi.

Periksa sumber instalasi file

Jika perintah pada Langkah 1 mengembalikan output, verifikasi apakah RPM menyediakan file. Untuk melakukannya, jalankan perintah berikut :

rpm -qf /lib64/libkeyutils.so.1

Catatan :
Dalam contoh ini, /lib64/libkeyutils.so.1 mewakili file yang akan diverifikasi.

Pada sistem yang tidak disusupi, outputnya menyerupai contoh berikut :

keyutils-libs-1.4-5.el6.i686

Pada sistem yang disusupi, outputnya menyerupai contoh berikut :

file /lib64/tls/libkeyutils.so.1.5 is not owned by any package

Verifikasi file yang tertaut ke file libkeyutils.so.1

Untuk melihat file mana yang tertaut ke file libkeyutils.so.1, jalankan perintah berikut :

ls -l /lib64/libkeyutils.so.1

Pada sistem yang tidak dikompromi, output akan menyerupai contoh berikut :

lrwxrwxrwx 1 root root 18 Feb 20 12:15 /lib64/libkeyutils.so.1 -> libkeyutils.so.1.3*

Pada sistem yang disusupi, output akan mengembalikan satu atau lebih file berikut :

1 libkeyutils.so.1.9
2 libkeyutils.so.1.3.2
3 libkeyutils-1.2.so.2

Periksa string untuk semua library libkeyutils.* untuk item yang berhubungan dengan jaringan

File libkeyutils.so.1.3 default tidak boleh berisi string berikut :

1  connect
2  socket
3  inet_ntoa
4  gethostbyname

Untuk memeriksa sistem Sobat untuk string ini, jalankan perintah berikut :

strings /lib64/libkeyutils.so.1.3 | egrep’connect|socket|inet_ntoa | gethostbyname’

Perintah ini tidak mengembalikan output pada sistem yang tidak dikompromi. Pada sistem yang disusupi, perintah ini mengembalikan output berikut :

1  connect
2  socket
3  inet_ntoa
4  gethostbyname

Periksa proses sshd

Pada server yang disusupi, proses sshd menggunakan segmen memori bersama.

Untuk memeriksa apakah ada proses sshd yang saat ini menggunakan segmen memori bersama, jalankan perintah berikut :

ipcs -mp

1   —— Shared Memory Creator/Last-op ——–
2   shmid owner cpid lpid

Pada server yang disusupi, output akan menyerupai contoh berikut :

1   —— Shared Memory Creator/Last-op ——–
2   shmid owner cpid lpid
3   1769472 root 1975 1975
4   2129921 root 2931 2940
5   1736706 root 1965 1965
6   2162691 root 2931 2940
7   2195460 root 2931 2940
8   2228229 postgres 4011 6813

Jika ada program yang menggunakan segmen memori bersama, jalankan perintah ps, misalnya :

ps aux | grep 1975

Perintah ini memeriksa apakah salah satu item dalam kolom cpid dan lpid sesuai dengan proses sshd. Outputnya akan menyerupai contoh berikut :

1   root 1975 0.0 0.0 64080 1172 ? Ss Okt17
2   0:00 /usr/sbin/sshd

Pantau lalu lintas port 53 UDP keluar

Kami menyarankan Sobat menggunakan alat pengambilan data jaringan, seperti utilitas tcpdump, untuk memantau Protokol Datagram Pengguna (UDP) keluar pada port 53. Utilitas ini mengembalikan lalu lintas DNS antara server Sobat dan resolver lokal yang berada di /etc/resolv Anda berkas .conf

Untuk memantau UDP keluar pada port 53, jalankan perintah berikut :

[root@host ~]# tcpdump -Annvvs 1500 -i any udp and dst port 53

Pada server yang tidak disusupi, output akan menyerupai contoh berikut :

1 22:18:22.038264 ARP, Request who-has 10.147.0.62 tell 10.147.0.64, length 46
2 22:18:22.244856 ARP, Request who-has 10.147.0.64 tell 10.147.0.61, length 46
3 22:18:22.245149 ARP, Request who-has 10.147.0.61 tell 10.147.0.64, length 46
4 22:18:22.888851 b4:99:ba:02:18:66 > Broadcast, ethertype Unknown (0xcafe), length 90:
5            0x0000: 0500 0100 0900 0000 0100 ffff 0c00 0002 ….. ………..
6            0x0010: 4c00 0000 0000 0000 8300 0080 0000 0000 L……………

Pada server yang disusupi, output akan menyerupai contoh berikut :

1      07:54:48.233159 IP (tos 0x0, ttl 64, id 31281, offset 0, flags [DF],
2      proto: UDP (17), length: 91) 1.2.3.4.43089 > 72.156.139.154.53:
3      [bad udp cksum d7a9!] 4619+ A?
4      6196g8f43a4facd3561de4gec736fb.5.5.5.5. (63)

Penting :

Contoh paket di atas menunjukkan bahwa server cPanel di 1.2.3.4 mengirimkan paket UDP pada port 53 ke host di 72.156.139.154. Sobat akan melihat kueri palsu berikut dari contoh di atas:

6196g8f43a4facd3561de4gec736fb.5.5.5.5{

String 6196g8f43a4facd3561de4gec736fb mewakili sandi yang disandikan, dan 5.5.5.5 mewakili alamat IP yang Sobat gunakan untuk masuk ke server. Output ini menunjukkan bahwa host jahat di 72.156.139.154 menangkap informasi berikut :

  • Alamat IP yang Sobat gunakan untuk masuk ke server.
  • Kata sandi masuk.

Verifikasi bahwa setiap library yang ditautkan sshd adalah milik paket yang dikenal.

Untuk memeriksa library yang ditautkan oleh daemon sshd, jalankan perintah berikut:

ldd /usr/sbin/sshd

Outputnya akan menyerupai contoh berikut :

1       libnspr4.so => /lib64/libnspr4.so (0x00007fcb04a30000)
2      libfreebl3.so => /lib64/libfreebl3.so (0x00007fcb0482d000)
3      libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fcb0461d000)
4      libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fcb04419000)
5      libattr.so.1 => /lib64/libattr.so.1 (0x00007fcb04213000)
6      libelf.so.1 => /lib64/libelf.so.1 (0x00007fcb03ffb000)
7      libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fcb03dea000)

Untuk memverifikasi bahwa library ini milik paket yang valid, jalankan perintah berikut :

rpm -qf /lib64/libfipscheck.so.1

Outputnya akan menyerupai contoh berikut :

fipscheck-lib-1.2.0-7.el6.x86_64

Lakukan pemeriksaan LD_DEBUG

Untuk memeriksa library dengan program LD_DEBUG, yang mencari Indikator yang di susupi (IOC), jalankan perintah berikut :

LD_DEBUG=symbols /bin/true 2>&1 | egrep ‘/lib(keyutils|ns[25]|pw[35]|s[bl]r).’

Program akan mengembalikan semua indikator yang disusupi.

Lakukan pemeriksaan objdump

Perintah objdump melaporkan informasi tentang file objek. Sobat dapat menggunakan perintah ini untuk menentukan apakah file yang diperlukan menampilkan karakteristik atau perilaku yang mencurigakan

Untuk memeriksa library dengan program LD_DEBUG, jalankan perintah berikut, di mana /path/to/libkeyutils.so.1 mewakili path lengkap ke file yang dicurigai :

objdump -x /path/to/libkeyutils.so.1 | grep NEEDED | grep -v -F -e libdl.so -e libc.so

Program akan mengembalikan frase NEEDED jika ada indikator yang disusupi.

root-level compromises

Periksa file library yang mencurigakan

Misalnya, file /lib64/libpw5.so adalah bagian dari Ebury Rootkit, dan sistem bersih biasanya tidak berisi file ini. File itu mungkin menggunakan nama lain yang analisis We Live Security dari daftar dokumen Ebury Rootkit.

File library biasanya menggunakan kurang dari 10Kb. File library apa pun yang menggunakan lebih dari 10Kb sangat menunjukkan file yang disusupi.

Untuk memeriksa keberadaan file library /lib64/libpw5.so, jalankan perintah berikut :

ls /lib64/libpw5.so

Perintah ini mengembalikan output berikut ketika file tidak ada :

/bin/ls: cannot access /lib64/libpw5.so: No such file or directory

Pada sistem yang disusupi, perintah ini mengembalikan output yang menyerupai contoh berikut :

/lib64/libpw5.so

Selain itu, sistem menggunakan yum atau rpm untuk menginstal sebagian besar file library. Jika kami meminta database RPM untuk file /lib64/libpw5.so dan mengembalikan kesalahan Not Owned By Any Package, maka server mungkin disusupi. .

Penting :
Varian baru dari Rootkit dapat memalsukan manajemen paket RPM. Kami menyarankan Sobat memverifikasi hash file dengan petunjuk di bagian berikut :

1       # rpm -qf /lib64/libpw5.so
2      file /lib64/libpw5.so is not owned by any package

Periksa hash file

Jalankan hash sha256 file melalui situs web VirusTotal untuk memeriksanya terhadap pemindaian file yang sama yang sudah ada sebelumnya.

Misalnya, untuk menghasilkan hash sha256 untuk file /lib64/libpw5.so, jalankan perintah berikut :

1      # sha256sum /lib64/libpw5.so
2      sha256sum: 970b49c16eebd558ac8984643f3763e76a52c9be4118f9e5830b8f5c406414fc

Kemudian, navigasikan ke situs web https://www.virtustotal.com/en/file/hash, di mana hash mewakili hash file. Dalam contoh ini, Anda akan menavigasi ke situs web berikut: https://www.virustotal.com/en/file/970b49c16eebd558ac8984643f3763e76a52c9be4118f9e5830b8f5c406414fc/analysis/

Situs web harus mengembalikan hasil yang serupa dengan output berikut :

1 SHA256: 970b49c16eebd558ac8984643f3763e76a52c9be4118f9e5830b8f5c406414fc
2 File name: libpw5.so
3 Detection ratio: 3 / 58

Hasil ini menunjukkan bahwa setidaknya 3 dari 5 sistem antivirus mendeteksi file ini sebagai yang mencurigakan.

Catatan:
Situs web VirusTotal tidak berisi hasil dari setiap file yang berpotensi disusupi. Kami sangat menyarankan Sobat untuk berkonsultasi dengan spesialis keamanan yang berkualifikasi.

Periksa binari yang saling terkait

Periksa binari di server Sobat untuk mendeteksi apakah mereka terkait dengan file yang mencurigakan.

Misalnya, perintah berikut mendeteksi apakah binari terjalin dengan file /lib64/libpw5.so.

# lsof | grep /lib64/libpw5.so

Perintah akan menghasilkan hasil yang mirip dengan output berikut :

1   auditd 1577 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
2   sshd 2126 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
3   exim 2622 mailnull mem REG 8,3 34536 16257536 /lib64/libpw5.so
4   pure-ftpd 2821 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
5   pure-auth 2823 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
6   cpsrvd 2887 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
7   httpd 3063 nobody mem REG 8,3 34536 16257536 /lib64/libpw5.so
8   pop3-logi 3093 dovenull mem REG 8,3 34536 16257536 /lib64/libpw5.so
9   imap-logi 3094 dovenull mem REG 8,3 34536 16257536 /lib64/libpw5.so
10  lmtp 3120 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
11   named 20066 named mem REG 8,3 34536 16257536 /lib64/libpw5.so
12  dnsadmin 21983 root mem REG 8,3 34536 16257536 /lib64/libpw5.so

Dalam contoh ini, baris pertama menunjukkan bahwa file /lib64/libpw5.so terjalin dengan program auditd. Program auditd, atau Sistem Audit Linux, menulis catatan audit ke disk.

Jika Sobat menjalankan perintah lsof -p 1577, yang memeriksa PID program auditd, Sobat akan melihat hasil seperti berikut :

1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
2 auditd 1577 root cwd DIR 8,3 4096 2 /
3 auditd 1577 root rtd DIR 8,3 4096 2 /
4 auditd 1577 root txt REG 8,3 104544 41681130 /sbin/auditd
5 auditd 1577 root mem REG 8,3 88600 16252994 /lib64/libz.so.1.2.3
6 auditd 1577 root mem REG 8,3 20024 16253063 /lib64/libdl-2.12.so
7 auditd 1577 root mem REG 8,3 1924768 16252941 /lib64/libc-2.12.so
8 auditd 1577 root mem REG 8,3 596864 16253075 /lib64/libm-2.12.so
9 auditd 1577 root mem REG 8,3 44472 16253350 /lib64/librt-2.12.so
10 auditd 1577 root mem REG 8,3 143280 16252965 /lib64/libpthread-2.12.so
11 auditd 1577 root mem REG 8,3 145864 16252997 /lib64/libaudit.so.1.0.0
12 auditd 1577 root mem REG 8,3 113904 16253078 /lib64/libnsl-2.12.so
13 auditd 1577 root mem REG 8,3 40792 16253035 /lib64/libwrap.so.0.7.6
14 auditd 1577 root mem REG 8,3 34536 16257536 /lib64/libpw5.so
15 auditd 1577 root mem REG 8,3 1971488 50333097 /usr/lib64/libcrypto.so.1.0.1e
16 auditd 1577 root mem REG 8,3 159312 16257525 /lib64/ld-2.12.so
17 auditd 1577 root 0u CHR 1,3 0t0 3857 /dev/null
18 auditd 1577 root 1u CHR 1,3 0t0 3857 /dev/null
19 auditd 1577 root 2u CHR 1,3 0t0 3857 /dev/null
20 auditd 1577 root 3u unix 0xffff8804384f1c00 0t0 14145 @/tmp/dbus-JFgUwQ7Nx3

Baris terakhir mewakili koneksi soket di direktori sementara, yang sangat mencurigakan. Jika kita memeriksa nama itu dengan perintah netstat, kita melihat bahwa ia mendengarkan koneksi :

1 # netstat -nap | grep “@/tmp/dbus-JFgUwQ7Nx3”
2 unix 2 [ ACC ] STREAM LISTENING 14145 1577/auditd @/tmp/dbus-JFgUwQ7Nx3

Tidak ada alasan untuk program auditd untuk mempertahankan koneksi soket ke dunia luar. Kemungkinan dalam kasus ini, peretas memodifikasi biner ini cukup untuk mencari kunci SSH atau kata sandi root, yang kemudian dikirim oleh biner ke server Command and Control untuk digunakan nanti.

FAQ

Bagaimana akses root berbeda dari web/server yang disusupi ?

Penyusupan situs terjadi pada web/server tertentu dan peretasan hanya dapat mencuri informasi dari web/server tersebut, bukan dari web/server. root yang disusupi memaparkan seluruh server terhadap pencurian, seperti kunci SSH dan kata sandi. Bisa juga menyebabkan kerusakan yang cukup besar pada server sehingga tidak bisa lagi booting.

Tetapi bagaimana dengan peretasan symlink yang dapat meretas banyak web/server ?

Sebagian besar ahli tidak menganggap peretasan symlink itu sendiri sebagai root yang disusupi, meskipun mereka terlihat seperti telah meretas banyak akun. Server itu sendiri biasanya tidak dalam bahaya.

Untuk informasi lebih lanjut tentang cara mencegah peretasan symlink, baca dokumentasi Perlindungan Kondisi Ras Symlink.

Saya telah melihat symlink yang dapat mengambil file /etc/passwd. Bukankah itu akses root yang berbahaya ?

Tidak. File /etc/passwd harus dapat dibaca, tetapi ini tidak mewakili akses root. Sistem menyimpan hash kata sandi di file /etc/shadow, yang tidak dapat Sobat lihat begitu saja dengan peretasan symlink. Definisi lebih lanjut dari penyusupan tingkat root adalah di mana pengguna yang tidak sah mendapatkan akses ke sana. Sobat mungkin tidak kehilangan banyak dari serangan tertentu, tetapi akses yang tidak sah memiliki potensi pelanggaran lebih lanjut.

Setiap rootkit memiliki setidaknya 2 tujuan :

  • Menyembunyikan peretas.
  • Memberikan akses ke peretas.

Demikian untuk pembahasan cara meningkatkan keamanan pada server cPanel, Selamat mencoba.