Iklan
Hosting bersama. Itu pilihan yang murah, bukan? Dan untuk populasi yang sangat besar, mereka hanya perlu meng-host situs web atau aplikasi web mereka. Dan ketika dilakukan dengan baik, shared hosting scalable, cepat dan aman.
Tapi apa yang terjadi ketika itu tidak dilakukan dengan baik?
Nah, saat itulah masalah keamanan berbahaya mulai merambah. Saat itulah situs Anda berisiko dirusak, atau data pribadi yang Anda miliki bocor. Tapi jangan khawatir. Sebagian besar host web memiliki langkah-langkah keamanan yang layak. Hanya tuan rumah yang terbang-di-malam, ruang bawah tanah murah yang harus Anda waspadai.
Kami merekomendasikan Hosting bersama InMotion Hosting dengan penyimpanan SSD.

Kami akan menjelajahi masalah keamanan seputar hosting bersama. Tapi pertama-tama, mari kita bicara tentang apa yang membuat platform hosting bersama aman.
Apa yang Membuat Host Web Aman
Ada beberapa pertimbangan keamanan menonjol yang harus dibuat sehubungan dengan hosting bersama.
- Setiap pengguna di server harus diisolasi dari pengguna lain, dan seharusnya tidak dapat mengakses atau memodifikasi file pengguna lain.
- Kerentanan keamanan dalam logika situs web yang di-host di server seharusnya tidak dapat mempengaruhi pengguna lain.
- Server secara teratur ditambal, diperbarui dan dipantau untuk mengatasi masalah keamanan arsitektur.
- Setiap pengguna harus memiliki akses basis data tersendiri yang terisolasi, dan tidak boleh membuat perubahan pada catatan yang disimpan atau izin tabel dari pengguna lain.
Sekali lagi, sebagian besar host web memenuhi persyaratan ini untuk penawaran bersama mereka. Tetapi jika Anda melihat hosting beberapa situs web di satu server, atau ingin tahu bagaimana perusahaan hosting Anda menumpuk, atau bahkan berpikir untuk meluncurkan perusahaan hosting Anda sendiri dan ingin mengetahui cara mengamankan pengguna Anda, maka silakan baca di.
Tapi Pertama, Penafian
Sebelum kita membahas tentang serangan umum yang ditujukan pada shared hosting, saya hanya ingin menyatakan bahwa posting ini tidak akan (dan tidak boleh dibaca sebagai) daftar lengkap keamanan potensial masalah.
Keamanan, dalam kata lain, besar. Ada banyak cara untuk kompromi suatu situs. Ini berlaku ganda untuk hosting bersama. Menutupi mereka dalam satu artikel tidak pernah ada dalam kartu.

Jika Anda paranoid tentang keamanan Anda, dapatkan VPS atau server khusus. Ini adalah lingkungan di mana Anda memiliki (sebagian besar) kontrol mutlak atas apa yang terjadi. Jika Anda tidak yakin tentang berbagai jenis hosting web, lihat posting ini Berbagai Bentuk Hosting Situs Web Dijelaskan [Teknologi Dijelaskan] Baca lebih banyak dari kolega saya, James Bruce.
Saya juga harus menekankan bahwa posting ini tidak dapat ditafsirkan sebagai serangan terhadap shared hosting. Alih-alih, ini semata-mata pandangan akademis tentang masalah keamanan yang mengelilingi kategori hosting web ini.
Direktori Traversal
Mari kita mulai dengan serangan direktori traversal (sering dikenal sebagai ‘path traversal). Serangan semacam ini memungkinkan Anda untuk mengakses file dan direktori yang disimpan di luar root web.
Dalam bahasa inggris polos? Baiklah, mari kita bayangkan bahwa Alice dan Bob menggunakan server yang sama untuk meng-host situs web mereka. File-file Alice disimpan di / var / www / alice, sementara dokumen Bob dapat ditemukan di / var / www / bob. Selanjutnya, mari kita berpura-pura bahwa ada folder lain di server (/ usr / crappyhosting / myfolder) yang menyimpan file plaintext yang tidak terenkripsi (kami akan menyebutnya pwd.txt) yang berisi nama pengguna dan kata sandi.

Dengan saya sejauh ini? Baik. Sekarang, mari bayangkan situs web Bob menyajikan file PDF yang dibuat secara lokal, dan file lokal direferensikan dalam URL. Sesuatu seperti:
http://example.com/file?=report.pdf
Apa yang akan terjadi jika saya mengganti ‘report.pdf’ dengan beberapa parameter UNIX yang mengubah direktori?
http://example.com/file?=../alice/
Jika server tidak dikonfigurasi dengan benar, ini akan memungkinkan Anda untuk melihat root dokumen Alice. Menarik, tetapi, kami jauh lebih tertarik pada file paspor yang menarik itu. Kata sandi accio!
http://example.com/file?=../../../usr/crappyhosting/myfolder/pwd.txt
Ini semudah itu. Tetapi bagaimana kita menghadapinya? Itu mudah.
Pernah mendengar tentang utilitas Linux yang sedikit dikenal disebut chroot? Anda mungkin sudah menebak apa fungsinya. Ini mengatur root Linux / UNIX ke folder sewenang-wenang, sehingga mustahil bagi pengguna untuk keluar. Secara efektif, ini menghentikan serangan traversal direktori di trek mereka.

