Setiap VPS baru sudah diserang sebelum Anda selesai membaca email selamat datang

2026-09-07

Seorang pelanggan men-deploy server. Mesin itu menyala, mendapat IPv4 publik, dan tidak melakukan apa-apa lagi. Tidak ada domain yang mengarah ke sana, tidak ada yang diberi tahu alamatnya, tidak ada situs dan tidak ada layanan selain daemon SSH bawaan image dasar. Menurut cerita mana pun yang masuk akal, mesin itu seharusnya tidak terlihat. Kami tetap memantau auth log, dan percobaan login root yang gagal pertama datang sekitar sembilan puluh detik setelah instance hidup, dari alamat di negara yang belum pernah didatangi pelanggan itu.

Angka itulah inti tulisan ini. Sembilan puluh detik tidak cukup bagi siapa pun untuk tahu mesin itu ada lewat saluran mana pun yang dipakai manusia. Memang tidak ada yang tahu. Alamat itu ditemukan dengan cara yang sama seperti semua alamat ditemukan sekarang: oleh program yang menyusuri seluruh ruang IPv4 tanpa henti, menyambung ke port 22 di semua yang ada, dan mencoba daftar pendek kredensial umum pada apa pun yang menjawab. Pelanggan itu tidak diincar. Pelanggan itu didata.

Ancamannya bukan yang dibayangkan orang

Tanya seseorang kenapa dia harus mengamankan server, dan yang terbayang adalah penyerang yang menginginkan mesin dia secara khusus, mempelajarinya, mencari jalan masuk. Penyerang seperti itu ada dan jarang, dan hampir tidak ada pembaca tulisan ini yang akan bertemu satu. Trafik yang benar-benar menghantam VPS baru justru kebalikannya di semua sisi. Dia otomatis, tidak pandang bulu, dan berjalan terhadap jutaan host sekaligus. Dia tidak tahu ada apa di mesin Anda dan tidak peduli. Dia sedang menguji hipotesis yang gratis untuk diuji: mungkin yang ini punya root dengan password yang bisa ditebak, atau layanan dengan lubang yang belum ditambal.

Hitungan ekonominya yang membuat ini tidak pernah berhenti. Memindai seluruh ruang alamat itu murah, dan hasil dari menemukan satu host lemah itu nyata: satu mesin untuk mengirim spam, untuk menambang dengan tagihan listrik orang lain, atau untuk menjadi pijakan pemindaian berikutnya. Penyerang cuma butuh tingkat keberhasilan jauh di bawah satu persen untuk untung. Matematika itu tetap dan tidak personal, dan artinya pertanyaan menariknya tidak pernah “apakah saya diincar”. Semua yang punya IP adalah sasaran. Satu-satunya pertanyaan adalah apakah Anda termasuk kumpulan kecil host yang cukup lemah untuk berhasil ditembus.

Apa yang sebenarnya membuat mesin dikuasai

Pembobolan yang berhasil, yang kami lihat maupun yang terus ditulis industri, hampir tidak pernah cerdik. Isinya tiga kegagalan yang sama, berulang-ulang:

Password SSH yang ada di dalam kamus. Login root yang dibiarkan aktif sehingga penyerang cuma perlu menebak separuh pasangan, dan separuh yang berupa username itu konstan di setiap mesin Linux di dunia. Lalu perangkat lunak yang dipasang sekali dan tidak pernah diperbarui, duduk di atas lubang yang sudah ditambal di hulu berbulan-bulan lalu dan kini ada di buku panduan setiap pemindai.

Tidak satu pun dari itu serangan dalam arti yang mengesankan. Itu pintu terbuka. Seluruh pekerjaan pemindai adalah berjalan menyusuri jalan sambil mencoba gagang pintu, dan dia mengambil yang terbuka. Ini kabar baik yang menyamar jadi peringatan, karena artinya pertahanan bukan perlombaan senjata melawan lawan yang cerdas. Pertahanannya adalah menutup pintu, dan pintu tertutup mengalahkan sebagian besar dari apa pun yang akan mengetuk.

Lima penutupan yang mengakhiri ancaman otomatis

Tidak satu pun butuh keahlian keamanan, dan bersama-sama semuanya mengeluarkan sebuah host dari kumpulan yang bisa ditembus.

Autentikasi SSH dengan kunci, bukan password. Kunci adalah rahasia yang cukup panjang sehingga menebaknya bukan strategi yang bisa dijalankan siapa pun. Begitu autentikasi password dimatikan, seluruh kategori trafik penebak kredensial — ketukan sembilan puluh detik itu dan semua sesudahnya — sedang mencoba membuka gembok yang tidak lagi menerima jenis barang yang mereka kirim. Percobaannya terus datang dan terus gagal secara struktural.

