Menerapkan prinsip hak istimewa paling rendah untuk meningkatkan keamanan WordPress
Diterbitkan: 2021-07-27Prinsip hak istimewa paling rendah untuk WordPress tidak menjadi berita utama saat terjadi pelanggaran, kehilangan data, dan serangan DoS. Namun ini adalah salah satu praktik terbaik keamanan yang paling efektif, jika diabaikan, untuk situs web WordPress.
Dalam posting blog ini, pertama-tama kita mendefinisikan prinsip hak istimewa paling rendah, kemudian memeriksa kapan dan di mana itu berlaku, risiko tidak mengadopsinya, dan mengapa banyak pengembang situs web masih tidak memasukkannya ke dalam situs web WordPress mereka. Kami juga membagikan beberapa rekomendasi praktis, sehingga Anda dapat segera mulai meningkatkan keamanan situs web WordPress Anda. Posting blog ini mencakup beberapa studi kasus mini untuk membantu menggambarkan penggunaannya dalam pengaturan nyata.
Daftar Isi
- Apa Prinsip Privilege Terkecil?
- Kapan dan di mana Prinsip Privilege Terkecil diterapkan?
- Apa risikonya jika PoLP tidak diterapkan?
- Mengapa banyak pemilik situs web mengabaikan prinsip hak istimewa paling rendah di WordPress?
- Cara menerapkan PoLP untuk WordPress
- Hak istimewa pengguna basis data WordPress
- Peran dan hak istimewa pengguna WordPress
- Membuat peran khusus
- Izin file dan direktori
- Konfigurasi plugin WordPress
- Akses FTP untuk kontraktor pihak ketiga
- Studi kasus mini
- Aplikasi situs web e-niaga
- Universitas dan lembaga pendidikan
- Situs web dan blog berita
- Situs web perbankan
- Pelacak kesehatan dan kebugaran
- Menggunakan Prinsip Privilege Terkecil untuk WordPress dan seterusnya
Apa Prinsip Privilege Terkecil?
Idenya sangat sederhana: jangan berikan akun pengguna, proses, atau program hak akses lebih dari yang dibutuhkan untuk menyelesaikan tugas yang ditentukan. Dalam hal situs web WordPress khas dengan blog, pikirkan editor, penulis, kontributor, dan pelanggan Anda. Masing-masing dari mereka membutuhkan akses ke lebih atau kurang dari backend situs web Anda.
Prinsip dengan hak istimewa paling rendah (PoLP) juga dikenal sebagai 'prinsip otoritas paling sedikit', 'prinsip hak istimewa minimal', atau 'akun pengguna paling tidak memiliki hak istimewa' (LUA).
Mari kita pertimbangkan beberapa contoh sederhana. Balita Anda tidak sering membutuhkan akses ke dapur. Jadi, Anda memasang perangkat kontrol akses, seperti gerbang pengaman, di berbagai titik melalui rumah Anda untuk memungkinkan mereka berkeliaran sesuka hati – kecuali untuk ruangan tertentu. Di ruang kerja bersama publik bersama, Anda akan mematikan laptop sebelum berangkat makan siang. Dan, petugas parkir restoran mewah Anda akan meminta ID atau tiket Anda sebelum mengembalikan kunci mobil Anda. Kontrol akses mencegah kerusakan pada properti berharga Anda dan pengguna Anda – apakah itu barang fisik atau agunan digital.
Kapan dan di mana Prinsip Privilege Terkecil diterapkan?
Jawaban sederhananya adalah ini berlaku di mana-mana: mulai dari balita yang ingin menaiki tangga hingga pengguna di akun hosting situs WordPress Anda. Freelancer keuangan Anda yang perlu mengunduh faktur bulanan tidak memerlukan tingkat akses yang sama dengan administrator situs web. Hal yang sama berlaku untuk semua jenis akun perusahaan istimewa, sistem manajemen file, dokumentasi strategi pemasaran, atau pengelola kata sandi.
Apa risikonya jika PoLP tidak diterapkan?
Mengontrol akses ke area tertentu tampaknya tidak perlu dipikirkan lagi. Jika tidak, bukankah Anda meninggalkan situs web sepenuhnya atas keinginan pengguna yang masuk – termasuk mereka yang mungkin membuat kesalahan yang tidak disengaja dan tidak disengaja, dan bahkan mungkin tidak menyadari bahwa mereka telah melakukannya, atau akibat yang tidak diinginkan?
Pikirkan kemungkinan pengguna berikut:
- Pengguna baru memulai dengan sedikit pemahaman tentang implikasi bisnis dari kesalahan di situs web WordPress
- Mereka yang memiliki sedikit pengalaman administrasi WordPress
- Tanpa pengetahuan tentang implikasi mengunduh versi atau plugin WordPress baru sesuka hati, atau memperbaruinya tanpa terlebih dahulu membuat cadangan
- Mereka yang memiliki kesadaran keamanan terbatas membuat pengguna baru atau mengubah izin pengguna yang ada
- Mereka yang tidak tahu bagaimana menangani kesalahan yang dilaporkan atau masalah lain
- Kontributor posting blog eksternal seperti mitra, pekerja lepas, dan klien, mungkin dengan sedikit pengetahuan tentang WordPress, yang bahkan dapat 'membantu' mengunduh atau memperbarui plugin di situs web Anda – tanpa bertanya
Ini juga berarti seluruh backend WordPress Anda berisiko terhadap beberapa orang yang tidak berwenang, seperti seseorang dengan tingkat akses yang tidak sesuai, menambahkan pengguna baru dan memberi mereka akses ke area situs web yang dapat menyebabkan kerusakan yang disengaja .
Seperti:
- Mengubah tema, fitur khusus, atau konten situs web publik
- Salah menangani stok, SKU, atau metadata produk di toko e-niaga
- Menawarkan diskon tidak sah
- Mengakses, mengubah, mengunduh atau menghapus kode, templat halaman, media, konfigurasi, atau staf, pelanggan, dan jenis file lainnya
- Mengakses data perusahaan, pelanggan, kesehatan atau keuangan, misalnya untuk menyalahgunakan atau menjual kepada pihak jahat lainnya
- Mengambil situs dan produk atau layanannya secara offline
Apakah Anda menggunakan WordPress atau tidak, salah satu atau semua masalah ini dapat terjadi ketika prinsip paling tidak istimewa untuk WordPress tidak diadopsi secara sengaja dan konsisten di seluruh organisasi Anda.
TIP: Gunakan plugin log aktivitas untuk WordPress untuk menyimpan log dari semua perubahan yang dilakukan pengguna di situs WordPress Anda. Ini membantu akuntabilitas pengguna dan memudahkan pemecahan masalah.
Mengapa banyak pemilik situs web mengabaikan prinsip hak istimewa paling rendah di WordPress?
Risiko yang kami uraikan tampaknya cukup persuasif, bukan? Tetapi salah satu masalah paling umum yang dilaporkan setelah audit situs web WordPress adalah bahwa peran pengguna WordPress di lingkungan tertentu masih dikonfigurasi sebagai berikut:
- Peran administrator WordPress diberikan kepada setiap pengguna, bahkan ketika pengguna hanya perlu memasukkan konten yang ditulis oleh orang lain
- Hal yang sama berlaku untuk izin file dan direktori, yang semuanya dikonfigurasi dengan izin yang paling sedikit membatasi
Kami mengerti. Kita semua memiliki pengalaman bekerja sebagai administrator sistem dan situs web di beberapa titik dalam karier kita. Alih-alih menjadi penghubung antara pengguna dan izin di hari-hari awal, memeriksa apa yang perlu dilakukan pengguna, administrator sering kali lebih memilih untuk memberikan mereka peran administrator juga (tampaknya lebih cepat, pada awalnya).
Hal yang sama berlaku untuk izin file dan direktori. Misalnya, beberapa plugin WordPress menyimpan file cache atau data lain pada sistem file (yaitu di direktori WordPress). Lebih mudah untuk mengonfigurasi 777 izin di direktori /wp-content/plugins/, karena semua plugin akan berfungsi dan tidak perlu menghabiskan waktu lebih lama untuk memecahkan masalah dan mengubah izin setiap kali Anda menginstal plugin baru. Namun, melakukan beberapa penelitian di awal untuk menentukan area spesifik dari aplikasi atau direktori situs web – untuk mencegah pengguna memiliki terlalu banyak akses – mengurangi risiko yang telah disebutkan. Dan, ini memiliki manfaat tambahan yang memungkinkan setiap orang untuk mendapatkan akses ke apa yang mereka butuhkan untuk melakukan pekerjaan mereka – tanpa masukan lebih lanjut dari administrator.
Pertanyaan yang diajukan oleh pemilik dan administrator situs web
Apakah kenyamanan sebanding dengan risiko keamanannya? Anda tahu apa jawaban kami untuk pertanyaan itu. Tidak ada gunanya menginstal dan memelihara plugin keamanan aplikasi web di muka dan kuat, protokol kata sandi, dan tindakan lain seperti 2FA, jika risiko keamanan terbesar Anda adalah Anda telah membiarkan pintu belakang disangga terbuka dengan kontrol akses amatir dan lemah!
Bagaimana menerapkan prinsip hak istimewa paling rendah untuk WordPress
Sekarang setelah Anda berfokus untuk membuat aplikasi situs web Anda menjadi yang paling aman, bagian ini memberi Anda daftar di mana dan bagaimana prinsip hak istimewa paling rendah dapat diterapkan ke situs web atau blog WordPress.
Hak istimewa pengguna basis data WordPress
Mari kita mulai dengan tempat paling dasar – izin atau hak istimewa basis data pengguna WordPress.
Untuk operasi WordPress harian normal seperti menulis dan menerbitkan konten, pengguna database WordPress hanya memerlukan izin berikut untuk memungkinkan mereka mengelola data dari dalam database:
- Pilih
- Menyisipkan
- Memperbarui
- Menghapus
Izin ini tidak mengizinkan pengguna database WordPress untuk mengubah struktur database.
Rekomendasi
Dalam lingkungan yang ideal, untuk memperkuat keamanan situs web atau blog WordPress Anda, Anda harus mengonfigurasi hak istimewa database MySQL WordPress yang aman dan terbatas. Kembalikan hanya untuk menetapkan semua hak istimewa kepada pengguna yang perlu menginstal plugin baru yang membuat tabel baru di database, atau ketika WordPress telah diperbarui dan ada perubahan pada skema database WordPress.
Rekomendasi lain adalah untuk menghindari pemberian akses ke database selain WordPress untuk situs web yang relevan.
Untuk informasi lebih lanjut tentang hak istimewa basis data WordPress, Anda juga dapat membaca Mengapa pengguna MySQL minimum hak istimewa basis data WordPress meningkatkan keamanan, yang menjelaskan akibat dari konfigurasi yang tidak aman.
Peran dan hak istimewa pengguna WordPress
Pengguna WordPress membuat kesalahan – bahkan administrator. Dan, pengguna juga suka menjelajahi pengaturan dan konfigurasi. Jika Anda menetapkan akses Admin Super atau Administrator kepada pengguna, yang lebih penasaran di antara mereka kemungkinan besar akan menginstal plugin acak. Hal ini berpotensi mengakibatkan perubahan pengalaman pengguna yang tidak disengaja, seperti perubahan fungsi situs web.
WordPress memiliki sejumlah peran pengguna bawaan dan kemampuan terhubung, seperti yang tercantum di bawah ini (dari yang paling banyak hingga yang paling sedikit).
- Admin Super – admin jaringan situs
- Administrator – admin jaringan situs untuk satu situs
- Editor – mengelola dan memublikasikan postingan, termasuk postingan pengguna lain
- Penulis – kelola dan publikasikan postingan sendiri
- Kontributor – menulis dan mengelola postingan sendiri, tetapi tidak mempublikasikannya
- Pelanggan – kelola profil saja
Contoh cara kerjanya dalam praktik adalah bahwa meskipun Kontributor dan Penulis dapat berbagi beberapa kemampuan (misalnya mengedit posting dan menghapus posting), Kontributor tidak dapat melakukan semua yang dapat dilakukan oleh Penulis, seperti mengunggah file atau membuat blok yang dapat digunakan.
Membuat peran khusus
Ada juga sejumlah plugin yang dapat Anda gunakan untuk membuat peran WordPress baru dan kustom.
Berikut adalah beberapa kasus penggunaan umum:
- Di organisasi yang lebih besar, Anda mungkin perlu menugaskan seseorang di tim pemasaran Anda untuk memoderasi, menyetujui, dan membalas komentar. Kemampuan 'moderat komentar' ditempatkan dalam peran Editor, tetapi peran ini juga memberikan sejumlah besar kemampuan kuat lainnya. Jadi, jika hanya itu yang dapat mereka lakukan, maka menyiapkan peran khusus, dengan izin tunggal ini, sudah cukup.
- Jika situs WordPress Anda berisi plugin e-niaga seperti WooCommerce, Anda dibatasi pada dua peran awal: Manajer Toko (memungkinkan pengguna untuk mengelola seluruh toko) dan Pelanggan (memungkinkan pengguna untuk melihat akun dan pesanan mereka). Administrator memiliki izin tambahan, seperti 'kelola setelan' dan 'lihat laporan'. Namun, bagaimana jika pengguna Anda – staf non-manajemen, misalnya – memerlukan sesuatu di antaranya, seperti kemampuan untuk menambah dan mengelola jumlah stok atau SKU, atau hanya memproses pesanan?
- Di situs web kami, kami menggunakan plugin untuk artikel basis pengetahuan kami. Ini memberi tim dukungan kami akses untuk membuat dan memodifikasi artikel basis pengetahuan, tetapi tidak ada akses ke halaman situs web utama dan posting blog.
Rekomendasi
Untuk sebagian besar pengguna biasa, peran Kontributor sudah cukup. Untuk pemimpin tim dan manajer langsung, peran Editor disarankan. Namun, Anda harus membatasi peran Super Admin dan Administrator hanya untuk pengguna berpengalaman dan bertanggung jawab yang benar-benar membutuhkannya.
Untuk informasi selengkapnya, lihat Cara menggunakan peran pengguna WordPress untuk meningkatkan keamanan WordPress.
Izin file dan direktori
Sangat mudah untuk mengonfigurasi izin file dan direktori dan ada banyak dokumentasi yang tersedia secara online yang menjelaskan cara mengeraskan izin instalasi WordPress Anda. WordPress berjalan pada OS apa pun yang menjalankan PHP, umumnya Linux. Dalam hal grup, Linux memiliki tiga grup izin:
- Pemilik – pemilik file/direktori, yang izinnya tidak berlaku atau memengaruhi pengguna lain
- Grup – grup pengguna yang telah diberi akses ke file/direktori, yang izinnya tidak berlaku atau memengaruhi pengguna di luar grup
- Lainnya – tingkat izin apa yang dimiliki orang lain ke file/direktori yang sama
Masing-masing diberi izin Baca (melihat konten), Tulis (tulis atau ubah konten) atau Jalankan (jalankan konten, seperti skrip). Izin ini disimpan sebagai serangkaian angka dan mereka memberikan akses ke kode PHP, gambar dan media lain, file HTML dan javascript, dan plugin.
Implikasi dari pemberian izin yang salah ke grup izin yang salah dapat berarti bahwa peretas jahat dapat mengambil keuntungan dan mengakibatkan kerentanan tingkat rendah yang berubah menjadi risiko yang tidak dapat diterima.
Rekomendasi
Saat menginstal WordPress, Anda juga harus menggunakan PoLP, mengonfigurasi izin file dan direktori seminimal mungkin agar WordPress berfungsi.
Ingatlah bahwa dengan mengeraskan izin file dan direktori, Anda mungkin juga membatasi beberapa plugin WordPress agar tidak berfungsi. Seperti yang dijelaskan sebelumnya, Anda mungkin menginstal plugin yang perlu menyimpan data di direktori instalasinya. Jika demikian, jangan hanya mengonfigurasi 777 izin ke direktori plugin (baca, tulis, dan jalankan sepenuhnya kepada siapa pun yang memiliki izin untuk mengontrolnya). Itu adalah jalan keluar yang mudah. Tetapi Anda juga harus menghindari membatasinya sejauh ini sehingga mencegah pengguna yang relevan memperbarui WordPress, tema, dan pluginnya dari UI web.
Untuk informasi lebih lanjut, lihat izin file WordPress: panduan untuk mengonfigurasi izin situs web & server web yang aman.
Konfigurasi plugin WordPress
Tidak semua administrator sama. Seperti banyak sistem dan jaringan, biasanya memiliki admin utama di antara sekelompok administrator WordPress. Biasanya, pemilik situs web tidak memiliki pilihan lain selain memberikan akses admin kepada pengguna lain. Ingatlah bahwa dalam kasus plugin keamanan WordPress, mereka sering kali dapat menyimpan data sensitif, seperti log audit keamanan WordPress, yang dapat diakses oleh admin.
Rekomendasi
Plugin keamanan WordPress biasanya memungkinkan Anda untuk membatasi akses ke administrator WordPress lainnya. Memanfaatkan fitur-fitur tersebut tampak seperti kontrol kecil, tetapi terkadang diabaikan, yang akan membantu Anda tetap bertanggung jawab atas akses pengguna dengan lebih baik.
Untuk informasi lebih lanjut tentang masing-masing plugin, hubungi dukungan plugin dan penyedia hosting. Kemudian tanyakan ke direktori mana plugin perlu menulis, sehingga Anda dapat mengonfigurasi izin khusus untuk direktori itu.
Akses FTP untuk kontraktor pihak ketiga
Saat Anda menyewa seorang desainer, atau tim dukungan plugin membutuhkan akses FTP ke situs web Anda, Anda mungkin memberi mereka akses penuh ke akar situs web Anda, bukan? Ini tidak perlu.
Rekomendasi
Dalam kasus seorang desainer, yang mereka butuhkan hanyalah akses ke direktori tema, jadi batasi akses ke direktori itu. Hal yang sama berlaku untuk tim dukungan plugin. Jika mereka memerlukan akses untuk memeriksa file log, beri mereka akses FTP ke direktori plugin atau ke lokasi tempat plugin menyimpan file log. Hindari bergantung pada pihak eksternal untuk melakukan uji tuntas keamanan untuk Anda.
Studi kasus mini
Mari kita lihat beberapa contoh terkait tentang cara kerjanya dalam praktik, dan bagaimana pertanyaan dan keputusan kontrol akses dapat mendorong penerapan PoLP untuk memungkinkan akses yang tepat bagi tim dan individu yang tepat.
Aplikasi situs web e-niaga
Aplikasi situs web e-commerce, seperti di mana konsumen membeli barang-barang besar seperti lemari es-freezer, penyedot debu, kamera atau laptop, menawarkan berbagai contoh di mana PoLP dapat diadopsi.
Beberapa keputusan kontrol akses untuk pengembang aplikasi situs web e-niaga sudah jelas:
- Departemen SDM mungkin tidak memerlukan akses ke data pelanggan, atau direktori file yang menyimpan plugin, tetapi mereka akan membutuhkan akses ke sebagian besar catatan staf (walaupun mungkin data kesehatan, yang sering menikmati status khusus di bawah banyak undang-undang kepatuhan perlindungan data, mungkin lebih terbatas pada kebutuhan untuk mengetahui dasar)
- Departemen pemasaran tidak memerlukan akses ke tabel SKU atau kode produk. Namun, mereka akan menginginkan akses ke tabel dalam database produk yang mencantumkan nama, spesifikasi, dan deskripsi produk
Beberapa kurang jelas:
- Apakah konsumen memerlukan akses ke semua data mereka setiap saat?
- Apakah petugas kepatuhan PCI-DSS memerlukan akses ke semua data konsumen?
Universitas dan lembaga pendidikan
Bagaimana dengan institusi yang lebih tradisional dan lama, di mana keamanan aplikasi web dan PoLP pada awalnya kurang terlihat?
Beberapa keputusan kontrol akses untuk portal universitas dan perguruan tinggi jelas:
- Departemen penggajian memerlukan akses ke catatan staf dan kontraktor di aplikasi situs web untuk melacak hari kerja dan melakukan pembayaran
- Departemen administrasi dari berbagai jenis mungkin memerlukan akses ke catatan siswa, untuk memproses ID, aplikasi akomodasi, tagihan, atau hibah
Beberapa kurang jelas:
- Apa pemasok pihak ketiga, seperti penyedia kartu gesek bangunan, yang mungkin memerlukan akses terputus-putus ke beberapa tabel data siswa?
Situs web dan blog berita
Web penuh dengan situs web berita, podcast, dan blog. Banyak pemilik situs web bergantung pada banyak administrator, kontributor, editor, korektor, dan penerbit. Selain itu, ada pelanggan dan pemirsa yang perlu dipertimbangkan.
Beberapa keputusan kontrol akses untuk aplikasi situs web berita dan blog sudah jelas:
- Bergantung pada area tanggung jawab bisnis, editor mungkin memerlukan akses ke kombinasi halaman, artikel, dan posting blog semua orang
- Kontributor hanya memerlukan akses ke postingan blog mereka sendiri
Beberapa kurang jelas:
- Apakah semua pihak ketiga memerlukan akses ke setiap tabel di database WordPress? Di sinilah kontrol yang disesuaikan menjadi miliknya.
Situs web perbankan
Contoh terakhir kami adalah sesuatu yang banyak dari kita gunakan setiap hari, layanan situs web perbankan. Selain informasi kesehatan, data keuangan pribadi tentu saja merupakan salah satu jenis yang paling rahasia.
Beberapa keputusan kontrol akses untuk membuat aplikasi situs web sudah jelas:
- Pengguna layanan perbankan tidak boleh memiliki akses ke akun pengguna lain, kecuali dengan persetujuan tersurat (mungkin dikendalikan pengguna)
- Akun pengguna staf harus memiliki akses ke banyak akun pengguna layanan, tetapi hanya terbatas pada tugas yang harus mereka lakukan sebagai bagian dari pekerjaan mereka
Beberapa kurang jelas:
- Berapa banyak akses yang harus dimiliki departemen dukungan teknis? Haruskah mereka dapat melihat dan mengubah semuanya, jika terjadi kesalahan?
Kami menyarankan Anda untuk memikirkan dan merencanakan kasus penggunaan bisnis untuk setiap skenario. Dalam hubungannya dengan kelompok pengguna dan individu Anda dengan deskripsi pekerjaan yang unik. Petakan ini terlebih dahulu. Hanya dengan begitu Anda dapat mulai memeriksa protokol kontrol akses yang tersedia untuk Anda di situs web WordPress Anda.
Pelacak kesehatan dan kebugaran
Perangkat pelacak kesehatan atau kebugaran dan dasbor online yang terhubung mengumpulkan, menyimpan, dan berbagi statistik menarik tentang pengguna dan data kesehatan, aktivitas, target, dan pencapaian mereka.
Beberapa keputusan kontrol akses untuk merek pelacak kesehatan dan kebugaran sudah jelas:
- Tim mana di dalam organisasi yang memerlukan akses ke data mana? Masuk akal jika satu tim bertanggung jawab atas desain dan pengembangan bagian pelacakan tidur aplikasi, mereka tidak perlu akses ke tabel statistik latihan.
- Sebagian besar pengguna ingin PoLP (apakah mereka mengetahuinya atau tidak) menjadi sangat ketat, sehingga informasi kesehatan mereka tidak dibagikan dengan setiap pengguna lain. Jadi, hak akses apa yang harus diberikan kepada peran pengguna normal, dan oleh karena itu data apa yang akan dibagikan di profil publik (hanya nama, gambar profil, dan rata-rata langkah harian?).
Beberapa kurang jelas:
- Apa, dan berapa banyak, informasi yang perlu diakses oleh pengguna lain untuk memfasilitasi fitur gamifikasi umum dari alat tersebut?
- Haruskah pengembang menetapkan semua izin akses, atau haruskah sebagian dari pengambilan keputusan ini diturunkan ke pengguna?
Menggunakan Prinsip Privilege Terkecil untuk WordPress dan seterusnya
Di atas hanyalah pilihan skenario yang paling umum di mana prinsip paling tidak istimewa untuk WordPress sering diabaikan tetapi dapat dengan mudah diterapkan.
Untuk mulai mengadopsi PoLP, mulailah dengan mempertimbangkan apa yang ingin Anda lakukan terhadap item berikut:
- Server web
- Data
- Kustomisasi
Jangan menghindar dari menerapkan prinsip hak istimewa paling rendah hanya karena segala sesuatunya tidak langsung berhasil. Ya, sebagian besar waktu Anda harus menghabiskan beberapa jam untuk mengonfigurasi peran pengguna yang disesuaikan dan plugin pemecahan masalah. Kemas ulang ini dalam pikiran Anda sebagai investasi jangka panjang dalam keamanan situs WordPress Anda.