Sulit untuk mengatakan apakah host Anda memiliki ini tanpa melanggar hukum. Bagaimanapun, untuk mengujinya, Anda akan mengakses sistem dan file yang tidak Anda miliki izin untuk mengaksesnya. Dengan mengingat hal itu, mungkin akan masuk akal untuk berbicara dengan host web Anda dan menanyakan bagaimana mereka mengisolasi pengguna mereka satu sama lain.
Apakah Anda mengoperasikan server hosting bersama Anda dan tidak menggunakan chroot untuk melindungi pengguna Anda? Memang, chroot lingkungan Anda bisa sulit. Untungnya, ada banyak plugin yang memudahkan ini. Lihatlah mod_chroot, khususnya.
Perintah Injeksi
Mari kita kembali ke Alice dan Bob. Jadi, kita tahu aplikasi web Bob memiliki beberapa... Ahem... Masalah keamanan di dalamnya. Salah satunya adalah kerentanan injeksi perintah, yang memungkinkan Anda untuk menjalankan perintah sistem sewenang-wenang Panduan Cepat Untuk Memulai Dengan Linux Command LineAnda dapat melakukan banyak hal menakjubkan dengan perintah di Linux dan itu benar-benar tidak sulit untuk dipelajari. Baca lebih banyak .
Situs web Bob memungkinkan Anda untuk menjalankan permintaan whois di situs web lain yang kemudian ditampilkan di browser. Ada kotak input HTML standar yang menerima nama domain, dan kemudian menjalankan perintah sistem whois. Perintah ini dijalankan dengan memanggil perintah system () PHP.
Apa yang akan terjadi jika seseorang memasukkan nilai berikut?
example.com && cd ../alice/ && rm index.html
Baiklah, mari kita jabarkan. Beberapa di antaranya mungkin tidak asing bagi Anda jika Anda pernah membaca kami ‘Panduan Memulai Untuk Linux’ Memulai Dengan Linux dan UbuntuAnda tertarik beralih ke Linux... tetapi di mana Anda mulai? Apakah PC Anda kompatibel? Apakah aplikasi favorit Anda berfungsi? Ini semua yang perlu Anda ketahui untuk memulai dengan Linux. Baca lebih banyak e-book, yang sebelumnya kami terbitkan pada 2010, atau telah melirik kami Linux Cheat Sheet Perintah Baris.
Pertama, ini akan menjalankan permintaan whois di example.com. Maka itu akan mengubah direktori kerja saat ini menjadi root dokumen Alice. Maka itu akan menghapus file yang disebut 'index.html' yang merupakan halaman indeks ke situs webnya. Itu tidak baik. Tidak pak.

Jadi, sebagai administrator sistem, bagaimana kita mengurangi ini? Nah, kembali ke contoh sebelumnya, kita selalu dapat menempatkan setiap pengguna di lingkungan chroot terisolasi, sanitasi, dan terisolasi mereka sendiri.
Kami juga dapat mendekati ini dari tingkat bahasa. Dimungkinkan (meskipun, ini dapat merusak hal-hal) untuk secara global menghapus deklarasi fungsi dari bahasa. Dengan kata lain, dimungkinkan untuk menghapus fungsionalitas dari bahasa yang dapat diakses pengguna.
Melihat PHP pada khususnya, Anda dapat menghapus fungsionalitas dengan Runkit - toolkit resmi PHP untuk memodifikasi fungsionalitas bahasa. Ada banyak dokumentasi di luar sana. Baca ke dalamnya.
Anda juga dapat memodifikasi file konfigurasi PHP (php.ini) untuk menonaktifkan fungsi yang sering disalahgunakan oleh peretas. Untuk melakukan itu, buka terminal di server Anda dan buka file php.ini Anda dalam editor teks. Saya menikmati menggunakan VIM, tetapi NANO juga dapat diterima.
Temukan baris yang dimulai dengan disable_functions dan tambahkan definisi fungsi yang ingin Anda batalkan. Dalam hal ini, itu akan menjadi exec, shell_exec dan sistem, meskipun perlu dicatat bahwa ada fungsi bawaan lain yang dapat dieksploitasi oleh peretas.
disable_functions = exec, shell_exec, sistem
Serangan Berbasis Bahasa Dan Interpreter
Jadi, mari kita lihat PHP. Ini adalah bahasa yang mendukung sejumlah situs web yang mengejutkan. Itu juga dilengkapi dengan sejumlah keanehan dan perilaku aneh. Seperti ini.
PHP biasanya digunakan bersama dengan server web Apache. Sebagian besar, tidak mungkin memuat beberapa versi bahasa dengan konfigurasi ini.

