¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. LINUX
  3. Servicios web
Extrait - LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición
Extractos del libro
LINUX Preparación a la certificación LPIC-2 (exámenes LPI 201 y LPI 202) – 5ª edición Volver a la página de compra del libro

Servicios web

Requisitos y objetivos

1. Requisitos

Los conocimientos necesarios para la certificación LPC-1:

Comandos y seguimiento de los procesos.

Edición de archivos.

Comandos de gestión de directorios y archivos.

Los conocimientos adquiridos en los anteriores capítulos, especialmente:

Gestión de la red local.

Gestión de los servicios.

Gestión de DNS.

2. Objetivos

Al final de este capítulo, deberá poder:

Instalar, configurar y administrar un servidor HTTP Apache.

Configurar un servidor Apache para controlar los clientes, limitar el consumo de recursos y gestionar los hosts virtuales.

Configurar un servidor Apache en HTTPS.

Instalar y configurar un servidor proxy Squid.

Instalar y configurar un servidor HTTP Nginx, incluido el módulo de proxy inverso y reparto de carga. 

Servicios HTTP

Este tema está dividido en cuatro partes con pesos diferentes.

1. Configuración básica de un servidor Apache

Peso

4

Objetivos

Instalar y configurar un servidor web. Esto incluye la monitorización de la carga y del rendimiento del servidor, el control de acceso, la configuración de los módulos interpretadores y la identificación de los clientes.

Esto comprende también la configuración de las opciones del servidor para limitar el consumo de recursos, configurar los hosts virtuales y personalizar los archivos de control de acceso.

a. Competencias principales

  • Configuración de los archivos de registro de Apache y su contenido.

  • Métodos y archivos de restricción de acceso.

  • mod_perl y configuración PHP.

  • Archivo y herramientas de autenticación de los clientes.

  • Configuración del número máximo de peticiones, del número mínimo y máximo de procesos del servidor y de los clientes.

  • Implementación de hosts virtuales Apache 2.4 (con o sin dirección dedicada).

  • Uso de las declaraciones de redirección en los archivos de configuración Apache para personalizar el acceso a los archivos.

b. Elementos empleados

  • Registros de acceso y de errores.

  • .htaccess

  • httpd.conf

  • mod_auth_basic, mod_authz_host y mod_access_compat

  • htpasswd

  • AuthUserFile, AuthGroupFile

  • apachectl, apache2ctl

  • httpd, apache2

2. Configuración HTTPS de un servidor Apache

Peso

3

Objetivos

Configurar un servidor Apache...

Observaciones relativas a la seguridad

La seguridad es una preocupación constante para la gestión de los sistemas modernos y particularmente para los accesos de red. Las distribuciones Linux activan por defecto numerosos mecanismos de protección, como los módulos PAM, el firewall (iptables, firewalld, etc.) o SELinux.

Estas protecciones indispensables en producción pueden perturbar seriamente sus comprobaciones. Si constata que, a pesar de todos sus esfuerzos, la configuración de sus servicios de red no funciona correctamente, con síntomas bastante diversos, desactive temporalmente algunas de las protecciones del sistema. Si haciendo una nueva comprobación, todo funciona correctamente, tendrá que identificar con precisión el problema para adaptar su configuración funcional y la configuración de seguridad.

Esta desactivación temporal de la capa de seguridad debe estar reservada a un entorno de pruebas, ¡nunca en producción!

1. iptables

Por defecto, en la mayoría de las distribuciones, iptables no autoriza ninguna conexión entrante excepto SSH. Para comprobar su configuración, puede usar el comando iptables -L.

Ejemplo

iptables -L  
Chain INPUT (policy ACCEPT)  
target     prot opt source          destination  
ACCEPT     all  --  anywhere    ...

Configuración básica de un servidor HTTP Apache

El protocolo HTTP (HyperText Transfer Protocol) está detrás del origen de la web. Se trata de un protocolo cliente/servidor, el cliente solicita al servidor HTTP que le transmita una "página", generalmente estructurada en formato HTML (HyperText Markup Language). Una página puede corresponder a un archivo o ser generada dinámicamente por un componente del servidor.

