
Me gustaría tener un usuario local de Linux para poder autenticarme (iniciar sesión) usando el módulo Nginx PAM. Estoy usando un servidor CentOS 7. Específicamente lo siguiente es lo que estoy tratando de hacer...
ElLÉAMEpara el módulo ngx http auth pam dice:
Tenga en cuenta que el módulo se ejecuta como usuario del servidor web, por lo que los módulos PAM utilizados deben poder autenticar a los usuarios sin ser root; eso significa que si desea utilizar el módulo pam_unix.so para autenticar usuarios, debe permitir que el usuario del servidor web lea el archivo /etc/shadow si eso no le asusta (en sistemas tipo Debian puede agregar el archivo www-data usuario al grupo de sombra).
Mi primera pregunta es que en este caso ¿es 'nginx' el usuario del servidor web? Mi segunda pregunta es ¿cómo puedo configurar los permisos para que el usuario del servidor web lea el archivo /etc/shadow? ¿Puede alguien indicarme los pasos que le hayan funcionado? He seguido muchos tutoriales que encontré en línea, pero sin éxito. Actualmente, cuando accedo al sitio en el que quiero que un usuario local de Linux pueda iniciar sesión, aparece un mensaje de autenticación (para ingresar el nombre de usuario y la contraseña), pero cuando ingresa las credenciales de un usuario local de Linux no tiene éxito, y solo me pide que lo ingrese nuevamente.
Gracias, se agradece cualquier ayuda y puedo brindar más información si es necesario.
Editar:
He configurado PAM en nginx construyendo primero nginx desde la fuente siguiendo los pasosaquí. En mi archivo nginx.conf agregué la siguiente línea hacia la parte superior para incluir el módulo PAM...
load_module /etc/nginx/modules/ngx_http_auth_pam_module.so;
También he incluido las dos líneas siguientes en mi directiva de ubicación en nginx.conf...
auth_pam "Secure area";
auth_pam_service_name "nginx";
En el directorio '/etc/pam.d' para el archivo de servicio nginx tengo las siguientes dos líneas...
auth required /usr/lib/security/pam_unix.so
account required /usr/lib/security/pam_unix.so
Mirando a laLÉAMEpara el módulo ngx http auth pam veo que tendría que darle al usuario del servidor web permiso de lectura para el archivo /etc/shadow. Para hacer esto, primero creé un nuevo grupo llamado 'sombra'. Luego asigné el usuario del servidor web (que supongo que es nginx) al grupo 'sombra'. Luego cambié los permisos para el archivo /etc/shadow. Los comandos que ejecuté para hacer esto se encuentran a continuación...
groupadd shadow
usermod -a -G shadow nginx
chown root:shadow /etc/shadow
chmod g+r /etc/shadow
Después de hacer esto verifiqué los permisos para el archivo /etc/shadow usando el comando
ls -l /etc/shadow
y este es el resultado...
----r-----. 1 root shadow 1390 Aug 30 12:51 /etc/shadow
También configuré una contraseña para el usuario de nginx. Y solo para reiterar, al acceder al sitio en el que quiero tener autenticación, cuando ingreso el nombre de usuario y la contraseña de nginx, simplemente me solicita nuevamente que los ingrese.
Respuesta1
Supongo que ya instaló nginx-module-auth-pam y también lo configuró /etc/pam.d/nginx
.
Si no: instale el archivo rpm, ya que todo estará configurado para usted. En otras palabras: no es necesario modificar manualmente /etc/shadow
la configuración de acceso. De hecho tuno debeajustar /etc/shadow
en caso de que estés usando pam. Este archivo contiene las contraseñas (en hash) de sus usuarios, por lo que, además, no desea otorgar acceso a ningún proceso o programa (excepto pam) o usuario (excepto root) a este archivo por razones de seguridad.
En caso de que tengas una suscripción:
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-auth-pam
Si no: toma o construye desdehttps://github.com/jfut/nginx-module-auth-pam-rpm
¿Por qué no responder sólo a tu pregunta? Los ejemplos que trajo son para sistemas tipo Debian, pero la forma de configurarlos es ligeramente diferente para sistemas tipo Redhat, como CentOS 7.
Encontrará ejemplos de configuración adicionales para este módulo enGitHub.
Por favor verifique tambiénhttps://nginx-extras.getpagespeed.com/para ejemplos de configuración adicionales.