Autentificación en
Apache2
Caso práctico: se quiere establecer seguridad para que
solamente algunos usuarios puedan acceder a un fichero alojado en un servidor
Apache2.
Antes de nada decir que las diferencias entre
Autentificación/Autenticación, y Autorización son:
- Autentificación: verificar si la persona o entidad que se intenta conectar o acceder a un sistema es quien dice ser.
- Autorización: acción por el que se concede permiso a una persona o entidad a realizar otras acciones (lectura, modificación, escritura…) sobre un recurso de un servidor.
Se pedía dos formas de acceder a la lectura de un fichero en
el servidor:
1) En forma de autentificación en el sitio web
pasando nombre de usuario y password
2) Verificar que la URL pasada para consultar el
recurso posee un ‘token’ o clave en esta URL en forma de texto.
1) Autentificación en web
Para este caso tenemos que hacer lo
siguiente:
a)
sudo htpasswd –c /etc/apache2/.htpasswd
nombreusuario
A continuación nos pedirá el password y este se guardará en el archivo .htpasswd
Podemos verlo con el comando:
cat /etc/apache2/.htpasswd
b)
sudo vi
/etc/apache2/sites-enabled/000-default.conf
Añadir:
<VirtualHost *:80>
…
<Directory "/var/www/html/mipagina/">
AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
</Directory>
</VirtualHost>
Lo que aquí configuramos es la forma de
autentificación y dónde están las contraseñas alojadas para poder validad el
usuario
Luego reiniciar el servidor Apache:
sudo service apache2 restart
Si accedemos a la URL nos aparecerá la
siguiente imagen de autentificación:
También decir que podríamos acceder de la
siguiente forma para que se 'logueara' directamente:
http://userName:password@direccionIP/pagina.html
2) Autorización mediante una palabra pasada
por parámetro a una URL
En este caso se pidió que se le
pasará la palabra ‘token=nombreequipo’ del modo http://direccionIP/pagina.html?token=nombreequipo
a)
Módulo rewrite
Para esto utilicé el módulo
rewrite que está incluido en
/etc/apache2/mods-available/rewrite.load
Para activarlo hay que ejecutarlo siguiente:
sudo a2enmod rewrite
service apache2 restart
b)
Fichero .htaccess
Añadí el fichero .htaccess dentro de
/var/www/html/miproyecto
RewriteEngine On
RewriteCond ${REQUEST_FILENAME} -f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} \.html$ [NC]
RewriteCond %{QUERY_STRING} !^token=nombreequipo [NC]
RewriteRule . /403.html
[NC] es un flag que indica que puede
escribirse tanto en mayúsculas como en mínusculas (No Case Sensitive, es decir, que no
distinga mayúscula y minúsculas)
La primera línea activa el módulo Rewrite,
la segunda es que el fichero pasado en la url sea efectivamente un fichero, la
tercera es que no sea un directorio, la cuarta que la url acabe en .html, y la
quinta línea, es que el parámetro pasado contenga la frase
“token=nombreequipo”. Si alguna de estas condiciones no se cumplen, el servidor
nos redirige a la página 403.html
Para poder utilizar .htaccess hace falta
establecer en apache2.conf dentro de la sección <Directory> la sentencia "AllowOverride All"
<Directory /var/www/html/miproyecto/>
Options –Indexes
Options FollowSymLinks
AllowOverride All
Require all granted
</Directory>
“Options
–Indexes” bloquea el listado de ficheros
de la raíz cuando intentamos acceder al directorio padre del proyecto.
No hay comentarios:
Publicar un comentario