Apache es el programa servidor HTTP más conocido y uno de los más usados en el mundo.

Su nombre viene de su origen: en los años 1990, en los Estados Unidos, el NCSA (National Center for Súpercomputing Applications) había creado uno de los primeros servidores HTTP, httpd. Un grupo de programadores propuso un conjunto de parches (patches) para este programa, antes de crear su propia versión, Apache (a patchy server, un servidor parcheado), en 1995. Apache HTTP Server está hoy día desarrollado bajo el control de la fundación Apache Software Foundation, que gestiona muchos proyectos de software libre (con una licencia específica, la licencia Apache).

El programa Apache HTTP Server, originario de Unix, ha sido implementado en Linux y en otros sistemas operativos (como Windows). Muchos servidores web se basan en una arquitectura llamada LAMP: Linux/Apache/MySQL/PHP.

La versión principal actual de Apache es la versión número 2, reescrita completamente en 2022. En 2020, la versión estable es la versión 2.4.54.

1. Archivo de configuración

El archivo de configuración del servidor Apache puede contener centenas de directivas, debido al gran número de funcionalidades y de módulos disponibles para este programa. En el marco de este tema de la certificación, estudiaremos los elementos esenciales sobre la configuración básica de un servidor HTTP.

a. Formato del archivo de configuración

El nombre y la ubicación del archivo de configuración del servidor Apache varían según las versiones y según las distribuciones: httpd.conf, apache.conf o apache2.conf. Se trata de un archivo de texto, compuesto por directivas. Alguna directivas son globales, otras están declaradas dentro de una sección y solamente se aplican a esta sección.

El archivo está autodocumentado por muchas líneas...

Configuración HTTPS de un servidor Apache

Para aumentar la seguridad, podemos usar el protocolo HTTPS (HyperText Transfer Protocol Secure), que se basa en una capa de software protegida, SSL (Secure Socket Layer) o TLS (Transport Layer Secure, sucesor de SSL), para la comunicación entre el cliente y el servidor Apache. El protocolo de seguridad toma en cuenta la autenticación de los participantes a través de los certificados, el cifrado y el control de la integridad de los datos intercambiados.

TLS ha reemplazado a partir de 1999 la versión 3 de SSL, abandonada a causa de problemas de seguridad. Desde entonces usamos los términos SSL, SSL/TLS o TLS para designar el protocolo TLS. A partir de ahora usaremos el término SSL, conforme a la terminología usada en la certificación LPIC-2.

El protocolo HTTPS usa el puerto bien conocido 443. Tiene tendencia a convertirse en el estándar de Internet y a reemplazar a HTTP.

1. Criptografía y certificados

El protocolo SSL se basa en certificados para autenticar a los participantes en la comunicación. El servidor envía su certificado al cliente para que este se asegure de su identidad. El cliente puede, de manera opcional, poseer también un certificado que transmitirá al servidor para declararle su identidad.

El protocolo asegura el cifrado y descifrado de los datos intercambiados, con un par de claves, pública y privada, según la técnica de criptografía asimétrica.

En el marco de la certificación LPIC-2 se pide un conocimiento general de estos conceptos.

a. Criptografía simétrica

Los algoritmos de cifrado simétrico usan una clave única que permite cifrar y descifrar datos.

Presentan la ventaja de necesitar pocos recursos y de ser muy rápidos. Permiten, por lo tanto, intercambiar eficazmente grandes cantidades de datos. Sin embargo, presentan una dificultad: los participantes tienen que conocer la clave de cifrado/descifrado. Por lo tanto, todas las entidades que posean la clave podrán descifrar los mensajes, incluso aquellas para las que el mensaje no ha sido destinado.

Para intercambiar la clave de manera segura, la ciframos usando un algoritmo asimétrico, que es más seguro.

b. Criptografía asimétrica

Los algoritmos de cifrado simétrico reposan en un par de claves: una pública, que permite...

Servidor proxy y de caché Squid

