Nginx'te Temel HTTP Kimlik Doğrulaması Nasıl Yapılandırılır


Temel HTTP kimlik doğrulaması, basit kullanıcı adı/şifre kimlik doğrulaması ayarlayarak web sitenize/uygulamanıza veya bazı bölümlerine erişimi kısıtlayan bir güvenlik mekanizmasıdır. Temel olarak tüm HTTP sunucusunu, bireysel sunucu bloklarını (Apache'deki sanal ana bilgisayarlar) veya konum bloklarını korumak için kullanılabilir.

Ayrıca Okuyun: NGINX ile İsim Tabanlı ve IP Tabanlı Sanal Ana Bilgisayarlar (Sunucu Blokları) Nasıl Kurulur

Adından da anlaşılacağı gibi güvenilecek güvenli bir yöntem değildir; bunu diğer daha güvenilir güvenlik önlemleriyle birlikte kullanmalısınız. Örneğin, web uygulamanız HTTP üzerinde çalışıyorsa kullanıcı kimlik bilgileri düz metin olarak iletilir; dolayısıyla HTTPS'yi etkinleştirmeyi düşünmelisiniz.

Bu kılavuzun amacı, web uygulamalarınızdaki özel/ayrıcalıklı içeriği (yönetici tarafları gibi ancak bunlarla sınırlı olmamak üzere) korumak için küçük ama kullanışlı bir güvenlik katmanı eklemenize yardımcı olmaktır. Ayrıca henüz geliştirme aşamasında olan bir web sitesine veya uygulamaya erişimi engellemek için de kullanabilirsiniz.

Gereksinimler

  1. LEMP Stack'i CentOS/RHEL 7'ye yükleyin
  2. LEMP Stack'ı Ubuntu/Debian'a yükleyin

HTTP Kimlik Doğrulaması Kullanıcı Dosyası Oluştur

kullanıcı adı:şifre çiftlerini saklayacak bir dosya oluşturarak başlamalısınız. Bu dosyayı oluşturmak için Apache HTTP Sunucusunun htpasswd yardımcı programını kullanacağız.

Öncelikle htpasswd yardımcı programını sağlayan paketler olan Apache2-utils veya httpd-tools'un sisteminizde yüklü olup olmadığını kontrol edin, aksi halde aşağıdakiler için uygun komutu çalıştırın: yüklemek için dağıtımınız:

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

Daha sonra ilk kullanıcıyla şifre dosyasını oluşturmak için aşağıdaki htpasswd komutunu çalıştırın. -c seçeneği passwd dosyasını belirtmek için kullanılır, [Enter] tuşuna bastığınızda sizden kullanıcı şifresini girmeniz istenecektir.

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

İkinci bir kullanıcı ekleyin ve burada -c seçeneğini kullanmayın.

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

Artık şifre dosyanız hazır olduğuna göre, web sunucunuzun erişimi kısıtlamak istediğiniz bölümlerini yapılandırmaya devam edin. Parola dosyasının içeriğini (kullanıcı adlarını ve şifrelenmiş parolaları içerir) görüntülemek için aşağıdaki cat komutunu kullanın.

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

Nginx için HTTP Kimlik Doğrulamasını Yapılandırma

Daha önce de belirttiğimiz gibi, web sunucunuza, tek bir web sitesine (sunucu bloğunu kullanarak) veya konum yönergesine erişimi kısıtlayabilirsiniz. Bunu başarmak için iki yararlı yönerge kullanılabilir.

  • auth_basic – “HTTP Temel Kimlik Doğrulaması” protokolünü kullanarak kullanıcı adı ve şifrenin doğrulanmasını açar.
  • auth_basic_user_file – şifre dosyasını belirtir.

Nginx Sanal Konaklarını Parola Korumalı

Tüm sunucu blokları için geçerli olan temel kimlik doğrulamasını tüm web sunucusuna uygulamak için /etc/nginx/nginx.conf dosyasını açın ve aşağıdaki satırları http bağlamına ekleyin:

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

Nginx Web Sitesini veya Etki Alanını Parolayla Koruyun

Belirli bir alan adı veya alt alan adı için temel kimlik doğrulamayı etkinleştirmek üzere /etc/nginx/conf.d/ veya /etc/nginx/conf/sites-available altındaki yapılandırma dosyasını açın. Strong> (Nginx'i nasıl yüklediğinize bağlı olarak), ardından aşağıdaki yapılandırmayı sunucu bloğuna veya bağlamına ekleyin:

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

Nginx'te Parola Korumalı Web Dizini

Temel kimlik doğrulamayı bir konum yönergesi içinde de etkinleştirebilirsiniz. Aşağıdaki örnekte /admin konum bloğuna erişmeye çalışan tüm kullanıcılardan kimlik doğrulaması istenecektir.

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
	}
	……..
}

Temel HTTP kimlik doğrulamasını yapılandırdıysanız, web sunucunuza, alt alan adınıza veya sitenin belirli bir bölümüne (bunu uyguladığınız yere bağlı olarak) erişmeye çalışan tüm kullanıcılardan aşağıdaki ekran görüntüsünde gösterildiği gibi bir kullanıcı adı ve şifre istenecektir. .

Başarısız bir kullanıcı kimlik doğrulaması durumunda, aşağıda gösterildiği gibi “401 Yetkilendirme Gerekiyor” hatası görüntülenecektir.

Temel HTTP Kimlik Doğrulaması ile Erişimi kısıtlama bölümünde daha fazla bilgi bulabilirsiniz.

Ayrıca Nginx HTTP sunucusuyla ilgili aşağıdaki faydalı kılavuzları da okumak isteyebilirsiniz.

  1. Nginx'te Web Dizinlerini Parolayla Koruma
  2. Nginx'in Performansını Güvenceye Almak, Güçlendirmek ve Artırmak için En İyi Kılavuz
  3. Nginx İçin Let's Encrypt SSL Sertifikası ile HTTPS Kurulumu

Bu kılavuzda, Nginx HTTP web sunucusunda temel HTTP kimlik doğrulamasının nasıl uygulanacağını gösterdik. Soru sormak için aşağıdaki geri bildirim formunu kullanın.