Catatan Hosting 2017

Setiap beberapa tahun saya pindah hosting atau upgrade ke server yang lebih baik. Saya menuliskan catatan teknis ini sebagai pengingat di masa depan mengenai berbagai solusi hosting yang pernah saya coba, dan perkembangannya dari masa ke masa. Bisa dilihat di arsip blog ini kategori hosting, dari mulai paket hosting 5000 rupiah sebulan waktu blog ini dimulai, sampai sekarang memakai server sekitar dengan biaya sekitar 30 Euro/bulan.

Terakhir kali pada tahun 2015 saya menyewa dedicated server di online.net, dan sejauh ini semua berjalan dengan baik. Di awal tahun ini saya masih memakai provider hosting yang sama (online.net), tapi saya mengupgrade ke server yang lebih baik: 1x Intel® Xeon® D-1531 dengan RAM 32 GB dan SSD 2 x 250 GB (30 euro per bulan). Untuk keperluan hosting web saja, sebenarnya ini agak berlebihan. Saya memakai server ini juga untuk keperluan lain: hosting git, server VPN, server untuk pentest, server untuk Jupyter Notebook, dll.

Salah satu software yang banyak bugnya adalah WordPress dan berbagai extension dan themenya. Karena web ini dan berbagai situs yang saya miliki hanyalah situs pribadi, saya tidak melakukan hardening karena sebagian besar membuat situs menjadi kurang nyaman dipakai. Contohnya: halaman login bisa disembunyikan, tapi akan memperumit setting beberapa software untuk blogging dari desktop.

Server ini cukup powerful, jadi saya bisa menjalankan beberapa Virtual Machine. Sebagai kompromi antara keamanan dan kenyamanan, saya membuat satu VM khusus untuk semua website saya. Tiap website diisolasi  dengan menggunakan Docker (satu domain menggunakan satu container). Dengan docker, jika satu website ternyata jebol, maka  tidak akan mempengaruhi website lain. Untuk menambah keamanan, saya juga memakai cloudflare (versi gratis).

Saya menggunakan pendekatan sederhana: tiap satu container berisi website secara utuh, jadi webserver dan database server (jika situs tersebut butuh database) akan berada di container yang sama. Saya menggunakan mod_proxy apache untuk menghubungkan semua domain ini agar bisa diakses dari satu port.

Penggunaan docker juga memudahkan saya menggunakan versi software yang berbeda di tiap container. Misalnya: saya bisa  perlahan mengupgrade satu demi satu situs ke PHP 7 sementara situs lain masih memakai PHP 5.

Pada situs wordpress, hal yang umumnya dilakukan oleh attacker jika berhasil mengambil alih sebuah situs adalah membuat backdoor. Backdoor ini bisa berupa file baru atau dengan menambahkan sesuatu di header file yang sudah ada. Untuk mencegah terciptanya file (backdoor) baru, saya menggunakan git, dan saya bisa menggunakan “git status” untuk melihat apakah ada file yang ditambahkan (untracked files). Saya mencegah editing file dengan mengubah attribut file menjadi immutable menggunakan chattr. Sebelum mengupgrade wordpress, saya akan menjalankan skrip untuk “mengunlock” file-file agar bisa diupgrade.

Hal lain yang sering dilakukan penyerang adalah menjadikan situs kita sebagai pengirim spam. Saya mendisable fitur email/sendmail di setiap container untuk mencegah agar tidak terjadi serangan ini.

Tentunya itu tidak menjamin wordpress bisa 100 persen aman, misalnya belum lama ini ada bug di versi 4.7 dan 4.7.1 yang memungkinan pengunjung blog mengubah isi teks posting. Ini hanya mengubah isi database saja, jadi file-file tidak berubah, dan tidak ada backdoor yang terinstall.

Kebanyakan nama domain saya saat ini masih memakai namecheap.com yang cukup murah (harga .com 10.29 USD). Sebagian domain lama saya masih memakai layanan gratis Google. Sekarang Google sudah tidak lagi menyediakan email gratis untuk domain baru. Jadi untuk domain baru, saya memilih Gandi.net, karena meskipun sedikit lebih mahal (harga .com 13.32 USD) tapi sudah menyertakan 5 Mailbox gratis, sedangkan harga paket email basic namecheap sekarang 9.88 USD, (jadi domain + email sudah lebih dari 19 USD).

Semoga informasi hosting dan cara saya mengkonfigurasi dan mengamankan server bisa berguna bagi orang lain.

Leave a Reply

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