Upload
jam-pg
View
168
Download
0
Embed Size (px)
Citation preview
Last modified 2 weeks ago
Integración MS Windows Active Directory con Samba 3.0.X enCentOS GNU/Linux
Versión: 1.0Ultima edición: 04-Jul-2011
Descripción
Esta guía explica como integrar MS Windows 2003 (o superior) Active Directory con Samba3.0.X en GNU/Linux a un controlador de dominio existente.
La idea de integración consiste en usar la información de cuentas de usuario presentes en elservidor MS Windows Active Directoy en un sistema GNU/Linux, haciendo posible:
Acceder a las cuentas de usuario MS Windows Active Directory desde el sistemaGNU/Linux
Autenticar el sistema GNU/Linux usando cuentas de usuario MS Windows ActiveDirectory
La integración se hace mediante la suite de herramientas Samba disponible en GNU/Linux.
Prerequisitos
Es necesario instalar las siguientes dependencias:
SoftwareCentOS 4 o CentOS 5 (más adelante lo integraremos también en DebianGNU/Linux)Sistema operativo CentOS actualizadoServidor Windows Active DirectorySamba > 3.0.20Kerberos MIT/Heimdalntp
Cuenta de usuarioAcceso a root en el servidor LinuxUn usuario en MS Windows AD con permisos para unirse al Directorio ActivoCuentas de usuario creadas en el servidor MS Windows AD
Configuración de redEl servidor Linux debe estar registrado correctamente en el DNSNo hay cortafuegos que impida las conexiones hacia el servidor MS Windows o elcortafuegos está configurado correctamente
En este documento el sistema instalado es CentOS 5 y se llama samba02.itransfer.mad y sudirección IP corresponde a 10.2.1.234 (el sistema está virtualizado en Proxmox). Y elservidor MS Windows Active Directory se con nombre de máquina svradnie01.itransfer.madcon IP 10.2.1.11, que corresponde a la versión de MS Windows 2003 R2 (64 bits).
Preparativos previos
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
1 de 7 19/07/11 14:57
Primero debemos sincronizar la hora del servidor GNU/Linux con el servidor MS Windows ADpara ello debemos instalar ntp, por ejemplo via yum:
yum -y install ntp
Editar el archivo /etc/ntp.conf y cambiar las siguientes líneas:
server 0.centos.pool.ntp.org server 1.centos.pool.ntp.org server 2.centos.pool.ntp.org
Por esta única línea
server svradnie01.itransfer.mad
Activar y levantar el servicio
chkconfig --level 235 ntpd onservice ntpd start
Verificar el estado del archivo /etc/hosts, debe ser similar a:
::1 localhost.localdomain localhost127.0.0.1 localhost.localdomain localhost# Auto-generated hostname. Please do not remove this comment.10.2.1.234 samba02.itransfer.mad samba02
Configurar correctamente dominio y el servidor DNS . El archivo /etc/resolv.conf debe sersimilar a:
search itransfer.mad nameserver 10.2.1.11
Configurar Kerberos
Modificar el archivo /etc/krb5.conf para que se vea así:
Nota.- Las mayúsculas son importantes
[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log
[libdefaults] default_realm = ITRANSFER.MAD dns_lookup_realm = false dns_lookup_kdc = false default_keytab_name = FILE:/etc/krb5.keytab
[realms] ITRANSFER.MAD = { kdc = svradnie01.itransfer.mad:88
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
2 de 7 19/07/11 14:57
admin_server = svradnie01.itransfer.mad:749 default_domain = itransfer.mad }
[domain_realm] .ITRANSFER.MAD = ITRANSFER.MAD ITRANSFER.MAD = ITRANSFER.MAD
[appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
Probamos la configuración de Kerberos obteniendo un ticket, lo hacemos mediante la ordenkinit. Debemos utilizar una cuenta con privilegios de Administrador o miembro del grupoAdmins. de dominio. En este ejemplo estamos usando la cuenta Administrador.
kinit -V [email protected]
Veremos en pantalla lo siguiente:
[root@samba02 etc]# kinit -V [email protected] for [email protected]: Authenticated to Kerberos v5
Si el registro (logon) fue exitoso no deberá mostrarse ningún error. Verificamos con klist queel cliente tiene un ticket asignado, simplemente escribimos:
klist
y mostrará en pantalla la siguiente salida:
[root@samba02 etc]# klist Ticket cache: FILE:/tmp/krb5cc_0Default principal: [email protected]
Valid starting Expires Service principal07/04/11 21:27:40 07/05/11 07:27:38 krbtgt/[email protected]
renew until 07/05/11 21:27:40
Kerberos 4 ticket cache: /tmp/tkt0klist: You have no tickets cached
En este punto la configuración de Kerberos es correcta. Podemos liberar el ticket otorgadousando la orden kdestroy.
Instalar y configurar Samba
Debemos instalar los siguientes paquetes de samba: samba, samba-common, samba-client.Vía yum o bien compilarlo desde source code (fuentes)
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
3 de 7 19/07/11 14:57
yum -y install samba
Modificamos el archivo de configuración /etc/samba/smb.conf y añadimos estos parámetrosde configuración necesarios para nuestro escenario:
[global] security = ADS netbios name = samba01 realm = ITRANSFER.MAD password server = svradnie01.itransfer.mad workgroup = ITRANSFER log level = 1 syslog = 0 idmap uid = 10000-29999 idmap gid = 10000-29999 ; winbind separator = + winbind enum users = yes winbind enum groups = yes winbind use default domain = yes template homedir = /home/%D/%U template shell = /bin/false client use spnego = yes domain master = no server string = CentOS ADS encrypt passwords = yes
Nota.- NO ES CONVENIENTE UTILIZAR la opción 'netbios name' en Samba al menos que esenombre esté registrado correctamente en el servidor DNS.
Configurarmos entonces el inicio automático de los servicios y los lanzamos por primera vez:
chkconfig --level 235 winbind onchkconfig --level 235 smb onservice winbind start service smb start
Volvemos a sincronizar la hora vía Samba
net time -S svradnie01.itransfer.mad
Ahora unimos el servidor Samba GNU/Linux al dominio MS Windows AD con la siguienteorden:
net ads join -U Administrador
Veremos en la pantalla la siguiente salida
[root@samba02 etc]# net ads join -U AdministradorAdministrador's password: Using short domain name -- ITRANSFERJoined 'SAMBA02' to realm 'ITRANSFER.MAD'[root@samba02 etc]# net ads testjoinJoin is OK
Verificamos la operación con la orden
net ads testjoin
que mostrará la siguente salida
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
4 de 7 19/07/11 14:57
Join is OK
La siguiente orden nos mostrará información más amplia del dominio MS Windows ActiveDirectory
net ads info
algo similar a:
[root@samba02 etc]# net ads infoLDAP server: 10.2.1.11LDAP server name: svradnie01.itransfer.madRealm: ITRANSFER.MADBind Path: dc=ITRANSFER,dc=MADLDAP port: 389Server time: Mon, 04 Jul 2011 21:32:40 CESTKDC server: 10.2.1.11Server time offset: -7
Ahora Kerberos debe tener llaves guardadas en el archivo keytab, verificamos con lasiguiente orden:
klist -k
Que nos mostrará algo similar a:
[root@samba02 etc]# klist -kKeytab name: FILE:/etc/krb5.keytabKVNO Principal---- -------------------------------------------------------------------------- 2 host/[email protected] 2 host/[email protected] 2 host/[email protected] 2 host/[email protected] 2 host/[email protected] 2 host/[email protected] 2 [email protected] 2 [email protected] 2 [email protected]
Ahora podemos invocar la lista de usuarios y grupos de MS Windows Active Directory con lossiguientes comandos en la shell Linux:
wbinfo -u: lista de usuarios Windows ADwbinfo -g: lista de grupos Windows AD
Podemos también probar la autenticación, por ejemplo para el usuario achacon (debe ponerla contraseña correcta)
wbinfo -a achacon%<contraseña>plaintext password authentication succeeded challenge/response password authentication succeeded
Ahora los usuarios MS Windows deberían aparecer como usuarios Linux, verificar así
getent passwd
Nota.- Esto sólo funciona si en la configuración de Samba se definió:
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
5 de 7 19/07/11 14:57
winbind enum groups = yes winbind enum users = yes
En este punto la integración está prácticamente completa, ahora el siguiente paso serequerie si queremos usar cuentas de usuario MS Windows Active Directory para ingresar alsistema GNU/Linux, o dicho de otra manera, autenticar el sistema GNU/Linux usandocuentas de usuario en el servidor MS Windows Active Directory.
Autenticación con MS Windows Active Directory
Es necesario definir la configuración del método de autenticación en el sistema GNU/Linuxmodificando la configuración del archivo "system-auth" localizado en "/etc/pam.d/".
NOTA
Los cambios en el archivo mencionado son muy delicados. Una error en este puntoy es probable que el sistema GNU/Linux ya no sea accesible para todos losusaurios (incluído el root). Se sugiere iniciar otras sesiones como root y mantenerabierta las sesiones hasta que las pruebas de la nueva configuración sean exitosas.
El archivo "/ect/pam.d/system-auth" debería tener la siguiente nueva configuración:
auth required /lib64/security/$ISA/pam_env.soauth sufficient /lib64/security/$ISA/pam_unix.so likeauth nullokauth sufficient /lib64/security/$ISA/pam_krb5.soauth required /lib64/security/$ISA/pam_deny.so
account sufficient /lib64/security/$ISA/pam_krb5.soaccount required /lib64/security/$ISA/pam_unix.soaccount sufficient /lib64/security/$ISA/pam_succeed_if.so uid < 100 quietaccount required /lib64/security/$ISA/pam_deny.so
password requisite /lib64/security/$ISA/pam_cracklib.so retry=3password sufficient /lib64/security/$ISA/pam_unix.so nullok use_authtok md5 shadowpassword required /lib64/security/$ISA/pam_deny.so
session required /lib64/security/$ISA/pam_limits.sosession required /lib64/security/$ISA/pam_unix.so
Luego de esta modificación es posible ingresar al servidor GNU/Linux con una cuenta deusuario MS Windows Active Directory. No hay que preocuparse si no es posible abrir unasesión SSH (es preciso recordar que los usuarios no tienen shell, escogimos /bin/false)
Por ejemplo si algún usuario de MS Windows Active Directory intenta ingresar vía SSH alsistema GNU/Linux vera algo similar a:
ssh [email protected]@10.2.1.234's password: Last login: Mon Jul 4 23:23:07 2011 from 192.168.2.190Connection to 10.2.1.234 closed.
En los logs del sistema GNU/Linux veremos la explicación de ese rechazo de logueo:
Jul 5 14:03:15 samba02 sshd[812]: pam_krb5[812]: authentication succeeds for 'achacon' (
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
6 de 7 19/07/11 14:57
Jul 5 14:03:15 samba02 sshd[812]: Accepted password for achacon from 10.2.1.173 port 548Jul 5 14:03:15 samba02 sshd[812]: pam_unix(sshd:session): session opened for user achacoJul 5 14:03:15 samba02 sshd[812]: pam_unix(sshd:session): session closed for user achaco
Si un usuario no tiene shell de sistema (/bin/bash o bien /bin/sh) no podrá acceder por SSH,el paso siguiente no obstante es verificar que podemos ingresar como root
ssh [email protected]@10.2.1.234's password: Last login: Mon Jul 4 22:28:30 2011 from 192.168.2.190[root@samba02 ~]#
Prácticamente esta terminada la configuración e integración entre MS Windows ActiveDirectory y Samba sobre GNU/Linux. Solo restaría crear los directorios de usuario de sistemaMS Windows Active Directory en el sistema GNU/Linux, hay dos opciones:
Crearlos manualmente bajo /home/DOMINIO/Crearlos automáticamente cuando el usuario ingresa
Si queremos escoger la segunda opción (por supuesto sin dejar al margen la primera)debemos editar nuevamente el archivo "/etc/pam.d/system-auth" y añadir la siguiente línea,en la parte final que corresponde a las sesiones
session required /lib64/security/pam_mkhomedir.so
Para asegurarnos que todos los servicios arranquen al iniciar el sistema CentOS GNU/Linuxejecutamos en una shell:
chkconfig --level 235 smb on chkconfig --level 235 winbind on chkconfig --level 235 ntpd on
Llegados a este punto, la configuración e integración está completa.
IntegraADconSamba – Documentacion tecnico | i-transfer http://10.2.1.3/trac/docutec/wiki/IntegraADconSamba
7 de 7 19/07/11 14:57