Linux + autenticación de directorio activo + solo permitiendo que ciertos grupos inicien sesión

14

Tengo algunas cajas de Linux que usan la autenticación de Windows Active Directory, que funciona bien (Samba + Winbind).

Sin embargo, lo que me gustaría hacer ahora es permitir que ciertas personas o ciertos grupos inicien sesión con las credenciales de Active Directory. Actualmente, cualquier persona con una cuenta AD válida puede iniciar sesión. Quiero limitar esto a solo unos pocos grupos. ¿Es esto factible?

Luma
fuente

Respuestas:

6

Suponiendo que los grupos estén disponibles para el sistema Linux, recomiendo editar /etc/security/access.confpara Ubuntu, las distribuciones de RedHat (y sus bifurcaciones) y probablemente muchas otras. Esto no requiere editar archivos PAM, y es un lugar estándar para hacerlo. Generalmente hay ejemplos en el archivo, comentados.

Slartibartfast
fuente
Gracias, esto es lo que terminé usando para hacer lo que quería hacer, todas las respuestas anteriores fueron geniales, pero esta fue la que mejor funcionó para mí. Uso el archivo Samba para bloquear Samba y ahora estoy usando este archivo access.conf para bloquear los inicios de sesión SSH.
Luma
4

(Estoy hablando de samba 3 aquí, no hay experiencia en samba 4 ahora).

No es necesario editar esos archivos /etc/pam.d/xxx. pam_winbind.conf es el archivo que desea, generalmente se encuentra en /etc/security/pam_winbind.conf .

Es el archivo de configuración del módulo pam_winbind, y funciona tanto para CentOS / Redhat como para Debian / Ubuntu. Puede leer la página de manual de pam_winbind.conf como referencia.

Aquí hay un archivo de ejemplo.

#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#

[global]

# turn on debugging
;debug = no

# turn on extended PAM state debugging
;debug_state = no

# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes

# authenticate using kerberos
;krb5_auth = no

# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
;krb5_ccache_type =

# make successful authentication dependend on membership of one SID
# (can also take a name)
# require_membership_of = SID,SID,SID
require_membership_of = S-1-5-21-4255311587-2195296704-2687208041-1794

# password expiry warning period in days
;warn_pwd_expire = 14

# omit pam conversations
;silent = no

# create homedirectory on the fly
mkhomedir = yes
Yanqian
fuente
3

Actualmente uso la AllowGroupsdirectiva /etc/ssh/sshd_configpara limitar quién puede iniciar sesión. Especifique uno o más grupos de AD en esa línea, y esas personas serán las únicas que podrán iniciar sesión.

Tenga en cuenta que esto solo funciona si sus usuarios solo acceden al servidor de forma remota a través de ssh. Si están cantando localmente, necesitarás encontrar otra solución.

EEAA
fuente
3

Sí, hay algunas formas de hacerlo dependiendo de lo que intente lograr exactamente.

El primer método se puede hacer a través de la configuración de samba. Esto solo permitirá que estos usuarios se conecten a Samba, otros usuarios aún pueden iniciar sesión a través de otros servicios (ssh, término local, etc.). Con esto, querrá agregar una línea a su sección [global] en smb.conf:

valid users = @groupA @groupB

El otro método es modificando las reglas PAM. Las diferentes distribuciones tienen ligeras diferencias aquí, pero en general hay reglas PAM por servicio, así como reglas comunes, usted puede decidir qué es lo mejor. Deberá agregar una restricción de cuenta utilizando el módulo pam_require. Un ejemplo en mi computadora portátil (Fedora 13) sería modificar la sección de la cuenta en /etc/pam.d/system-auth para:

account     required      pam_unix.so
account     required      pam_require.so @groupA @groupB
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

Para simplificar la administración, es posible que desee crear un nuevo grupo en AD con el fin de rastrear a los usuarios que pueden iniciar sesión en este servidor.

Ryan Bair
fuente
1

Tuve dificultades para lograr que cualquiera de los anteriores funcionara para mí en RHEL 7. A continuación se muestra lo que pude conseguir para trabajar.

/etc/sssd/sssd.conf

Cambiar access_provider = ad a access_provider = simple +simple_allow_groups = @[email protected], @[email protected]

visudo

reinicie el servicio sssd.

Adam S
fuente