Matikan login root langsung. root ada di setiap mesin Linux, jadi membiarkannya bisa login berarti memberi penyerang bagian username secara cuma-cuma. Buat akun biasa, beri kemampuan naik hak saat dibutuhkan, dan matikan login jarak jauh milik root. Sekarang penyerang harus menebak dua hal yang tidak diketahui, bukan satu — dan yang pertama tadinya satu-satunya yang mereka tahu.

Jalankan firewall yang menolak secara bawaan. Sebuah host membuka port untuk tiap layanan, ditambah sisa-sisa dari hal yang dipasang lalu dilupakan. Sikap yang benar adalah tolak-semuanya, lalu buka hanya yang benar-benar Anda layani — biasanya SSH, ditambah port web kalau ada situs berjalan. Port yang tertutup tidak bisa diintip, dan layanan yang Anda lupa sedang berjalan tidak bisa dieksploitasi kalau tidak ada yang bisa menjangkaunya dari luar.

Pasang penguncian di depan SSH. Alat seperti Fail2ban mengawasi auth log dan memblokir alamat mana pun yang gagal autentikasi beberapa kali berturut-turut. Dia mengubah ribuan percobaan brute force menjadi segelintir sebelum sumbernya diputus. Dia berjalan tanpa ditunggui dan tidak perlu diawasi, dan itu penting karena trafik yang dia hadapi juga berjalan tanpa ditunggui dan tidak pernah tidur.

Aktifkan pembaruan keamanan otomatis. Sebagian besar lubang yang dijadikan senjata sudah punya tambalan; mesin yang rentan sekadar mesin yang tidak diperbarui. Perangkat lunak basi adalah tanah gembur yang digali para pemindai. Menyalakan pembaruan keamanan otomatis menutup sebagian besar lubang sebelum ada orang di mesin Anda yang perlu memikirkannya, dan inilah satu langkah yang paling konsisten dilewatkan.

Kelima hal itu bukan program keamanan. Itu garis dasar yang membuat sebuah host membosankan bagi pemindai, dan membosankan itulah seluruh tujuannya. Tetangga Anda yang melewatkan kelimanya adalah yang kena; Anda adalah yang dilewati pemindai.

Paparan yang tidak bisa ditutup firewall mana pun di mesin Anda

Semua di atas mengandaikan mesinnya milik Anda untuk dikeraskan. Di banyak infrastruktur murah, kenyataannya bukan begitu, dan itu sifat keamanan yang jarang diperhitungkan orang. Desain hemat yang umum menumpuk banyak pelanggan ke satu host besar, dipisahkan oleh kontainer. Lebih murah dijalankan, dan artinya proses Anda, rahasia Anda, dan berkas Anda berbagi kernel dengan orang asing. Kalau isolasi antarpenyewa punya cacat — dan container escape adalah kategori yang berulang, bukan hipotesis — radius ledakannya mencakup data Anda, dan tidak satu pun dari lima penutupan di atas menyentuh permukaan itu. Anda sudah mengunci pintu; yang jadi celah adalah dinding bagian dalam gedungnya.

Ini alasan Serverloka tidak memakai desain itu, dan kami pernah menulis soal memberi setiap agen kernelnya sendiri. Tiap mesin adalah instance khusus, terisolasi di batas hypervisor, dengan root dipegang pelanggan dan tanpa beban kerja orang lain yang berbagi kernel. Menjalankannya lebih mahal bagi kami dibanding menumpuk penyewa, dan kami terbuka soal pertukaran itu. Untuk apa pun yang memegang kredensial berjam-jam — dan itu sebagian besar dari yang orang deploy — isolasi bukan tingkat premium. Itu lantai dasarnya.

Bentuk persoalannya

Server baru berada di bawah tembakan otomatis sejak dia punya alamat, dan tembakan itu tidak pernah mereda, karena internet adalah pemindaian yang terus berjalan dan IP Anda salah satu entri yang dilewatinya. Anda tidak bisa menghentikan ketukan itu; ketukan itu tidak ditujukan kepada Anda dan tidak menanggapi apa pun yang Anda lakukan. Yang bisa Anda lakukan adalah memastikan semua yang mengetuk sedang mencoba pintu yang sudah tertutup sebelum paket pertama tiba. Lakukan itu, dan trafiknya tidak hilang — dia cuma berhenti berarti. Log terisi kegagalan yang Anda lewati begitu saja, dan mesinnya terus mengerjakan satu tugas yang membuat Anda men-deploy-nya.

Kembali ke blog