Mengapa ini menjadi masalah? Nah, mari kita bayangkan aplikasi web Bob awalnya dibangun pada tahun 2002. Itu sudah lama sekali. Itu kembali ketika Michelle Branch masih menduduki puncak tangga lagu, Michael Jordan masih bermain untuk Washington Wizards dan PHP adalah bahasa yang jauh berbeda.
Tetapi situs web Bob masih berfungsi! Ini menggunakan sejumlah besar fungsi PHP yang tidak digunakan lagi dan sudah usang, tetapi berfungsi! Menggunakan versi modern PHP akan secara efektif menghancurkan situs web Bob, dan mengapa Bob harus menulis ulang situs webnya untuk memenuhi keinginan host webnya?
Ini seharusnya memberi Anda gambaran tentang dilema yang dihadapi beberapa host web. Mereka harus menyeimbangkan menjaga layanan yang baik secara arsitektur dan aman, sementara menjaga agar selaras dengan memastikan pelanggan yang membayar bahagia.
Akibatnya, tidak jarang melihat host yang lebih kecil dan independen menggunakan versi PHP yang lebih lama (atau bahasa apa pun, dalam hal ini).
Tidak jarang melihat host yang lebih kecil dan independen menggunakan versi PHP yang lebih lama, berpotensi mengekspos pengguna terhadap risiko keamanan.
Kenapa ini hal yang buruk? Yah, pertama, itu akan memaparkan pengguna ke sejumlah risiko keamanan. Seperti kebanyakan paket perangkat lunak utama, PHP terus diperbarui untuk mengatasi sejumlah besar kerentanan keamanan yang terus-menerus ditemukan (dan diungkapkan).
Selain itu, itu berarti bahwa pengguna tidak dapat menggunakan fungsi bahasa terbaru (dan terhebat). Ini juga berarti bahwa fungsi yang sudah usang karena suatu alasan tetap ada. Dalam hal Bahasa pemrograman PHP Belajar Membangun Dengan PHP: Kursus CrashPHP adalah bahasa yang digunakan Facebook dan Wikipedia untuk melayani miliaran permintaan setiap hari; bahasa de-facto yang digunakan untuk mengajar orang pemrograman web. Ini sangat sederhana, tetapi sangat kuat. Baca lebih banyak , ini termasuk fungsi mysql_ yang luar biasa mengerikan (dan baru-baru ini ditinggalkan) yang digunakan untuk berinteraksi dengan Sistem Database Relasional MySQL, dan dl (), yang memungkinkan pengguna untuk mengimpor bahasa mereka sendiri ekstensi.
Sebagai pengguna, Anda harus dapat melihat versi penerjemah apa yang berjalan pada layanan Anda. Jika usang, atau mengandung sejumlah kerentanan keamanan, hubungi host Anda.
Bagaimana dengan sysadmin? Anda punya beberapa opsi di sini. Yang pertama (dan paling menjanjikan) adalah menggunakan Docker untuk masing-masing pengguna Anda. Docker memungkinkan Anda untuk menjalankan beberapa lingkungan yang terisolasi secara bersamaan, seperti halnya mesin virtual, meskipun tanpa harus menjalankan sistem operasi lain. Hasilnya, ini cepat. Sangat, sangat cepat.
Dalam bahasa inggris polos? Anda dapat menjalankan interpreter tepi pendarahan terbaru dan terbaik untuk sebagian besar pengguna Anda, sementara pelanggan yang menggunakan aplikasi lama yang menggunakan penerjemah kuno dan usang untuk melakukannya tanpa kompromi lainnya pengguna.
Ini juga memiliki keuntungan menjadi agnostik bahasa. PHP, Python, Ruby. Masa bodo. Semuanya sama.
Jangan Mimpi Buruk.
Posting ini dimaksudkan untuk melakukan beberapa hal. Pertama, itu untuk menarik perhatian Anda pada sejumlah masalah keamanan yang harus dihadapi oleh perusahaan web hosting untuk memastikan keamanan pelanggan dan data mereka.
Itu juga dimaksudkan untuk menunjukkan kepada Anda bagaimana situs yang dihosting di server yang sama dapat saling memengaruhi. Ingin membuat penyok ini? Mulailah mematuhi standar pengkodean yang baik dan aman. Secara khusus, mulailah membersihkan input Anda di front-end dan di back-end.
Awal yang baik adalah dengan fungsionalitas validasi form HTML5 baru. Kami telah membicarakan hal ini sebelumnya dalam panduan HTML5 kami. Secara kolektif, kita dapat membuat situs web lebih aman dengan menjadi pemrogram yang lebih baik dan lebih berhati-hati.
Seperti biasa, saya siap mendengar pendapat Anda. Berikan saya komentar di bawah.
Kredit Foto: Semua Orang Membutuhkan Peretas (Alexandre Dulaunoy), Stiker Di Taksi Jendela (Cory Doctorow), Ruang server (Torkild Retvedt), Buku dan Majalah Linux (library_mistress), PHP Elephant (Markus Tacker)
Matthew Hughes adalah pengembang dan penulis perangkat lunak dari Liverpool, Inggris. Dia jarang ditemukan tanpa secangkir kopi hitam pekat di tangannya dan sangat menyukai Macbook Pro dan kameranya. Anda dapat membaca blognya di http://www.matthewhughes.co.uk dan ikuti dia di twitter di @matthewhughes.