Cara Mengonfigurasi Otentikasi HTTP Dasar di Nginx


Otentikasi HTTP dasar adalah mekanisme keamanan untuk membatasi akses ke situs web/aplikasi Anda atau beberapa bagiannya dengan menyiapkan otentikasi nama pengguna/kata sandi sederhana. Pada dasarnya ini dapat digunakan untuk melindungi seluruh server HTTP, blok server individual (host virtual di Apache) atau blok lokasi.

Baca Juga: Cara Mengatur Virtual Host Berbasis Nama dan IP (Blok Server) dengan NGINX

Seperti namanya, ini bukanlah metode yang aman untuk diandalkan; Anda harus menggunakannya bersama dengan langkah-langkah keamanan lain yang lebih andal. Misalnya, jika aplikasi web Anda berjalan di HTTP, maka kredensial pengguna dikirimkan dalam bentuk teks biasa, jadi Anda harus mempertimbangkan untuk mengaktifkan HTTPS.

Tujuan panduan ini adalah membantu Anda menambahkan lapisan keamanan kecil namun berguna untuk melindungi konten pribadi/hak istimewa di aplikasi web Anda (seperti, namun tidak terbatas pada sisi administrator). Anda juga dapat menggunakannya untuk mencegah akses ke website atau aplikasi yang masih dalam tahap pengembangan.

Persyaratan

  1. Instal LEMP Stack di CentOS/RHEL 7
  2. Instal LEMP Stack di Ubuntu/Debian

Buat File Pengguna Otentikasi HTTP

Anda harus mulai dengan membuat file yang akan menyimpan pasangan nama pengguna:kata sandi. Kami akan menggunakan utilitas htpasswd dari Apache HTTP Server, untuk membuat file ini.

Pertama periksa apakah apache2-utils atau httpd-tools, paket yang menyediakan utilitas htpasswd telah terinstal di sistem Anda, jika tidak, jalankan perintah yang sesuai untuk distribusi Anda untuk menginstalnya:

yum install httpd-tools		[RHEL/CentOS]
sudo apt install apache2-utils	[Debian/Ubuntu]

Selanjutnya, jalankan perintah htpasswd di bawah ini untuk membuat file kata sandi dengan pengguna pertama. Opsi -c digunakan untuk menentukan file passwd, setelah Anda menekan [Enter], Anda akan diminta memasukkan kata sandi pengguna.

htpasswd -c /etc/nginx/conf.d/.htpasswd developer

Tambahkan pengguna kedua, dan jangan gunakan opsi -c di sini.

htpasswd /etc/nginx/conf.d/.htpasswd admin

Sekarang setelah Anda menyiapkan file kata sandi, lanjutkan untuk mengonfigurasi bagian server web Anda yang ingin Anda batasi aksesnya. Untuk melihat konten file kata sandi (yang mencakup nama pengguna dan kata sandi terenkripsi), gunakan perintah cat di bawah.

cat /etc/nginx/conf.d/.htpasswd 

Konfigurasikan Otentikasi HTTP untuk Nginx

Seperti yang kami sebutkan sebelumnya, Anda dapat membatasi akses ke server web Anda, satu situs web (menggunakan blok servernya) atau arahan lokasi. Dua arahan yang berguna dapat digunakan untuk mencapai hal ini.

  • auth_basic – mengaktifkan validasi nama pengguna dan sandi menggunakan protokol “Otentikasi Dasar HTTP ”.
  • auth_basic_user_file – menentukan file kata sandi.

Lindungi Kata Sandi Host Virtual Nginx

Untuk menerapkan otentikasi dasar untuk seluruh server web, yang berlaku untuk semua blok server, buka file /etc/nginx/nginx.conf dan tambahkan baris di bawah ini dalam konteks http:

http{
	auth_basic           "Restricted Access!";
    	auth_basic_user_file /etc/nginx/conf.d/.htpasswd; 
	……...
}

Lindungi Kata Sandi Situs Web atau Domain Nginx

Untuk mengaktifkan autentikasi dasar bagi domain atau sub-domain tertentu, buka file konfigurasinya di /etc/nginx/conf.d/ atau /etc/nginx/conf/sites-available (tergantung cara Anda menginstal Nginx), lalu tambahkan konfigurasi di bawah ini dalam blok atau konteks server:

server {
	listen 			80;
	server_name    	  example.com;
	auth_basic           	"Restricted Access!";
    	auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	location /  {
		……..
	}
	……...
}

Direktori Web Lindungi Kata Sandi di Nginx

Anda juga dapat mengaktifkan autentikasi dasar dalam arahan lokasi. Pada contoh di bawah, semua pengguna yang mencoba mengakses blok lokasi /admin akan diminta untuk mengautentikasi.

server {
	listen 			80;
	server_name    	example.com www.example.com;
	
	location / {
		……..
	}
	location /admin/ {
		auth_basic           	"Restricted Access!";
    		auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	}

	location /public/{
		auth_basic  off;	#turns off basic http authentication off for this block
	}
	……..
}

Jika Anda telah mengkonfigurasi otentikasi HTTP dasar, semua pengguna yang mencoba mengakses server web Anda atau sub-domain atau bagian tertentu dari sebuah situs (tergantung di mana Anda menerapkannya), akan dimintai nama pengguna dan kata sandi seperti yang ditunjukkan pada gambar di bawah .

Jika autentikasi pengguna gagal, kesalahan “401 Otorisasi Diperlukan ” akan ditampilkan seperti yang ditunjukkan di bawah ini.

Anda dapat menemukan informasi lebih lanjut di membatasi Akses dengan Otentikasi HTTP Dasar.

Anda mungkin juga ingin membaca panduan berguna terkait server HTTP Nginx berikut ini.

  1. Cara Melindungi Direktori Web dengan Kata Sandi di Nginx
  2. Panduan Utama untuk Mengamankan, Memperkuat, dan Meningkatkan Kinerja Nginx
  3. Menyiapkan HTTPS dengan Mari Enkripsi Sertifikat SSL Untuk Nginx

Dalam panduan ini, kami menunjukkan cara menerapkan otentikasi HTTP dasar di server web HTTP Nginx. Untuk mengajukan pertanyaan, gunakan formulir umpan balik di bawah.