Internet se ha convertido en una herramienta básica para la vida y lo que hace posible la conexión a Internet es un equipo cliente que se conecta mediante un navegador a un servidor web. Este servidor web, contiene información que al cliente le interesa.
Esta máquina servidor, funciona como almacén de páginas web, esperando a que llegue una petición para responder con la información requerida. Este equipo debe estar operativo los 365 días del año las 24 horas del día, ya que no sabemos cuándo puede llegar una petición.
Configuración de un servidor web.
En lo que respecta a la configuración de un servidor web, debemos tener en cuenta varios factores.
- La configuración puede variar, dependiendo de la información que contenga el servidor. Por este motivo es importante prever la capacidad de almacenamiento.
- Contenido de las páginas y de los lenguajes y compiladores que utilizan. No es lo mismo una página estática donde solo se utiliza el lenguaje HTML que otra dinámica, con llamadas a bases de datos. En este caso las bases de datos, también estarán almacenadas en dicho servidor.
- El tipo de transmisión HTTP. Las características de la transmisión que necesita la comunicación pueden variar las opciones en el servidor web.
A partir de estas condiciones, elegiremos servidor junto con el sistema operativo que lo controlará.
Por otra parte, debemos pensar también en las futuras conexiones y aplicaciones que instalar en dicho servidor web. Por este motivo, la escalabilidad y modularidad que tendrá. Una vez instalado y configurado el servidor web, ejecutaremos el plan de prueba que comprobará el buen funcionamiento.
Para el caso más simple, debemos visualizar una página web estática, es decir, una página que no cambia mientras que se está visualizando en el cliente, ya que solo contiene información en una dirección, donde el usuario final no tiene que intervenir, solo visualizar. En este caso, el servidor tiene un funcionamiento básico.
- Solo almacena información.
- Solo se necesita que el servidor web disponga de soporte HTML/XHTML/CSS.
- En cuanto a configuración y administración, el soporte proporcionado es básico y, por tanto, el rendimiento es altísimo.
- El procesador tiene poco trabajo, esto hace que el coste sea mínimo y aumente la rapidez en el acceso a la página.
- El tiempo de respuesta es muy corto.
Sin embargo, para el caso de páginas web dinámicas, necesitamos más recursos por parte del servidor, incluyendo los servicios instalados, ya que necesitamos PHP y bases de datos en funcionamiento.
Autenticación y control de acceso a un servidor web.
Limitar el acceso a determinadas páginas es unas de las funciones que debe poder realizar un servidor web. La política de acceso debe seguirse muy rígidamente, y han de observarse unas normas acordes a las necesidades de la empresa.
Cuando nos autenticamos en una web, suelen transferirse las credenciales almacenadas en la base de datos del servidor para comprobar si son correctas y seguras. Para esta utilidad, suele utilizarse un gestor de bases de datos en SQL o LDAP.
Autenticación mediante protocolo HTTP.
El propio protocolo HTTP proporciona un método de autenticación básico para las peticiones que se hagan por este medio. El procedimiento es el siguiente.
- Un cliente, mediante cualquier navegador introduce una dirección web.
- El servidor solicita las credenciales de la red a la que se va a conectar.
- Una vez proporcionadas, el texto que viaja por la petición va a ir sin cifrar. En este caso, es recomendable utilizar una conexión HTTPS. De esta manera, se le añade un rasgo extra de seguridad a la conexión. Este paso de autenticación en la red se realiza en el archivo .htaccess de los directorios de las páginas web.
Para que esta opción se haga efectiva, debemos tener configurado nuestro servidor con la cláusula AllowOverride de la siguiente manera: AllowOverride AuthConfig.
Autenticación HTTP access
Para restringir el acceso a determinados usuarios desde el servidor web, debemos utilizar un método de autenticación. En este caso lo realizaremos mediante el método access. En este ejemplo utilizaremos un servidor bajo el sistema operativo Linux.
- Iniciamos el servidor y comprobamos que el módulo auth-basic está habilitado.
- Creamos un fichero htpasswd en el que guardaremos las credenciales de los usuarios permitidos.
- Instalamos el paquete apache2-utils que contiene htpasswd mediante la cláusula sudo apt-get install apache2-utils.
- Creamos el fichero como hemos mencionado anteriormente para un usuario en cuestión: sudo htpasswd -c /etc/apache2/passwd usuario.
- El siguiente paso es editar el fichero de configuración 000-default.conf para permitir el acceso a los usuarios anteriormente añadidos. Para ello se utilizan las etiquetas <RequireAll><RequiredAny>.
- Por último, reiniciamos el servidor e intentamos acceder al usuario desde el navegador del cliente.
Autenticación HTTP Digest
Para este tipo de autenticación, debemos realizar el procedimiento sobre una página web en concreto.
Seguidamente, habilitamos el módulo en cuestión (en este caso, auth-digest) mediante sudo a2enmod auth-digest y reiniciamos el servidor.
Como en el caso anterior, hemos de crear un fichero donde se almacenan tanto el usuario como la contraseña de los usuarios a los que se les está permitida la entrada. Para realizar esta acción, debemos utilizar el comando htdigest.
El protocolo HTTPS.
El protocolo HTTPS (protocolo de tratamientos de hipertexto de forma segura) realiza las operaciones pertinentes para que la información viaje de forma segura entre las estaciones cliente y el servidor.
Esta seguridad se implementa mediante técnicas de encriptación de la información antes de ser transferida desde el equipo origen.
Este aspecto es lo que diferencia a este protocolo del anterior (HTTP), ya que este último no cifra la información.
Hay que tener en cuenta que el proceso de cifrado de información requiere de un tiempo de procesamiento y de una implementación de los métodos que ejecutar, por estas razones, el trabajo del procesador y el tiempo de computación se ve afectado a la hora de transmitir los datos. Como conclusión, debemos sopesar la información que deseamos transmitir de forma segura, ya que no es conveniente por el gran sobreesfuerzo.
Debemos pensar qué información es importante para que viaje de forma segura, y solo se encriptará dicha información.
Por otra parte, en ocasiones muy específicas, tenemos la necesidad de que toda la página web sea encriptada debido a la información tan sensible que contiene, por ejemplo, el acceso a una compra por internet o la página web del banco donde realizamos las operaciones.
Debido a estos dos aspectos, nuestro servidor web estará configurado para que en todo el dominio esté cifrada su información o simplemente el intento de acceso a esta.
Para aumentar aún más la seguridad en la transmisión y autenticación de la información, los servidores web, en este caso, Apache, pueden emitir certificados, con la salvedad de que algún navegador no lo identifique y lo detecte como peligroso, ya que no entra dentro de sus servidores de confianza o de su lista con las entidades certificadoras.
Las grandes empresas, realizan este tipo de acciones consistentes en crear un certificado propio para sus empleados, pero solo puede acceder personal autorizado por la propia empresa.
El método de cifrado que utiliza el protocolo HTTPS está basado en SSL/TLS (protocolos criptográficos que proporcionan comunicaciones seguras por una red, comúnmente internet), que proporciona autenticación y privacidad.
A la hora de hacer una petición en el equipo cliente para visualizar una página web, se realiza mediante el protocolo HTTP por defecto, sin embargo, cuando se hace una petición a un sitio web que tiene implementado el protocolo HTTPS, es el mismo procedimiento pero con un paso adicional, que es el cifrado de la información.
En cuanto el servidor recibe la petición, se traduce el nombre del dominio en dirección IP mediante el servicio DNS. A continuación, se aloja la página mediante el puerto 443 TCP, que es el que trabaja este protocolo HTTPS, y a la hora de transferir la página al cliente es el momento de cifrar la información de acuerdo con el certificado que el navegador tenga asignado y firmado como seguro. Si tenemos alojada en nuestro servidor una página web y deseamos que se acceda mediante protocolo HTTPS, debemos configurar los puertos 80 y 443 para poder recibir peticiones de los dos protocolos existentes.