htpasswd - proste zabezpieczenie strony www

Tematem dzisiejszego wpisu jest proste zabezpieczenie strony za pomocą nazwy użytkownika i hasła.

Potrzebujemy do tego htpasswd oraz serwera apache lub nginx.

Aby skorzystać z htpasswd musimy go zainstalować z apache:

apt-get install apache2-utils

Pierwsze co potrzebujemy to utworzenie pliku z loginem i hasłem. Bardzo ważne jest to, żeby nie był on dostępny poziomu przeglądarki, tzn poza katalogiem domyślnym /var/www .
Jeśli virtual hosty wskazują na inny folder/y to ich też unikamy :)

Ok, do roboty.

Przechodzimy do katalogu, w którym chcemy składować nawet pliki. W moim przypadku będzie to /passes . Wewnątrz wpisujemy polecenie:

htpasswd -c nazwa_pliku nazwa_uzytkownika

np:

htpasswd -c .htpasswd.gg gg

Zostaniemy poproszeni dwukrotnie o hasło dla tego użytkownika.

Teraz przechodzimy do konfiguracji virtualnego hosta dla apache/nginx . Poniżej pokazuje tylko fragmenty konfiguracji:

 

Apache:

<Directory "/var/www/html/protected">
  AuthType Basic
  AuthName "Authentication Required"
  AuthUserFile "/passes/.htpasswd.gg"
  Require valid-user
 
  Order allow,deny
  Allow from all
</Directory>

Nginx:

location / {
  try_files $uri $uri/ /index.html;
  allow all;
  auth_basic "Restricted";
  auth_basic_user_file /passes/.htpasswd.gg;
}

Teraz pozostaje nam restart serwera WWW w zależności od aplikacji:

/etc/init.d/apache2 restart

/etc/init.d/nginx restart

 

Gotowe. Po przejściu na stronę otrzymujemy śliczne okienko z prośbą o nazwę użytkownika i hasło :)

htpasswd.png