Cuplikan .htaccess Terbaik untuk Meningkatkan Keamanan WordPress


Keamanan WordPress adalah salah satu faktor yang paling diremehkan di kalangan blogger pemula. Dalam instalasi WordPress tanpa pengawasan, ada beberapa potensi kerentanan yang dibiarkan begitu saja. Sebagian besar tutorial instalasi WordPress menjelaskan cara cepat dan mudah untuk menerapkan WordPress dalam hitungan menit. Namun mereka melewatkan beberapa faktor keamanan penting. Misalnya, penelusuran direktori dan penggunaan nama pengguna 'admin' dianggap sebagai celah keamanan yang serius. Hari ini kita akan melihat 10 cuplikan kode .htaccess yang akan membantu meningkatkan keamanan blog WordPress Anda. Sebelum kita mulai, mari kita lihat sekilas apa itu file htaccess.

Apa itu file .htaccess?

File htaccess adalah file konfigurasi opsional untuk diinterpretasikan oleh server web Apache, untuk setiap direktori. Anda dapat menyimpan berbagai pengaturan dalam file tersebut seperti: melindungi direktori dengan kata sandi, memblokir IP, memblokir file atau folder dari akses publik, dll. Secara tradisional, file .htaccess ada di direktori instalasi dasar WordPress. Ini menyimpan struktur tautan permanen secara default.

TIPS: Sebelum memulai tutorial, pastikan untuk mencadangkan file .htaccess saat ini (jika ada) di layanan penyimpanan cloud seperti Dropbox. Ini untuk mengembalikan ke file .htaccess terakhir yang diketahui berfungsi, jika cuplikan kode tertentu merusak situs Anda. Mari kita mulai.

1. Blokir Bot Jahat

Salah satu kegunaan terbaik file .htaccess adalah kemampuannya untuk menolak beberapa alamat IP mengakses situs Anda. Hal ini berguna ketika memblokir pengirim spam yang dikenal dan sumber akses mencurigakan atau berbahaya lainnya. Kodenya adalah:

# Block one or more IP address.
# Replace IP_ADDRESS_* with the IP you want to block

<Limit GET POST>
order allow,deny
deny from IP_ADDRESS_1
deny from IP_ADDRESS_2
allow from all
</Limit>

Dimana IP_ADDRESS_1 adalah IP pertama yang ingin Anda cegah mengakses situs Anda. Anda dapat menambahkan IP sebanyak yang Anda inginkan. Apa pun agen pengguna (browser) yang menggunakan alamat IP ini, mereka tidak akan dapat mengakses satu file pun dari server Anda. Server web akan secara otomatis menolak semua akses.

2. Nonaktifkan Penjelajahan Direktori

Ini adalah salah satu kelemahan keamanan yang paling dirusak di situs WordPress. Secara default, server web Apache mengaktifkan penelusuran direktori. Ini berarti bahwa semua file dan folder di dalam direktori root (terkadang disebut direktori home) server web dapat terdaftar dan dapat diakses oleh pengunjung. Anda tidak menginginkan hal itu karena Anda tidak ingin orang menelusuri unggahan media Anda atau file tema atau plugin Anda.

Jika secara acak saya memilih 10 situs web pribadi atau bisnis yang menjalankan WordPress, 6-8 di antaranya tidak akan menonaktifkan penelusuran direktori. Hal ini memungkinkan siapa saja untuk dengan mudah mengendus folder wp-content/uploads atau direktori lain mana pun yang tidak memiliki file index.php default . Faktanya, tangkapan layar yang Anda lihat berasal dari salah satu situs klien saya, sebelum saya merekomendasikan perbaikannya. Cuplikan kode untuk menonaktifkan penjelajahan direktori:

# Disable directory browsing
Options All -Indexes

3. Izinkan Hanya File Terpilih dari konten-wp

Seperti yang Anda ketahui, folder wp-content berisi sebagian besar tema, plugin, dan semua media yang Anda unggah. Anda tentu tidak ingin orang lain mengaksesnya tanpa batasan. Selain menonaktifkan penjelajahan direktori, Anda juga dapat menolak akses semua jenis file, kecuali beberapa. Intinya, Anda dapat secara selektif membuka blokir file seperti JPG, PDF, DOCX, CSS, JS, dll. dan menolak file lainnya. Untuk melakukannya, tempelkan cuplikan kode ini di file .htaccess Anda:

