miércoles, 9 de noviembre de 2011

Autentificación en Apache2

En esta entrada vamos a ver algunos métodos de autentificación con Apache2 en Ubuntu.


Acceso a un usuario único
Este es uno de los métodos más simples de autentificación en Apache.
Para hacer uso de este sistema necesitaremos crear un archivo de contraseñas, es aconsejable localizar este fichero en un lugar inaccesible vía Web.
La creación de este fichero de contraseñas lo podemos realizar con htpasswd, que es una utilidad que viene con Apache.
Creamos el fichero:
# htpasswd -c /usr/local/apache/passwd/passwords usuario

Nos pedirá una contraseña y su confirmación.

Creado ya el fichero con nuestro usuario y contraseña, ya solo nos falta la configuración del servidor para que solicite la contraseña e indicarle que usuario tiene el acceso permitido.
Esto lo conseguimos editando el fichero /etc/apache2/httpd.conf y añadimos las siguientes líneas dentro  del contenedor "<Directory>".
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user rbowen


Reiniciamos Apache y comprobamos sus efectos:

# /etc/init.d/apache2 restart

Acceso a varias personas
Como hemos visto en el método anterior, este está limitado a un usuario, para evitar esto podemos usar el siguiente método que hace uso de los grupos.
Antes de comenzar, necesitaremos crear un fichero de grupos. El fichero lo podemos crear manualmente con un editor de texto o directamente en el Terminal, dado que el formato del fichero es muy simple.
Su estructura es:
GroupName: usuario usuario2 usuario3 usuario4

Esto es solo una lista con los miembros del grupo escritos de forma lineal y separados por espacios.

Para agregar un usuario a un archivo de contraseñas ya existente tan solo debemos ejecutar en el terminal el siguiente comando:
# htpasswd /usr/local/apache/passwd/passwords usuario

Y para finalizar modificamos el fichero httpd.conf dejandolo de la siguiente manera:
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName


Acceso mediante base de datos
Si poseemos una gran cantidad de usuarios, puede que nos sea más conveniente hacer uso de una base de datos. Si queremos implementar este sistema podemos seguir este tutorial http://blog.unlugarenelmundo.es/2010/03/18/autenticacion-en-apache-y-ii-digest-y-con-mysql/
(Todos los méritos a su autor).

También tenemos otras formas distintas para autentificarse en Apache2 a parte del uso de usuarios y contraseñas.
Acceso mediante direcciones de red
Frecuentemente se desea permitir el acceso a los usuarios basándose en algo más que quiénes son. Por ello tenemos la posibilidad de permitir o denegar el acceso mediante direcciones de red IP o dominios.
Para implementar solo tenemos que implementar las siguientes directivas, por ejemplo:
Para denegar a un "equipo" concreto usaríamos:
Deny from X.X.X.X
Por ejemplo denegamos a nuestro localhost para hacer una prueba:
Ahora probaremos denegando el acceso a todos menos a nuestro localhost:

Otro posible caso sería el bloqueo de visitantes provenientes de un dominio, esto lo resolveríamos con:
Deny from host.example.com

En caso de que queramos admitir, en lugar de denegar tan solo tendríamos que cambiar la directiva "Deny " por "Allow".

Referencias:

No hay comentarios:

Publicar un comentario