Kako lozinkom zaštititi web direktorije u Apacheu koristeći .htaccess datoteku


Kada upravljate online projektima, često morate ograničiti pristup tom projektu kako biste ga zaštitili od vanjskog svijeta. Za to mogu postojati različiti razlozi – na primjer, želite spriječiti pretraživače pretraživača da pristupe vašoj web-lokaciji dok je još u fazi razvoja.

U ovom tutorijalu pokazat ću vam kako zaštititi lozinkom različite direktorije web lokacija na Apache web serveru. Postoji mnogo načina na koje to možete postići, ali mi ćemo pregledati dva od njih koji se najčešće koriste.

Prva metoda konfigurira zaštitu lozinkom direktno u Apacheovoj konfiguracijskoj datoteci, dok druga koristi .htaccess datoteku.

Zahtjevi

Da biste postavili zaštitu lozinkom za svoje web imenike, morat ćete imati:

  • Radni Apache web server
  • Direktiva AllowOverride AuthConfig mora biti omogućena u Apache konfiguracijskoj datoteci.

Postavite Apache direktorij zaštićen lozinkom

1. Za ovaj vodič štitit ćemo glavni web root direktorij /var/www/html. Da zaštitite taj direktorij, otvorite konfiguraciju vašeg Apachea:

---------------- On RedHat/CentOS based systems ----------------
vi /etc/httpd/conf/httpd.conf

---------------- On Debian/Ubuntu based systems ----------------
nano /etc/apache2/sites-available/000-default.conf

2. Pronađite korijen direktorija Apache dokumenata za /var/www/html i dodajte sljedeće stvari kako je predloženo:

Na Apache 2.2 verziji

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All
Order allow,deny
Allow from all 
</Directory>

Na Apache 2.4 verziji

<Directory /var/www/html> 
Options Indexes Includes FollowSymLinks MultiViews 
AllowOverride All 
Require all granted 
</Directory>

3. Sačuvajte datoteku i ponovo pokrenite Apache koristeći sljedeću naredbu:

--------------- On Systemd -------------------
systemctl restart httpd         [On RedHat based systems]
systemctl restart apache2       [On Debian based systems]


--------------- On SysV init -----------------
service httpd restart           [On RedHat based systems]
service apache2 restart         [On Debian based systems]

4. Sada ćemo koristiti naredbu htpasswd za generiranje korisničkog imena i lozinke za naš zaštićeni direktorij. Ova naredba se koristi za upravljanje korisničkim datotekama za osnovnu autentifikaciju.

Opća sintaksa naredbe je:

htpasswd -c filename username

Opcija -c specificira datoteku koja će zadržati šifriranu lozinku, a korisničko ime specificira korisnika za autentifikaciju.

5. Naša datoteka lozinke mora se nalaziti izvan Apache-ovog web-dostupnog direktorija tako da je dobro zaštićena. U tu svrhu ćemo kreirati novi direktorij:

mkdir /home/tecmint

6. Nakon toga ćemo generirati naše korisničko ime i lozinku koji će biti pohranjeni u tom direktoriju:

htpasswd -c /home/tecmint/webpass tecmint

Nakon što izvršite ovu naredbu morat ćete dvaput unijeti lozinku za našeg novog korisnika "tecmint":

Nakon toga ćemo morati da se uverimo da Apache može da pročita datoteku “webpass”. U tu svrhu, morat ćete promijeniti vlasništvo nad tom datotekom sljedećom naredbom:

---------------- On RedHat/CentOS based systems ----------------
chown apache: /home/tecmint/webpass
chmod 640 /home/tecmint/webpass
---------------- On Debian/Ubuntu based systems ----------------
chown www-data /home/tecmint/webpass
chmod 640 /home/tecmint/webpass

7. U ovom trenutku naš novi korisnik i lozinka su spremni. Sada moramo reći Apacheu da zatraži lozinku kada pristupa našem ciljanom direktoriju. U tu svrhu kreirajte datoteku pod nazivom .htaccess u /var/www/html:

vi /var/www/html/.htaccess

U njega dodajte sljedeći kod:

AuthType Basic
AuthName "Restricted Access"
AuthUserFile /home/tecmint/webpass
Require user tecmint

8. Sada sačuvajte datoteku i testirajte svoje postavke. Otvorite svoj pretraživač i unesite svoju IP adresu ili ime domene u web pretraživač, na primjer:

http://ip-address

Od vas bi trebalo biti zatraženo korisničko ime i lozinka:

Unesite korisničko ime i lozinku koje ste postavili da nastavite na svoju stranicu.

Dodatne napomene

Ako koristite dijeljeni hosting, najvjerovatnije nećete imati pristup Apache konfiguracijskoj datoteci. Međutim, većina hosting kompanija je omogućila opciju “AllowOverride All” prema zadanim postavkama. To znači da ćete samo trebati generirati korisničko ime i lozinku, a zatim odabrati direktorij koji želite zaštititi. Ovo značajno olakšava vaš zadatak.

Zaključak

Nadam se da vam je ovaj vodič bio koristan i da vam može pomoći da postignete svoj cilj. Ako imate bilo kakvih pitanja ili komentara, ne ustručavajte se da ih objavite u odeljku ispod.