Genap satu bulan yang lalu saya menyeluncuri jagat maya dan menemukan puluhan situs pemerintah baik kementerian, lembaga, badan, kampus, pemerintah daerah, pemerintah kabupaten, hingga pemerintah desa yang gencar mempromosikan Judi Online. Saya sangat prihatin dengan kejadian tersebut dan membuka konsultasi IT security gratis kepada badan-badan pemerintahan untuk meningkatkan keamanan informasi situs dan jaringan mereka.
Sesuai perjanjian, saya tidak akan menyebutkan nama badan dan lembaga-lembaga tersebut, alih-alih saya akan jelaskan beberapa tips yang dapat dengan secara mudah diimplementasikan untuk meningkatkan keamanan informasI situs dan jaringan bagi badan-badan tersebut.
A. Kode
Bagian pertama yang sering jadi titik lemah adalah bagian kode dari situsnya sendiri. Pengembangan software yang asal-asalan tanpa mengindahkan kaidah pemrograman yang baik apalagi kaidah keamanan informasi menimbulkan celah untuk disusupi oleh para hacker (penyerang).
A.1 Versi PHP jaman jebot
Tanpa bermaksud mengecilkan teknologi yang juga sudah mengantarkan saya menjadi web developer ini, PHP menjadi pilihan nomor satu dari bahasa pemrograman situs pemerintahan, bahkan 90 % dari situs pemerintahan di Indonesia dibuat menggunakan teknologi PHP. Tentunya tidak ada yang salah dalam penggunaan teknologi ini, namun harus dipahami bahwa PHP memiliki banyak versi dengan yang paling terakhir adalah versi 8.2 yang diluncurkan pada Desember 2022 lalu. Hanya saja masih banyak situs pemerintahan yang menggunakan versi PHP 5.6 yang notabene-nya diluncurkan pada September 2014 silam hampir sepuluh tahun berlalu dan tidak hanya digunakan pada sistem lama juga sistem-sistem baru berusia 4 bulan.
Organisasi Apache yang meluncurkan PHP bahkan menuliskan bahwa PHP versi 7.4 ke bawah sudah tidak lagi dibuatkan patch-nya sehingga memiliki risiko keamanan. Lantas jika versi 7.4 saja sudah end of life, apa kabar PHP versi 5.6 ?. Tidak sulit untuk mengupdate versi PHP dan banyak framework yang dibuat sangat suportif dengan kenaikan versi PHP sehingga tidak menggunakan versi PHP terbaru seharusnya tidak dapat menjadi alasan. Walaupun ada beberapa framework yang meminta versi PHP spesifik, namun jika risiko-nya situs anda kebobolan, bukankah harga reputasi yang dibayarkan jauh lebih mahal ?.
A.2 Upload file yang tidak divalidasi
File upload tentunya tidak dapat dielakkan bagi beberapa situs pemerintah untuk misal mengunggah gambar KTP, pasfoto, ataupun dokumen-dokumen lain yang berkenaan dengan perizinan. Di beberapa situs saya temukan justru input upload file ini menjadi jalur masuk dari para peretas situs. Bayangkan jika ada satu uploader file yang seharusnya meminta file gambar alih-alih justru diunggahkan suatu potongan kode. Tanpa adanya validasi file yang diunggah, kode tersebut berhasil masuk tanpa adanya pengecekan. Kembali ke premis sebelumnya 90 % situs pemerintah menggunakan teknologi PHP, potongan kode yang masuk tersebut tidak perlu di-compile (seperti di JAVA dan GoLang), tidak perlu di-register (seperti di NodeJS dan Python), dan dapat langsung dijalankan. Voila, situs tersebut telah diretas.
A.3 Akses langsung Input ke SQL
ORM (Object-relational Mapping) adalah suatu abstraksi antarmuka antara aplikasi dengan database yang mana salah satu fitur-nya adalah menghasilkan query database tanpa developer-nya mengetikkan sendiri “SELECT * FROM <table_name> WHERE <condition>;”. Beberapa situs pemerintah saya dapati developer-nya MENGETIKKAN SENDIRI query database-nya. Dua alasan paling sering saya temukan antara lain: lebih ringkas buat query sendiri; dan query terlalu kompleks untuk dibuatkan dengan ORM.
Tidak masalah tentunya jika harus membuat query sendiri. Namun menjadi masalah jika input dari pengguna tanpa validasi langsung masuk ke SQL query. Hal ini menjadi celah terjadinya SQL injection. Misal alih-alih pengguna menuliskan usernamenya, justru menuliskan query database untuk menambahkan saldo-nya.
A.4 Plugin Bajakan
Situs-situs pemerintahan beragam macam-nya dan beberapa yang memiliki banyak data memiliki kewajiban untuk memunculkan data-data tersebut dalam bentuk grafik, pie chart, dan jenis-jenis tampilan data lainnya. Dalam membuat tampilan-tampilan tersebut terdapat banyak pilihan plugin yang dapat digunakan baik yang berbayar maupun yang gratis. Pastinya ada harga ada barang, plugin-plugin berbayar menawarkan tampilan dan kustomisasi yang lebih baik dibandingkan yang gratis. Saya kenal betul bahwa orang Indonesia piawai untuk mengakali pay wall ini dan menawarkan harga yang jauh lebih murah dibandingkan harga aslinya bahkan beberapa memberikan gratis.
Namun dibalik harga murah atau gratis tersebut membuka celah keamanan baru. Crack, updater, dan teknologi akal-akalan yang dibuat tidak sedikit yang disisipi dengan kode backdoor. Sehingga plugin bajakan yang dipasang malah membukakan pintu untuk hacker masuk ke dalam situs pemerintahan secara mudah.
B. Server
Selain kode yang lemah, juga saya dapati beberapa server yang tidak layak dari sudut pandang keamanan informasi. Sehingga menjadi titik lemah untuk dapat disusupi oleh para hacker dengan tujuan-tujuan jahat.
B.1 Update OS
Layaknya versi PHP, Operating System pada server juga memiliki versi-versi yang tidak lagi disarankan untuk digunakan. Sayangnya baik bagian operasional IT pengelola server tidak paham bagaimana cara update OS pada server mereka, apalagi list OS yang sudah masuk end of support. Pada situs ubuntu (OS yang paling sering digunakan) terdapat list versi-versi yang sudah end of support dan jika sudah end of support sebaiknya diganti dengan OS yang masih dalam cycle support mereka.
B.2 Tidak menyalakan log akses
Log akses dekat analoginya dengan buku tamu, meskipun tidak berdampak langsung pada peningkatan keamanan server, namun log akses adalah hal yang pertama kali dibutuhkan untuk melakukan investigasi kebocoran keamanan. Naasnya tidak sedikit server pemerintahan yang menonaktifkan fitur log akses ini sehingga saat terjadi kebobolan, tidak diketahui siapa yang melakukan pembobolan dan jam berapa. Tanpa adanya log akses, maka sudah dipastikan tidak dapat diketahui pelaku sebenernya dari pembobol yang bisa jadi justru malah dilakukan oleh orang dalam.
B.3 Tidak memiliki Antivirus
Layaknya laptop pribadi anda, server juga perlu memiliki antivirus. Aplikasi ini sering dirasa sebagai beban biaya operasional maupun beban performa, namun aplikasi ini dapat menyelamatkan server anda dari virus-virus yang disisipkan oleh para hacker.
B.4 Tidak menutup port yang tidak dipakai
Terakhir dari peningkatan keamanan informasi pada server yakni tidak ditutupnya port-port yang tidak dipakai atau yang tidak seharusnya diakses publik. Misal suatu web server yang diakses publik seharusnya hanya membuka port HTTP (80) dan port HTTPS (443). Namun dikarenakan database-nya juga ditempatkan di server yang sama dan butuh diakses oleh developer secara remote maka port SQL (3306) juga dibuka. Begitu pula port SMTP (25), Redis (6379), mongodb (27017), PostgreSQL (5432), dll. Walhasil server mendapatkan exposure yang sangat tinggi dan menjadi rentan dari serangan-serangan.
C. Jaringan
Bicara tentang keamanan sudah pasti tidak terlepas dari keamanan jaringan dari server-server yang menjalankan aplikasi.
C.1 Tidak menggunakan protokol HTTPS
Tidak sedikit situs pemerintahan yang masih menggunakan protokol HTTP. Protokol yang cuma terpaut satu huruf S dengan kakaknya HTTPS berdampak sangat besar. Protokol HTTP membuat jalur komunikasi antara pengguna dengan server tanpa adanya enkripsi, sehingga baik username, password, dan informasi apapun yang diketikkan pengguna dapat dilihat oleh siapapun dalam jaringan tersebut. Layaknya anda mengirimkan surat dengan map plastik transparan. Bapak kurir sudah pasti dapat membaca surat tanpa perlu membongkar amplopnya. Bayangkan jika surat tersebut berisi informasi pribadi dan kurir tersebut memiliki niat jahat, maka tidak dapat dielakkan hal-hal yang tidak diinginkan untuk terjadi.
Hemat saya, penggunaan HTTPS merupakan keharusan. Bahkan sudah banyak penyedia HTTPS gratis seperti lets encypt dan freessl. Tanpa HTTPS dijamin 100% lambat laun kebocoran informasi terjadi pada situs anda.
C.2 Tidak memiliki firewall
Firewall berfungsi untuk membatasi pengguna yang memiliki niat jahat ke dalam situs anda dengan berkunjung dengan sangat sering (misal 10.000 kali dalam satu detik) atau mengirimkan payload-payload besar dalam requestnya. Tidak adanya firewall layaknya anda tidak menempatkan satpam pada gedung pemerintahan anda untuk mengamankan dari pengunjung yang misal-nya membawa bom. Firewall beragam jenisnya dari yang paling murah hingga hingga miliaran harganya. Firewall standar saya rasa cukup untuk melindungi situs anda dari serangan-serangan level rendah.
C.3 IP Server terexpose
Ini salah satu teknik pengamanan yang lebih advance dibandingkan sebelum-sebelumnya. Saat seseorang mengetikkan alamat situs pemerintahan anda, akan terjadi proses DNS resolution yang mengembalikan IP server anda ke orang tersebut. IP ini kemudian disimpan oleh orang tersebut agar kedepannya dia dapat mengunjungi server anda tanpa melewati DNS resolution. 10 tahun yang lalu, ini adalah proses yang lumrah. Namun kini sudah ada banyak cara agar IP server yang dikembalikan DNS resolution tidak secara langsung merupakan IP fisik server anda. Mengapa ? karena saat seseorang mengetahui IP fisik server anda, maka dia juga dapat melakukan serangan langsung ke IP server anda.
Lantas yang perlu dilakukan adalah menggunakan load balancer sebelum server fisik anda, sehingga yang dikembalikan oleh DNS resolution bukan IP server fisik anda melainkan IP Load Balancer. Bahkan jauh lebih baik jika anda membuat struktur jaringan Firewall kemudian Load Balancer baru ke IP fisik anda. Sehingga DNS resolution akan mengembalikan IP firewall anda alih-alih server-server lain sehingga pengguna berhadapan “Satpam” dulu sebelum masuk ke situs anda.