Publicado el
22 de abril de 2024
En el vasto mundo de la administración de servidores web, la seguridad es una preocupación primordial. A medida que la transmisión de datos entre clientes y servidores se vuelve cada vez más vital, garantizar su protección se vuelve innegociable. En este contexto, configurar un servidor web en una distribución Linux implica una tarea fundamental: asegurar la seguridad de los datos transmitidos. En la vanguardia de este esfuerzo se encuentra la implementación del cifrado Transport Layer Security (TLS). Para cualquiera que participe en el desarrollo web o el alojamiento, dominar el cifrado TLS no es solo una buena práctica, sino una habilidad esencial para proteger la información sensible intercambiada en la web.
Presentando el segundo artículo de nuestra serie: Instalación de servidores web en diferentes distribuciones de Linux donde profundizaremos en el proceso de instalar y configurar un servidor proxy inverso/web ligero de alto rendimiento: "NGINX" para habilitar el cifrado TLS en sistemas operativos populares como Red Hat Enterprise Linux (RHEL), Debian y OpenSUSE.
Esta guía detallada proporciona pasos claros y prácticos para implementar una capa adicional de seguridad en sus servidores NGINX, garantizando consecuentemente la confidencialidad e integridad de la comunicación.
Instalación y configuración de NGINX para cifrado TLS en RHEL/Debian/OpenSUSE
Pero antes de sumergirse en el proceso de configuración, es esencial asegurarse de que se cumplan los siguientes requisitos:
Requisitos:
Actualizando paquetes ya presentes. Se requerirán privilegios especiales para ciertas operaciones a lo largo del procedimiento:
RHEL
dnf update -y
Nota: Use yum si dnf no está presente en la máquina
Ubuntu
apt update –y
Nota: Use apt-get si apt no está presente en la máquina
OpenSUSE
zypper refresh
Deteniendo proceso NGINX:
Escriba los diferentes comandos para cada sistema:
RHEL
dnf install -y nginx
Ubuntu
sudo apt install nginx
OpenSUSE
zypper install -y nginx
Nota: El servicio aún no debería haber iniciado. Puede iniciarse con el systemctl start nginx comando, después de lo cual comenzará a escuchar en el puerto 80 por defecto. Esto no es seguro, se recomienda encarecidamente usar https (puerto 443) y no http (puerto 80).
¿Desea implementar estas prácticas PKI?
Obtenga orientación experta para implementar soluciones PKI seguras para su organización.
Obtener ayuda experta2. Si se configura un firewall, es necesario permitir la comunicación a través del puerto 443. Por ejemplo, con el siguiente comando para el firewall:
firewall-cmd --permanent --add-port={443/tcp}
3. Finalmente para recargar el servicio de firewall:
firewall-cmd --reload
Configurando NGINX para el cifrado TLS:
Para configurar NGINX, es posible editar el /etc/nginx/nginx.conf o crear .conf archivos en /etc/nginx/conf.d. Si estos archivos de configuración se almacenan en otro lugar, se puede crear un enlace simbólico en el conf.d directorio para apuntar al archivo de configuración.
En el archivo de configuración elegido, es posible crear un servidor virtual que puede configurarse a fondo.
server { listen 443 ssl; server_name www.hostname.com; ssl_certificate www.hostname.com.crt; ssl_certificate_key www.hostname.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; }
Notas:
El servidor debería estar escuchando en el puerto 443 y ssl debería ser impuesto.
Server_name es el nombre de host que se utilizará y expondrá el servidor virtual.
La ruta del certificado del servidor ‘s y su clave privada debe especificarse. A través de Evertrust’s Stream y Horizon plataformas, los certificados pueden emitirse y gestionarse sin problemas.
El ssl_protocols pueden configurarse. Se recomienda encarecidamente habilitar solo TLSv1.2 y TLSv1.3 o solo TLSv1.3 para mayor seguridad.
El ssl_session_cache permite almacenar en caché sesiones SSL y compartirlas entre workers. En la configuración anterior, se permiten 10megabytes, lo que equivale aproximadamente a 4000 sesiones.
El ssl_session_timeout define cuánto tiempo puede durar la sesión antes de expirar.
El www.hostname.com.key el archivo debe configurarse para que solo sea accesible por el usuario root para mayor seguridad:
chown root:root /path/www.hostname.com.key
chmod 600 /path/www.hostname.com.key
Para aplicar los cambios a la configuración de NGINX, reinicie el servicio:
Prueba tu configuración de NGINX :
nginx -t
entonces
systemctl restart nginx
Conclusión:
En conclusión, instalar un servidor web en una distribución Linux es un paso crucial para configurar un entorno de alojamiento web; la elección depende de sus requisitos y preferencias específicos, ofrecen características robustas y optimizaciones de rendimiento para servir contenido web de manera eficiente. Al seguir las instrucciones de instalación apropiadas para la distribución Linux elegida, puede configurar rápidamente un servidor web fiable y comenzar a alojar sus sitios web o aplicaciones para que el mundo los acceda.