Squid (que significa «calamar») es un programa open source, creado en 1996, que implementa un servidor proxy y proxy inverso (reverse proxy), para los protocolos FTP, Gopher, HTTP y HTTPS.

En el marco de la certificación LPIC-2, vamos a estudiar sus funciones proxy HTTP/HTTPS.

1. Roles de los servidores proxy

Un servidor proxy o proxy inverso es un intermediario entre el cliente y el servidor de un protocolo de software:

  • Un servidor proxy recibe la solicitud del cliente, la envía al servidor como si él fuera el emisor de esta, recupera la respuesta y la envía al cliente. El servidor no conoce al cliente que ha iniciado la conexión.

  • Un proxy inverso (reverse proxy) recibe la solicitud del cliente en lugar del servidor final, la transmite al servidor final, recupera la respuesta y la transmite al cliente. El cliente no conoce, por lo tanto, al servidor destino de la conexión.

Existen programas proxy para la mayoría de los protocolos de software de la familia TCP/IP (FTP, Gopher, HTTP, etc.). Los más usados son los proxys y proxys inversos HTTP.

El rol de proxy inverso se verá en al tema siguiente, Nginx.

a. Protección de los clientes

En muchas organizaciones, los puestos de trabajo y los servidores internos no se encuentran directamente accesibles desde Internet. Los sistemas que deben estar accesibles desde el interior (intranet) y desde el exterior de la organización (Internet o extranet) están situados en una estructura de red particular llamada DMZ (DeMilitarized Zone), protegida por routers y firewalls. El proxy HTTP está instalado en esta zona y hace de intermediario entre los clientes HTTP y los servidores HTTP externos. Estos últimos no están directamente en contacto con los clientes, comunican exclusivamente con el servidor proxy, lo que limita los riesgos de seguridad.

b. Servidores de caché

El proxy trata las solicitudes de todos los clientes y las respuestas de los servidores. Puede almacenar en su caché elementos que transitan entre los dos (archivos, resoluciones de nombres y de direcciones, etc.). Si un cliente solicita una página HTML, solicitada anteriormente por otro cliente, el proxy proporcionará los elementos estáticos presentes en su caché (si siguen siendo válidos), lo que limitará el tráfico de red y optimizará...

Nginx servidor HTTP y proxy inverso

Si Apache es el servidor web más conocido y era el más utilizado en Internet, ha visto aparecer serios competidores en estos últimos años. A menudo, el primer objetivo de estos nuevos servidores web es un mejor rendimiento. De hecho, se le reprocha a Apache cierta lentitud, provocada por su antigua concepción y sus numerosas funcionalidades, así como un consumo excesivo de recursos cuando recibe muchas solicitudes.

1. Nginx y los servidores web

En 2002, un programador ruso, Igor Sysoev, decidió escribir un programa completamente nuevo, en el marco de la gestión de una página web rusa muy frecuentada, Rambler, que tenía que soportar más de 500 millones de solicitudes HTTP cada día.

La primera versión de este programa, Nginx (se pronuncia « enyinex ») apareció en 2008. Escrito en lenguaje C, concebido para ser simple y eficaz, este servidor web ganó rápidamente una buena parte del mercado, sobre todo para sitios web con un volumen muy importante (Facebook en particular). Según un estudio, representaba en 2022 el 27,66 % de los servidores web de Internet, por número de usuarios, detrás de Apache (40.18%) pero por delante de IIS de Microsoft (25,05 %).

Aunque también puede desempeñar el papel de servidor proxy de mensajería (SMTP, POP3 y IMAP4), se utiliza esencialmente hoy en día en el dominio HTTP.

Nginx es un servidor de tipo asíncrono, al contrario que Apache que funciona generalmente en modo síncrono (las versiones recientes pueden ser configuradas en modo asíncrono). En modo síncrono, se asigna un proceso a cada cliente, hecho que hace consumir muchos recursos cuando hay muchas solicitudes. En modo asíncrono, un mismo proceso gestiona simultáneamente varios clientes, lo que limita el consumo de memoria y acelera los tiempos de respuesta (no es necesario volver a cargar en memoria los módulos necesarios para el tratamiento del cliente).

