¡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 Administración del sistema y explotación de los servicios de red (5ª edición)
Extractos del libro
Linux Administración del sistema y explotación de los servicios de red (5ª edición) Volver a la página de compra del libro

Servicios web

Servicios HTTP

Este capítulo describe la configuración de un servidor HTTP Apache, de un servidor proxy y de caché Squid y de un servidor Nginx.

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

El objetivo de esta sección es de enseñarle a:

  • 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...

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        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...

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...