miércoles, 22 de febrero de 2017

Autenticar GitLab con Active Directory

Luego de instalar GitLab con el siguiente enlace: https://redes-seguridad.blogspot.com.ar/2017/02/instalando-gitlab-en-debian-8.html

Pasaré a explicar como autenticarlo con LDAP.


Antes que nada realizamos una copia de la config del git:
cp -pf /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.orig

Agregamos lo siguiente en la sección "LDAP Settings", tener en cuenta los TABs y espacios, ya que si se modifica algo no va a funcionar. Reemplazar lo que está en rojo por los valores que correspondan a c/u:

### LDAP Settings
###! Docs: https://docs.gitlab.com/omnibus/settings/ldap.html
###! **Be careful not to break the indentation in the ldap_servers block. It is
###!   in yaml format and the spaces must be retained. Using tabs will not work.**
 gitlab_rails['ldap_enabled'] = true
###! **remember to close this block with 'EOS' below**
 gitlab_rails['ldap_servers'] = YAML.load <<- br="">   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'LDAP'
     host: '192.168.0.1'      #Ip del servidor LDAP con AD
     port: 389      #Puerto si utiliza método plano, para ssl es otro
     uid: 'sAMAccountName'        
     method: 'plain' # "tls" or "ssl" or "plain"
     bind_dn: 'CN=Nombre Apellido Usuario para Leer el LDAP, OU=Users,OU=Ruta=Dominio,OU=Completa de OUs, DC=Mi,DC=Dominio,DC=com'
     password: 'Poner Password del usuario de arriba'
     active_directory: true
     allow_username_or_email_login: false
     block_auto_created_users: false
     base: 'OU=Ruta,OU=Completa,OU=donde,OU=buscar,OU=Usuarios Permitidos,DC=Mi,DC=Dominio,DC=com'
     user_filter: ''
     attributes:
       username: ['uid', 'userid', 'sAMAccountName']
       email:    ['mail', 'email', 'userPrincipalName']
       name:       'cn'
       first_name: 'givenName'
       last_name:  'sn'
 EOS          #No olvidar descomentar esta linea

Aplicamos los cambios:

gitlab-ctl reconfigure

Chequeamos que funcione la autenticación en LDAP:

gitlab-rake gitlab:ldap:check
Checking LDAP ...
Acá debe aparecer el listado de los usuarios de la OU base que configuramos"Server: ldapmain
LDAP authentication... Success
Checking LDAP ... Finished

Si obtenemos algún error de autenticación podremos utilizar el ldapsearch instalando lo siguiente:

apt-get install ldapscripts


Ejecutamos una búsqueda dentro del LDAP desde el linux con el siguiente comando, reemplazando lo que está en rojo:

ldapsearch -v -H ldap://ip_del_active_directory -b "OU=Users,OU=Sistemas,OU=Desarrolladores,DC=My,DC=Dominio,DC=com" -D "CN=Nombre Apellido,OU=Usuarios,OU=Sistemas,DC=My,DC=Dominio,DC=com" -W

El -D es el bind_dn y el -b es el base que configuraríamos en el git.


Reiniciamos el git:

gitlab-ctl restart
ok: run: gitlab-workhorse: (pid 8625) 0s
ok: run: logrotate: (pid 8632) 1s
ok: run: nginx: (pid 8639) 0s
ok: run: postgresql: (pid 8646) 1s
ok: run: redis: (pid 8655) 0s
ok: run: sidekiq: (pid 8660) 0s
ok: run: unicorn: (pid 8665) 1s


Nos logueamos a la página del gitlab y verificamos que podemos entrar con algún usuario del dominio de LDAP.


Si nos da error también podemos ejecutar un tail a la siguiente ruta:

tail -f /var/log/gitlab/gitlab-rails/production.log


No hay comentarios: