Membatasi wp-admin dan wp-login.php dengan Password Otentikasi Nginx


Saya pernah membahas mengenai bagaimana cara melindungi suatu situs menggunakan metode password otentikasi bawaan Web Server. Tujuannya adalah untuk melapisi perlindungan situs karena dirasa tidak cukup hanya mengandalkan otentikasi berdasarkan aplikasi. Juga karena situs memiliki halaman administrasi yang sudah banyak diketahui orang, salah satu contohnya WordPress.

WordPress merupakan aplikasi CMS sejuta umat, ia memiliki standar penamaan ketika masuk ke halaman administrasinya, yakni wp-admin atau wp-login.php. Jadi kalau ada situs berbasis WP, kita bisa langsung memanggil halaman administrasi dengan cara domainsitus.com/wp-admin atau domainsitus.com/wp-login.php, sangat mudah bukan? Tentu saja, karena kemudahannya tersebut biasanya dijadikan ladang percobaan untuk masuk ke halaman admin. Katakan saja seperti metode brute-force. Nah, kalau sudah seperti ini, kita perlu adanya perlindungan berlapis pada halaman admin.

Beberapa orang ada yang menyarankan mengganti halaman direktori wp-admin dengan direktori lainnya, juga mengganti wp-login.php dengan nama lainnya. Cara seperti ini merupakan cara yang paling tidak disarankan. Mengapa? karena WP memiliki mekanisme struktur direktori yang sudah baku, jika kita merubah salah satu struktur tersebut otomatis kita harus merubah kepada yang lainnya seperti tema dan plugin, juga dengan cara seperti ini kita tidak akan bisa meng-update WP itu sendiri.

Ada metode lainnya yakni dengan menggunakan plugin, kita bisa mencarinya dengan kata kunci wp-admin di plugin.. Cara ini merupakan cara yang lebih baik dan mudah digunakan. Akan tetapi, terkadang plugin tidak berjalan dengan sebagaimana mestinya. Malah menyebabkan situs menjadi rusak, pada akhirnya kita harus memperbaikinya secara manual.

Metode lainnya kita bisa memanfaatkan pembatasan (restriction) dari bawaan web server. Nah, tulisan kali ini kita akan membahas mengenai pembatasan wp-admin dan wp-login.php dengan password otentikasi bawaah Nginx.

Persyaratan

Pastikan sudah membaca tulisan ini: Memanfaatkan Nginx Password Authentication untuk Keamaan Server.

Nginx

Masukan pengaturan di bawah ini pada berkas nginx.conf atau pada tiap-tiap server block Anda misalnya di /etc/nginx/sites-available/default.

Server {

  location /wp-admin/ {
       auth_basic "Restricted";
       auth_basic_user_file /etc/nginx/.htpasswd;
  }

  location ^~ /wp-login.php {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/.htpasswd;

      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/run/php/php7.0.sock;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include fastcgi_params;
   }

...

Pastikan pada baris ke-13 pada kode fastcgi_pass unix:/run/php/php7.0.sock; di sesuaikan dengan file socket Anda. Atau bisa ikuti artikel di bawah ini:

Sekarang tinggal Anda tes jika menampilkan otentikasi seperti gambar di bawah ini:

Atau

Artinya kita telah berhasil. Jika gagal login maka akan menampilkan halaman error 401. Oke semoga bermanfaat.