# Disable access to all file types except the following
Order deny,allow
Deny from all
<Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|rtf|odf|zip|rar)$">
Allow from all
</Files>

Anda harus membuat file .htaccess baru dengan kode tersebut dan menempelkannya di folder wp-content. Jangan letakkan ini di direktori instalasi dasar – jika tidak, ini tidak akan berfungsi. Anda juga dapat menambahkan jenis file apa pun ke daftar dengan menambahkan '|' setelah 'rar'. Daftar di atas berisi file-file yang diperlukan – XML, CSS dan JavaScript, format gambar dan dokumen umum, dan terakhir format arsip yang paling sering digunakan.

4. Batasi Semua Akses ke wp-include

Folder wp-includes hanya berisi file yang benar-benar diperlukan untuk menjalankan versi inti WordPress – file tanpa plugin atau tema apa pun. Ingat, tema default masih berada di direktori wp-content/theme. Oleh karena itu, tidak ada pengunjung (termasuk Anda) yang memerlukan akses ke konten folder wp-include. Anda dapat menonaktifkan akses menggunakan cuplikan kode berikut ini:

# Block wp-includes folder and files
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

5. Izinkan hanya Alamat IP Terpilih untuk Mengakses wp-admin

Folder wp-admin berisi file yang diperlukan untuk menjalankan dashboard WordPress. Dalam kebanyakan kasus, pengunjung Anda tidak memerlukan akses ke dashboard WordPress, kecuali mereka ingin mendaftarkan akun. Tindakan keamanan yang baik adalah dengan mengaktifkan hanya beberapa alamat IP terpilih untuk mengakses folder wp-admin. Anda dapat mengizinkan IP orang yang memerlukan akses ke dasbor WordPress – editor, kontributor, dan admin lainnya. Cuplikan kode ini hanya mengizinkan IP tetap untuk mengakses folder wp-admin dan menolak akses ke seluruh dunia.

# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 302.143.54.102
allow from IP_ADDRESS_2
</Limit>

Pastikan Anda membuat file .htaccess baru dan menempelkannya di folder wp-admin dan bukan di direktori instalasi dasar. Jika yang terakhir, tidak seorang pun kecuali Anda yang dapat menelusuri situs Anda – bahkan mesin pencari! Anda tentu tidak menginginkan hal tersebut. Beberapa kelemahan dari tindakan ini adalah sebagai berikut:

  • Jika situs Anda mengizinkan atau mempromosikan pendaftaran pengguna baru, hampir mustahil untuk melacak jumlah pengguna. Misalnya di WPExplorer, jika Anda ingin mengunduh tema gratis kami yang mengagumkan, Anda harus mendaftar.
  • Orang-orang dengan alamat IP dinamis (kebanyakan pengguna broadband ADSL yang menggunakan protokol PPP atau PPPoE) mengalami perubahan IP, setiap kali mereka keluar dan masuk ke ISP mereka. Tentu saja tidak praktis untuk melacak semua IP ini dan menambahkannya ke file htaccess.
  • Mobile broadband: Baik Anda menggunakan 3G atau 4G, alamat IP Anda bergantung pada menara seluler yang saat ini Anda sambungkan. Katakanlah Anda sedang bepergian – IP Anda akan terus berubah setiap beberapa mil Anda berpindah dari tempat asal. Sekali lagi, melacak file htaccess hampir mustahil.
  • Hotspot Wi-Fi Publik: Menggunakan kredensial saat terhubung ke Internet menggunakan hotspot Wi-Fi publik adalah hal yang sangat dilarang, karena anak-anak dengan perangkat lunak kecil dapat mengekstrak setiap karakter yang Anda ketik. Belum lagi, setiap hotspot Wi-Fi akan memiliki alamat IP yang unik.

Untungnya, semua kelemahan ini (kecuali yang pertama), dapat diperbaiki dengan menggunakan VPN. Jika Anda mengatur VPN Anda untuk terhubung hanya menggunakan satu alamat IP, Anda cukup menambahkannya ke file htaccess Anda, dan semua masalah Anda akan terpecahkan.

