WordPress® adalah sistem manajemen konten (CMS) yang hebat, terutama jika Anda baru mengenal blogging atau coding. Namun, karena tingginya jumlah instalasi WordPress, Wordpress menjadi target penyerang. Kabar baiknya adalah ada banyak langkah yang dapat Anda ambil untuk membuat instalasi WordPress Anda lebih aman.
Pengguna dan izin Linux
Sudah umum bagi pengguna yang baru mengenal WordPress untuk membuka lebar izin mereka (setel 777 izin) saat mereka melihatPermission Denied
kesalahan dari WordPress. Konfigurasi ini memungkinkan setiap pengguna (yang terpenting, proses server web) untuk mengubah file di instalasi WordPress Anda. Untuk mengunci ini, kami menyarankan Anda membuat satu pengguna untuk setiap instalasi WordPress sebagai pengguna protokol transfer file (FTP) untuk situs tersebut. Artikel ini mengasumsikan bahwa Anda memiliki satu situs dan Anda memberi nama server ini wp-user
.
Gunakan perintah berikut untuk membuat pengguna ini:
sudo useradd wp-user -d /home/wp-user -m -s /bin/false
Catatan :Kami menyarankan Anda menggunakan otentikasi kunci Secure Shell (SSH) saja. Jika Anda berencana menggunakan otentikasi kata sandi untuk FTP, Anda harus membuat kata sandi yang kuat untuk pengguna.
Setel izin
Anda harus menjadikan pengguna, selain pengguna sistem layanan web, sebagai pemilik root dokumen situs Anda. Anda juga harus menolak izin menulis ke layanan web. Layanan web hanya memerlukan izin baca untuk menyajikan konten, dan memberikan izin menulis atau mengeksekusi untuk itu meninggalkan vektor serangan untuk orang luar. Namun, karena WordPress harus dapat mengunggah file dan memperbarui kodenya sendiri, Anda perlu sedikit membengkokkan aturan ini.
Misalnya, Anda harus mengatur kepemilikan seluruh direktori sebagai wp-user:www-data
.
Pengaturan ini berarti bahwa wp-user
memiliki kepemilikan pengguna, dan www-data
(pengguna sistem untuk server web Apache®) memiliki kepemilikan grup. Bergantung pada sistem operasi Anda, pengguna ini mungkin juga bernama httpd
atau apache
. Jika Anda menggunakan nginx®, pengguna adalah nginx
. Untuk mengatur izin, jalankan perintah berikut, menggantikan nilai contoh /var/www/example.com/
dengan root dokumen situs Anda:
sudo chown -R wp-user:www-data /var/www/example.com/
Gunakan izin dasar berikut untuk instalasi WordPress Anda:
- 755 (drwxr-xr-x) untuk folder
- 644 (-rw-r–r–) untuk file
Izin ini memberikan wp-user
kemampuan untuk mengubah apa pun, dan akses hanya baca server web.
Contoh berikut menunjukkan cara menetapkan izin ini:
find /var/www/example.com/ -type d -exec sudo chmod 755 {} \;
find /var/www/example.com/ -type f -exec sudo chmod 644 {} \;
Izin ini memberikan wp-user
kemampuan untuk mengubah apa pun, dan akses hanya baca server web. Meskipun ini adalah praktik umum untuk situs statis, ada beberapa file yang harus dapat diakses dan dijalankan oleh WordPress agar berfungsi dengan benar. Daftar berikut menunjukkan pengecualian dan izin yang perlu Anda atur, dengan asumsi akar dokumen yang sama:
find /var/www/example.com/wp-content/uploads -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/upgrade -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/themes -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/plugins -type d -exec sudo chmod 775 {} \;
find /var/www/example.com/wp-content/uploads -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/upgrade -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/themes -type f -exec sudo chmod 664 {} \;
find /var/www/example.com/wp-content/plugins -type f -exec sudo chmod 664 {} \;
sudo chmod 775 /var/www/example.com/wp-config.php
WordPress menggunakan direktori ini untuk pembaruan sistem, pembaruan tema dan plugin, dan unggahan lampiran blog (biasanya gambar).
Pengguna admin WordPress
Mirip dengan pengguna root Linux®, instalasi WordPress Anda dilengkapi dengan admin pengguna. Karena ini adalah pengguna administratif yang ada di hampir setiap instalasi WordPress, peretas menargetkannya dalam serangan brute force. Cara termudah untuk menutup vektor serangan ini adalah dengan menghapus pengguna admin. Kami menyarankan Anda membuat pengguna dengan nama yang berbeda, memberikan hak istimewa administrator kepada pengguna tersebut, lalu menghapus pengguna admin.
Pembaruan aman
FTP pada dasarnya tidak aman, terutama ketika Anda menggunakan otentikasi berbasis kata sandi. Jauh lebih aman untuk mengatur pembaruan kunci SSH daripada menggunakan kata sandi. Gunakan langkah-langkah berikut untuk menyiapkan pembaruan kunci SSH:
-
Pastikan bahwa paket yang diperlukan telah diinstal pada sistem Anda. Di Ubuntu® atau Debian®, jalankan perintah berikut:
sudo apt-get update sudo apt-get install php5-dev libssh2-php libssh2-1-dev
-
Siapkan akses SSH Anda, lakukan langkah-langkah berikut sebagai
wp-user
. Karena Anda tidak mengizinkan login sebagaiwp-user
, Anda harus membuka shell dengan menggunakan perintah sudo berikut:sudo -u wp-user /bin/bash
-
Gunakan perintah berikut untuk pindah ke
wp-user
direktori home dan mengatur kunci SSH:cd ~ ssh-keygen -t rsa -b 4096 mkdir ~/.ssh; cd ~/.ssh echo 'from="127.0.0.1"' cat ~/.ssh/id_rsa.pub > authorized_keys exit
-
Selanjutnya, pastikan Anda mengatur izin dengan benar dengan menggunakan perintah berikut:
sudo chmod 700 /home/wp-user/.ssh sudo chmod 040 /home/wp-user/.ssh/* sudo chmod 644 /home/wp-user/.ssh/authorized_keys
-
Tambahkan baris berikut ke /var/www/example.com/wp-config.php . Anda berkas:
define('FTP_PUBKEY','/home/wp-user/id_rsa.pub'); define('FTP_PRIVKEY','/home/wp-user/id_rsa'); define('FTP_USER','wp-user'); define('FTP_PASS',''); define('FTP_HOST','127.0.0.1:22');
Anda seharusnya dapat memperbarui WordPress, plugin, dan tema tanpa diminta untuk informasi login.
Plug-in
Kami menyarankan Anda menggunakan plugin sesedikit mungkin untuk mencapai hasil yang Anda inginkan. Namun, kami menyarankan Anda menggunakan plugin berikut untuk meningkatkan keamanan:
- WP Keamanan Pro :Ini adalah plugin all-in-one yang memiliki fitur perlindungan seperti perlindungan login, pemindai malware, autentikasi dua faktor, dan firewall.
- Nonaktifkan XML-RPC :Anda dapat mengunci XML-RPC dengan menggunakan .htaccess mengajukan. Namun, kecuali Anda memiliki alasan kuat untuk memerlukan kendali jarak jauh dari instalasi WordPress Anda, lebih baik nonaktifkan untuk mencegah serangan pingback.
- Disqus :Karena sistem komentar pengguna bawaan untuk WordPress sangat rentan terhadap spam, kami menyarankan Anda menonaktifkan pendaftaran terbuka. Lakukan ini dengan menavigasi ke Setelan> Umum , lalu hapus centang Siapa saja dapat mendaftar . Kemudian gunakan Disqus untuk memoderasi komentar dan minta pengguna mengautentikasi terhadap akun Facebook® atau Google® mereka.