Com protegir amb contrasenya els directoris web a Apache mitjançant el fitxer .htaccess


Quan gestioneu projectes en línia, sovint heu de limitar l'accés a aquest projecte per protegir-lo del món exterior. Pot ser que hi hagi diferents motius per això; per exemple, voleu evitar que els rastrejadors dels motors de cerca accedeixin al vostre lloc mentre encara està en fase de desenvolupament.

En aquest tutorial, us mostraré com podeu protegir amb contrasenya diferents directoris de llocs web al servidor web Apache. Hi ha moltes maneres d'aconseguir-ho, però revisarem dues d'elles que s'utilitzen més habitualment.

El primer mètode configura la protecció amb contrasenya directament al fitxer de configuració d'Apache, mentre que el segon utilitza el fitxer .htaccess.

Requisits

Per configurar la protecció amb contrasenya per als vostres directoris web, haureu de tenir:

  • Un servidor web Apache que funcioni
  • La directiva AllowOverride AuthConfig s'ha d'habilitar al fitxer de configuració d'Apache.

Configura el directori protegit amb contrasenya d'Apache

1. Per a aquest tutorial, protegirem el directori arrel web principal /var/www/html. Per protegir aquest directori, obriu la configuració del vostre Apache:

---------------- 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. Cerqueu l'arrel del directori de documents d'Apache per a /var/www/html i afegiu les coses següents tal com us suggereix:

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

3. Deseu el fitxer i reinicieu Apache mitjançant l'ordre següent:

--------------- 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. Ara utilitzarem l'ordre htpasswd per generar el nom d'usuari i la contrasenya per al nostre directori protegit. Aquesta ordre s'utilitza per gestionar fitxers d'usuari per a l'autenticació bàsica.

La sintaxi general de l'ordre és:

# htpasswd -c filename username

L'opció -c especifica el fitxer que conservarà la contrasenya xifrada i nom d'usuari especifica l'usuari per a l'autenticació.

5. El nostre fitxer de contrasenyes ha d'estar situat fora del directori d'accés web d'Apache perquè estigui ben protegit. Per a això, crearem un nou directori:

# mkdir /home/tecmint

6. Després d'això, generarem el nostre nom d'usuari i contrasenya que s'emmagatzemaran en aquest directori:

# htpasswd -c /home/tecmint/webpass tecmint

Un cop executeu aquesta ordre, haureu d'introduir una contrasenya per al nostre nou usuari \tecmint\ dues vegades:

Després d'això, haurem d'assegurar-nos que Apache és capaç de llegir el fitxer webpass. Per a això, haureu de canviar la propietat d'aquest fitxer amb l'ordre següent:

---------------- 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. En aquest moment, el nostre nou usuari i contrasenya estan preparats. Ara hem de dir a Apache que sol·liciti la contrasenya quan accedeixi al nostre directori de destinació. Per a això, creeu un fitxer anomenat .htaccess a /var/www/html:

# vi /var/www/html/.htaccess

Afegiu-hi el codi següent:

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

8. Ara deseu el fitxer i poseu a prova la vostra configuració. Obriu el vostre navegador i introduïu la vostra adreça IP o nom de domini al navegador web, per exemple:

http://ip-address

Se us demanarà el nom d'usuari i la contrasenya:

Introduïu el nom d'usuari i la contrasenya que heu definit per anar a la vostra pàgina.

Notes addicionals

Si utilitzeu allotjament compartit, probablement no tingueu accés al fitxer de configuració d'Apache. Tanmateix, la majoria d'empreses d'allotjament han activat l'opció AllowOverride All de manera predeterminada. Això vol dir que només haureu de generar el nom d'usuari i la contrasenya i després seleccionar el directori que voleu protegir. Això facilita significativament la vostra tasca.

Conclusió

Espero que aquest tutorial us sigui útil i us ajudi a assolir el vostre objectiu. Si teniu cap pregunta o comentari, no dubteu a publicar-los a la secció següent.