Aunque la empresa Nginx Inc fue comprada por la compañía F5, Inc en 2019, sigue existiendo una versión open source del software de Nginx, con una licencia de tipo BSD. Es compatible con Linux, BSD, OS X y Windows, pero generalmente se usa en plataformas Linux o BSD.

2. Archivo de configuración

El archivo...

Validación de lo aprendido: preguntas/respuestas

Responda a estas preguntas abiertas, parecidas a las que le harán en el examen de la certificación, pero estas últimas serán de tipo test o pidiéndole una respuesta corta que introducirá mediante el teclado.

1. Preguntas

1 ¿Qué opción del comando httpd (o equivalente) muestra la lista de los módulos de Apache cargados?

2 ¿Cómo se puede validar la sintaxis de un archivo de configuración Apache antes de cargarlo efectivamente?

3 ¿Qué directiva de configuración limita el número de clientes simultáneos en un servidor HTTP Apache?

4 ¿Qué elementos permiten distinguir distintos host virtuales gestionados por un solo servidor HTTP Apache?

5 ¿Qué comando permite crear un certificado X.509 autofirmado?

6 ¿Para qué sirve un archivo .htaccess?

7 ¿Cuáles son los dos archivos de registro por defecto de un servidor HTTP Apache?

8 ¿Qué número de puerto bien conocido está asociado a HTTPS?

9 Una directiva de configuración http_access deny cli_non no funciona para un cliente del servidor Squid, a pesar de que su dirección está inscrita en la ACL cli_non especificada. ¿Qué habría que comprobar?

10 ¿Dónde está almacenado el contenido de la caché...

Trabajos prácticos

Aquí se proponen ejercicios para implementar algunos de los puntos abordados en el capítulo. En cada uno de ellos se da un ejemplo comentado de la realización del ejercicio, que deberá adaptar a la configuración de sus sistemas.

1. Servidor HTTP Apache con dos hosts virtuales

Configuramos un servidor HTTP Apache en una distribución de tipo Red Hat. Apache debe administrar dos hosts virtuales, diferenciados gracias a su nombre de host:

  • www: este host virtual está accesible para todos los clientes HTTP.

  • rh: este host virtual solamente está accesible para los usuarios que tengan una cuenta creada localmente en el servidor HTTP Apache.

Los nombres de host pueden ser definidos como alias DNS en la máquina host, o declarados en los archivos hosts del servidor y de los clientes que se utilizarán para hacer las pruebas.

Comandos y archivos útiles

  • rndc

  • /etc/hosts

  • host

  • /etc/httpd/conf/httpd.conf

  • http

  • systemctl

  • wget

  • htpasswd

  • firefox

Etapas

1.

Compruebe que el paquete de software del servidor HTTP Apache está instalado. Para simplificar las pruebas, desactive temporalmente el firewall del servidor.

2.

Declare los dos nombres de host www y rh (por DNS o en el archivo /etc/hosts).

3.

Configure el servidor HTTP Apache con el host virtual público www.

4.

Cree el directorio de datos del host virtual, con una página HTML de prueba.

5.

Compruebe y cargue la configuración.

6.

Compruebe el acceso al host virtual www, desde la línea de comandos o un navegador local.

7.

Compruebe el acceso al host virtual www, desde un navegador remoto.

8.

Cree una base de cuentas local para el control de acceso al host virtual rh.

9.

Configure el servidor HTTP Apache con el host virtual público rh, accesible solamente para las cuentas declaradas en la base de cuentas locales.

10.

Cree el directorio de datos del host virtual, con una página HTML de prueba.

11.

Compruebe y cargue la configuración.

12.

Compruebe el control de acceso al host virtual rh, desde la línea de comandos o en un navegador local.

13.

Compruebe el acceso al host virtual rh, desde un navegador remoto.

Resumen de comandos y resultado en pantalla

1.

Compruebe que el paquete de software del servidor HTTP Apache está instalado. para simplificar las pruebas, desactive temporalmente el firewall del servidor.

En las distribuciones de tipo Red Hat, el paquete...