Autenticación en servidor Apache

Introducción

Hoy vamos a aprender a establecer un nivel de seguridad en nuestro servidor Apache, corriendo bajo Ubuntu, aunque como siempre digo podemos usar cualquier distribución para seguir el tutorial. Constará de una autenticación mediante un usuario y contraseña. Para este tutorial voy a crear un nuevo Host basado en IP. Dicho esto, vamos a ello.

Creando el nuevo Host

Como ya he comentado antes, voy a crear un nuevo Host basado en IP, para ello abrimos el terminal y tecleamos lo siguiente:

sudo mkdir /var/www/passwordhost

Una vez creado el directorio que alojará el nuevo Host, vamos a crear el index.html, por lo que tecleamos en el terminal:

sudo gedit /var/www/passwordhost/index.html

Una vez con gedit abierto, escribimos un código HTML básico, como el siguiente:

<html>
     <head>
          <title>Ejemplo de host con password</title>
     </head>
     <body bgcolor="#008080">
          <h1>Ejemplo de host con seguridad básica</h1>
     </body>
</html>

Genial, ya tenemos creado el Host con su index. Como lo estamos haciendo mediante IP, ahora debemos crear una interfaz virtual. Si mal no recuerdo, nuestra interfaz se llamaba eth2, para comprobarlo tecleamos en el terminal:

ifconfig

Ahora ya sabemos que estaba en lo cierto, nuestra interfaz se llama eth2 (en amarillo ), eth2:1 y eth2:2 (en azul) son las interfaces virtuales que creamos en el anterior tutorial, dicho esto, vamos a crear la interfaz nueva a partir de eth2, nos vamos al terminal y escribimos:

sudo ifconfig eth2:3 172.16.100.30 netmask 255.255.0.0

En la imagen he marcado en rojo la nueva intrfaz, eth2:3.

Ahora vamos a crear el archivo propio del Host dentro del directorio de configuración de Apache. Nos vamos a un terminal y escribimos:

sudo gedit /etc/apache2/sites-available/passwordhost

Y dentro de este archivo escribimos lo siguiente:

<VirtualHost 172.16.100.30>
     ServerName www.passwordhost.com
     DocumentRoot /var/www/passwordhost
</VirtualHost>

Una vez creado el Host, con su archivo de configuración y demás, vamos a darlo de alta, para ello tecleamos en el terminal:

sudo a2ensite passwordhost

Estableciendo los niveles de seguridad

Una vez con el Host creado, vamos a establecer un nivel de seguridad básico para la página web. Antes de nada debemos crear el directorio que alojará la información referente a los usuarios y sus contraseñas. Vamos a crear tres usuarios y dos grupos, cada uno en su respectivo grupo. Los usuarios y grupos serán:

  • policia, del grupo buenos.
  • testigo, del grupo buenos.
  • ladron, del grupo malos.

A ser posible, para prevenir posibles problemas de compatibilidad, evitaremos poner tildes y carácteres raros (ñ, %, &…) en el nombre del usuario.

Pasemos ahora a crear dicho directorio, en el terminal tecleamos:

sudo mkdir /var/password

Estupendo, una vez creado el directorio vamos a crear el primer usuario, volvemos al terminal y tecleamos:

sudo htpasswd -c /var/password/.pass_user policia

Ya tenemos creado el primer usuario, policia. Ahora crearemos los siguientes usuarios.

NOTA: Una vez tenemos creado el primer usuario, para los usuarios que creemos posteriormente no debemos poner el -c en la consola, ya que le indicaríamos al comando htpasswd que volvemos a crear el primer usuario, y machacará la entrada del usuario policia.

Ahora que sabemos lo anterior, volvemos a la consola y creamos los demás usuarios:

  • Usuario testigo:
sudo htpasswd /var/password/.pass_user testigo
  • Usuario ladron:
sudo htpasswd /var/password/.pass_user ladron

Ahora ya tenemos creados los tres usuarios a los que daremos (o no) permiso permiso para visualizar el contenido de nuestro sitio web.

Pasemos ahora a crear los dos grupos, buenos y malos. Para crear un grupo nos vamos al terminal y tecleamos lo siguiente:

sudo gedit /var/password/.pass_group

Una vez con el archivo abierto, escribimos lo siguiente:

Guardamos el archivo y listo. Ahora volvemos al terminal, y tecleamos lo siguiente para crear el próximo archivo en el que configuraremos qué grupos y usuarios tienen acceso al Host passwordhost.

sudo gedit /var/www/passwordhost/.htaccess

Una vez con gedit, rellenamos el archivo con lo siguiente:

AuthType         Basic
AuthName         "Acceso a mi host"
AuthUserFile     /var/www/password/.pass_user
AuthGroupFile    /var/www/password/.pass_group
require group    buenos

Pulsamos en guardar, y vamos ahora a editar el último archivo. Volvemos al terminal y tecleamos:

sudo gedit /etc/apache2/sites-available/default

Nos vamos hacia el final del archivo, después de que cierre la última etiqueta <Directory>, escribimos lo mismo que en la imagen:

<Directory /var/www/passwoardhost>
     AllowOverride    AuthConfig
     Order    allow,deny
     Allow    from all
</Directory>

Una vez añadido eso al archivo default, ya sólo queda reiniciar apache, volvemos al terminal y tecleamos:

sudo apache2ctl restart

Verificando el funcionamiento

Ahora ya tenemos nuestro Host protegido, y hemos establecido los permisos para los usuarios que hemos querido, ahora sólo queda comprobar que todo funciona como debe.

Abrimos Firefox (o nuestro navegador habitual), y visitamos la siguiente dirección:

  • 172.16.100.30

Si  todo marcha bien, esto será lo que veamos:

Ahora introducimos cualquier usuario de los que tengan permiso, por ejemplo, policia.

  • En Nombre de Usuario: policia
  • En Contraseña: soypoli

Esos son los datos que yo use para crear el usuario, como es obvio, vosotros debéis introducir los que usasteis.

El usuario policia, al estar definido en el grupo buenos (único grupo autorizado para entrar al Host) pues ha podido entrar sin problemas.

Lo mismo debe de ocurrir con el usuario testigo, sin embargo, al usuario ladron no le permitirá entrar ya que no se encuentra en el grupo buenos, y por lo tanto no está autorizado.

Si el nombre de usuario que introducimos es erróneo o no está autorizado, al pulsar en Aceptar, nos volverá a salir la misma ventana de logeo, sin embargo, al pulsar en Cancelar, obtendremos el siguiente mensaje de error:

Eso significa que nuestro Host está correctamente protegido.

Bibliografía

  • Apuntes de clase.

Anuncios
Publicado en Apache, Seguridad, Tutoriales

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s

Sobre mi…

Soy Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Administración de Sistemas Informáticos en Red. Actualmente estudiando el Grado de Ingeniería Informática en la Universidad de Córdoba (España).

Enamorado de la ciencia en general y de la computación en particular.

Música: Heavy, Rock, Celta, New Age, Electrónica, etc...
Libros:Isaac Asimov, Richard Dawkins, Stephen Hawking, Carl Sagan...

Estoy interesado en la programación de videojuegos. Políticamente de izquierdas, escéptico y ateo. En definitiva, mala gente.

Sígueme en Twitter

Introduce tu dirección de correo electrónico para seguir este Blog y recibir las notificaciones de las nuevas publicaciones en tu buzón de correo electrónico.

Únete a otros 24 seguidores

Usa Linux Mint
The Bit Developer Box
A %d blogueros les gusta esto: