Cómo proteger el contenido en Linux: Protección por contraseña con Nginx
12:21, 25.04.2025
Hoy en día, en el mundo digital probablemente lo más crucial sea la seguridad. Existen muchos riesgos en línea que pueden estar relacionados tanto con grandes empresas como con usuarios normales. Las violaciones de la seguridad pueden acarrear graves consecuencias para las empresas y su información confidencial. En este artículo, hablaremos de todo lo relacionado con la protección de contraseñas en Nginx.
Nginx es un software de servidor extremadamente popular que puede utilizarse para almacenamiento en caché, proxy inverso y equilibrio de carga. Este servidor web es una gran variante para una seguridad robusta, pero hay un par de enfoques adicionales para hacer que el sistema esté aún más protegido. Por ejemplo, puede configurar una autenticación básica.
Discutiremos los enfoques más fundamentales para la protección por contraseña con Nginx y, concretamente, nos orientaremos en la creación de un archivo de contraseñas, la instalación de Apache Utils y la configuración del bloque del servidor. Además, obtendrá otras recomendaciones adicionales, así que vamos a sumergirnos en el proceso.
Configuración básica de la autenticación de usuario
Antes de discutir la configuración de autenticación, usted debe tener:
Servidor Nginx. Compruebe si Nginx está correctamente instalado y funcionando en el servidor. En caso de que no disponga de este software en el servidor, puede instalarlo fácilmente siguiendo la guía habitual en el doc. Nginx.
Conocimientos básicos de Nginx. Se recomienda comprender claramente los fundamentos de las directivas, los bloques del servidor y, en general, la configuración de Nginx.
Para proteger el contenido en su servidor Nginx, es mejor que empiece con la configuración de autenticación. Este proceso incluye varios pasos como la creación de un archivo de contraseñas, la instalación de Apache Utils y la configuración del bloque del servidor.
Recomendamos revisar un par de cursos en línea para que adquiera las habilidades básicas dentro de este proceso, dedicando algún tiempo a la certificación, puede convertirse en un buen experto en este campo, y mientras tanto, aquí hay algunos pasos cruciales para la correcta gestión de contraseñas.
Instalación de utilidades de Apache para la gestión de contraseñas
En primer lugar, debe identificar si todas las herramientas necesarias están ya instaladas en su servidor. Las Utilidades de Apache son necesarias para la generación de los hash de las contraseñas.
Para empezar, debe actualizar el gestor de paquetes del sistema, utilizando el siguiente comando:
sudo apt update
Tras la actualización, inicie la instalación de Apache Utils con la siguiente línea:
sudo apt install apache2-utils
El proceso de instalación es tan sencillo como un comando y la herramienta necesaria estará lista para ser utilizada en su servidor Nginx.
Creación del archivo de contraseñas
El archivo de contraseñas es necesario para almacenar las credenciales para la autenticación. La utilidad htpasswd se utilizará para la generación del hash de la contraseña. Para la actualización del archivo actual o la creación del nuevo, utilice la siguiente línea:
sudo htpasswd -c /.././…/.. name
En el comando mencionado, deberá cambiar c /.././.../... por la información real donde necesita almacenar el archivo, y name deberá cambiarse por el nombre de usuario necesario.
Una vez hecho esto, deberá introducir/confirmar la contraseña, y entonces la utilidad iniciará la generación del hash de la contraseña y lo añadirá al archivo.
Una cosa más a tener en cuenta, si no está creando sino actualizando el archivo actual, entonces necesitará excluir la bandera -c.
Configuración del bloque del servidor Nginx para la autenticación
Ahora que ya hemos completado la creación del archivo, procedamos a la configuración para la autenticación. Para iniciar este proceso, es necesario entrar en el archivo de configuración de Nginx en el editor de la siguiente manera:
sudo nano /etc/nginx/nginx.conf
Una vez en el archivo, necesita encontrar el bloque del servidor que se encuentra en el directorio web que necesita proteger. Por regla general, este bloque se encuentra en la parte servidor { ... }. En esta sección, añada la siguiente característica
location / {
auth_basic "Restricted Access";
auth_basic_user_file /.././…/..;
}
Esta sección - /.././.../.. debe ser reemplazada por la ruta real de creación del archivo que también hemos discutido en este artículo. Cuando haya rellenado todos los detalles correctamente, entonces los usuarios verán la autenticación donde tendrán que introducir las credenciales.
Una cosa más a recordar para que los cambios se guarden, necesita salir del editor y pulsar el botón de guardar y después reiniciar Nginx mediante el siguiente comando:
sudo service nginx restart
El último paso importante que debe recordar es probar si todo funciona correctamente entrando en el sitio web e introduciendo un nombre de usuario y una contraseña.
Opciones avanzadas de autenticación
El uso de la práctica autenticación básica ya es beneficioso por razones de protección, sin embargo, puede añadir más capas con las opciones avanzadas. Las variantes avanzadas para la autenticación se consideran más flexibles y las más estándar son la integración de un sistema de autenticación externo y la implementación de una interfaz de inicio de sesión personalizada.
Interfaz de acceso personalizada
La implementación de una interfaz de acceso personalizada es una gran opción con cuya ayuda puede crear una experiencia más fácil de usar redirigiendo a sus usuarios a la página de inicio de sesión de la marca. El proceso será casi el mismo que con la autenticación estándar, los usuarios deberán validar su nombre de usuario/contraseña.
Para iniciar este proceso, deberá crear un formulario de inicio de sesión HTML personalizado y, después, deberá guardar el archivo dhdh.html (en lugar de este archivo deberá rellenar el archivo de inicio de sesión HTML válido) en el directorio necesario. El siguiente paso será la actualización de la configuración de Nginx añadiendo lo siguiente:
location / {th
error_page 401 =200 /dhdh.html;
auth_request /auth;
auth_request_set $auth_status $upstream_status;
error_page 403 =200 /dhdh.html;
}
location = /auth {
interno;
proxy_pass http://localhost:8000/auth; # Cambio al punto final del script de autenticación
proxy_pass_request_body desactivado;
proxy_set_header Content-Length «»;
proxy_set_header X-Original-URI $request_uri;
}
El script de autenticación puede ser escrito en cualquier lenguaje de programación de su elección incluyendo Python y PHP, debe verificar las credenciales y mostrar 200 si las credenciales están autorizadas y 401 en caso contrario. Compruebe si el directorio es accesible en el navegador web.
Integración de un sistema de autenticación externo
Si ya dispone de un servidor de autenticación externo, puede integrarlo fácilmente con Nginx. Este enfoque es extremadamente útil para la autenticación centralizada y la gestión de usuarios. Al utilizar esta integración del sistema, se hace mucho más fácil escalar a través de varias aplicaciones.
Entre en los ajustes de Nginx y configúrelo como proxy inverso para que las solicitudes de autenticación sean redirigidas al servidor externo. Después de que se requiere para actualizar la configuración de Nginx cambiando el bloque de servidor como se menciona a continuación:
location / {
proxy_pass http://sdf;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Original-URI $request_uri;
}
Cambie http://sdf esta dirección por la URL real del servidor externo. El servidor externo debe estar configurado adecuadamente para tratar las peticiones entrantes comprobando contraseñas/login, y mostrando las respuestas correctas. Una vez completado el proceso, utilice el navegador para probar el acceso.
Principales consideraciones y mejores prácticas
Una vez, haya terminado con las estrategias discutidas anteriormente y la prueba de todos los procesos, puede proteger su servidor aún más y compartiremos un par de prácticas útiles en esta parte del artículo. Aquí, mencionaremos las consideraciones clave que pueden influir significativamente en la protección de los datos, y lo que es más importante estas prácticas son bastante fáciles en cuanto a la implementación.
Activación de HTTPS para conexiones seguras
Para la protección adicional de la información sensible, es crucial implementar el cifrado y el certificado TLS/SSL. Siguiendo esta práctica, puede activar HTTPS para las conexiones más seguras para aquellos que intentan entrar en directorios protegidos.
Mejora de la seguridad de las contraseñas
Para mejorar aún más la seguridad, debe informar a los usuarios sobre la elección de contraseñas complejas y el cambio regular de las mismas para maximizar la protección. Otro factor crucial es la seguridad del archivo de contraseñas o del servidor externo, intente asegurarse de que no habrá accesos no autorizados.
Supervisión y registro de los accesos
La supervisión de los intentos de registro y el seguimiento de los riesgos potenciales es muy importante. El seguimiento de los accesos debe ser regular para obtener el máximo resultado y una mejor protección. Existen diversas herramientas automáticas que pueden simplificar el proceso.
Actualizaciones regulares del sistema y parches
No descuide las actualizaciones del software y aplíquelas regularmente para excluir todas las posibles vulnerabilidades de seguridad, de modo que pueda estar seguro de la seguridad de su servidor.
Gestión del control de acceso
Para añadir aún más protección, puede crear una lista negra o blanca de direcciones IP específicas para que sólo determinados usuarios puedan acceder al sistema. Esta práctica minimiza aún más los riesgos de acceso no autorizado y controla todos los accesos.
Educación de los usuarios en materia de seguridad
La seguridad de todos los procesos está estrechamente relacionada con su concienciación sobre todas las consecuencias y riesgos que conlleva compartir sus credenciales o no reaccionar ante una actividad sospechosa. Por eso los usuarios deben ser educados adecuadamente sobre todos los posibles problemas de seguridad.
Conclusión
Sólo con seguir las principales prácticas que hemos compartido en este artículo; puede mejorar significativamente la protección del contenido en su servidor Linux. La protección por contraseña es una práctica clave y al descuidarla está aumentando las posibilidades de acceso no autorizado.