6. Lindungi wp-config.php dan .htaccess dari semua orang

File wp-config.php berisi kredensial akses paling sensitif dari situs WordPress Anda. Ini berisi nama database dan kredensial akses serta berbagai data penting lainnya, di antara pengaturan lainnya. Dalam situasi apa pun Anda tidak ingin orang lain melihat file ini. Dan tentu saja, Anda ingin menonaktifkan akses publik ke sumber semua keamanan ini – file .htaccess itu sendiri. Anda dapat menonaktifkan akses ke wp-config.php dengan kode berikut:

# Deny access to wp-config.php file
<files wp-config.php>
order allow,deny
deny from all
</files>

Untuk menolak akses ke semua file htaccess (ingat beberapa file mungkin berada di wp-admin dan folder lainnya), gunakan cuplikan kode ini:

# Deny access to all .htaccess files
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

7. Tolak Hotlinking Gambar

Salah satu peretasan file .htaccess yang paling keren, peretasan ini mengirimkan pengikis konten yang berjalan dengan ekor di antara kedua kakinya. Saat seseorang menggunakan gambar situs Anda, bandwidth Anda terpakai dan seringkali, Anda bahkan tidak diberi kredit untuk itu. Cuplikan kode ini menghilangkan masalah tersebut dan mengirimkan gambar ini ketika hotlink terdeteksi.

# Prevent image hotlinking script. Replace last URL with any image link you want.
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/MlQAH71.jpg [NC,R,L]

8. Aktifkan Caching Peramban

Juga dikenal sebagai caching sisi klien, peretasan .htaccess ini dengan mengaktifkan opsi caching browser yang direkomendasikan untuk situs WordPress Anda. Anda juga dapat menggunakannya di proyek lain – situs HTML, dll.

# Setup browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

9. Redirect ke halaman Pemeliharaan

Saat Anda melakukan migrasi host web atau melakukan beberapa tugas pemeliharaan, selalu disarankan untuk membuat file HTML statis “tidak aktif untuk pemeliharaan” untuk memberi tahu pengunjung Anda bahwa situs web sedang menjalani operasi peningkatan atau pemeliharaan. Cukup buat file maintenance.html (atau nama file lainnya) dan unggah ke direktori instalasi dasar WordPress. Tempel cuplikan berikut di file .htaccess Anda. Setelah operasi selesai, pastikan untuk menghapus atau mengomentari baris ini untuk kembali ke operasi keseluruhan. Anda dapat berkomentar dengan menambahkan '#' di awal setiap baris.

# Redirect all traffic to maintenance.html file
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L] 

10. Halaman Kesalahan Khusus

Anda juga dapat menggunakan file .htaccess untuk mengonfigurasi halaman kesalahan khusus yang mudah digunakan untuk kesalahan seperti 403, 404, dan 500. Setelah Anda menyiapkan halaman kesalahan – katakanlah error.html, unggah halaman tersebut ke direktori instalasi WordPress dasar Anda. Kemudian tambahkan cuplikan kode berikut ke file .htaccess Anda untuk mengaktifkan halaman kesalahan khusus:

# Custom error page for error 403, 404 and 500
ErrorDocument 404 /error.html
ErrorDocument 403 /error.html
ErrorDocument 500 /error.html

Kesimpulan:

Hari ini kita telah mempelajari beberapa peretasan htaccess paling keren untuk memperkuat situs WordPress Anda. Saya menyarankan Anda untuk mencoba setiap modul satu per satu sambil mengambil cadangan file .htaccess sebelum dan sesudah menguji setiap modul. Ini karena file .htaccess sangat penting. Karakter '#' yang hilang atau '' yang salah tempat dapat merusak integritas situs Anda. Jika Anda sering mengakses dasbor WordPress saat bepergian, disarankan untuk tidak mengaktifkan IP selektif ke folder wp-admin Anda.

Kepada Anda – apa pendapat Anda tentang postingan ini? Apakah menurut Anda ini sepadan dengan kerumitan mengedit file htaccess? Tahukah Anda tip keamanan yang lebih baik? Kami ingin mendengar pendapat Anda.