Integración de ssh con AD en FreeBSD
Recientemente he integrado algunas plataformas debianeras con AD, pero
quise experimentar con FreeBSD, así que decidí integrarlo con un dominio en
Windows 2003 standard edition SP2. Después de buscar encontré alguna
documentación, los tome como referencia y comencé con esta aventura. (OJO
funciono a la perfección para mí).
Este COMO predispone que se conoce cómo utilizar el árbol de ports de FreeBSD, y comandos básicos de Linux/BSD. La versión que utilice fue FreeBSD-9.0-RELEASE-i386 + Windows 2003 standard edition SP2.
Este COMO predispone que se conoce cómo utilizar el árbol de ports de FreeBSD, y comandos básicos de Linux/BSD. La versión que utilice fue FreeBSD-9.0-RELEASE-i386 + Windows 2003 standard edition SP2.
Preparando la integración al
dominio
Primero necesito instalar samba36
cd /usr/ports/net/samba36 && make
install clean
Instalar con las siguientes
opciones: LDAP, ADS, WINBIND, ACL_SUPPORT, SYSLOG, UTMP, PAM_SMBPASS,
DNSUPDATE, EXP_MODULES, & POPT (CUPS es opcional si desea imprimir en su
BSD)
Añada lo siguiente en
/etc/rc.conf para asegurarnos que samba inicie al iniciar el servidor.
# Samba services for AD
nmbd_enable=”YES”
smbd_enable=”YES”
winbindd_enable=”YES”
kerberos5_server_enable=”YES”
kadmind5_server_enable=”YES”
Crear un nuevo fichero smb.conf,
y grabar el existente:
mv /usr/local/etc/smb.conf
/usr/local/etc/smb.conf.original
Edite /usr/local/etc/smb.conf
Modifique el fichero smb.conf de
acuerdo a los datos reales de su dominio
[global]
workgroup = TUDOMINIO
server string = FreeBSD Client %v
load printers = no
encrypt passwords = yes
socket options = TCP_NODELAY SO_RCVBUF=8192
SO_SNDBUF=8192
dns proxy = no
smb ports = 139
security = ADS
realm = TUDOMINIO.COM
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%D/%U
template shell = /usr/local/bin/bash
client ntlmv2 auth = yes
winbind use default domain = yes
restrict anonymous = 2
domain master = no
local master = no
preferred master = no
disable netbios = no
dos charset = ASCII
unix charset = UTF8
display charset = UTF8
Ahora editaremos el fichero
/etc/krb5.conf, e inserte lo siguiente.
[logging]
default = SYSLOG:INFO:LOCAL7
[libdefaults]
ticket_lifetime = 24000
clock_skew = 300
default_realm = TUDOMINIO.COM
[realms]
domain.LOCAL = {
kdc = tuservidor.tudominio.com:88
admin_server = tuservidor.tudominio.com:464
default_domain = tudominio.com
}
[domain_realm]
.domain.local = TUDOMINIO.COM
domain.local = TUDOMINIO.COM
Ahora necesitaremos incrementar
el número máximo de archivos que el kernel puede manejar, después de hacer esto
hay que reiniciar el BSD
Edite /etc/sysctl.conf y añada lo
siguiente:
kern.maxfiles=16384
kern.maxfilesperproc=16384
Como sabemos AD es un servidor
NTP, así que tendremos que integrarlo para que sincronice la hora con nuestro
BSD.
Edite /etc/ntp.conf
Comente los demás servidores
configurados en /etc/ntp.conf y añada la siguiente línea.
tuservidor.tudominio.com iburst maxpoll 9
Añada lo siguiente en
/etc/rc.conf para que ntp inicie con BSD
ntpdate_enable="YES"
ntpd_enable="YES"
Para comprobar inicie el demonio
ntp con el siguiente comando.
/etc/rc.d/ntpdate start
Finalmente edite /etc/rc.conf y
modifique el nombre de su host de tu BSD
hostname="myFreeBSDName.tudominio.com"
Revisar que tu /etc/resolv.conf
este configurado de la siguiente manera.
search tudominio.com
nameserver 192.168.1.3 #En mi
caso es mi AD/DNS
Ahora vamos a realizar algunas
pruebas para validar la integración al dominio.
kinit administrator
Aquí pedirá la contraseña del
administrator de su controlador de dominio, ingréselo.
Si funciona todo OK, entonces
podemos ya participar en el AD.
/usr/local/bin/net ads join -U tuservidor.tudominio.com
-U administrator
Si todo sale bien saldrá un
mensaje como el siguiente TUDOMINIO.COM
Para comprobar los miembros del
dominio, ejecutamos lo siguiente wbinfo –u, si todo esta OK deberán salir todos
los objetos miembros del dominio. Si no funcionase reinicie samba o el BSD.
Felicitaciones hasta aquí ya
estas listo para integrar el servicio SSH con el AD.
Integración con SSH
Ahora, necesito configurar el acceso SSH
a través de PAM para autenticar a los usuarios de AD. En
primer lugar, voy a tener que editar el fichero
/etc/nsswitch y modificar el group y el passwd con lo siguiente:
group: files winbind
passwd: files winbind
Ahora tenemos que instalar el
modulo para hacer que los usuarios que loguen vía ssh tengas sus directorios.
cd /usr/ports/security/pam_mkhomedir &&
make install clean
mkdir /home/TUDOMINIO
Ahora tenemos que decirle a PAM
que autenticaremos usando sus módulos
# auth
auth
sufficient pam_opie.so no_warn no_fake_prompts
auth
requisite
pam_opieaccess.so no_warn
allow_local
auth sufficient /usr/local/lib/pam_winbind.so # Permite el acceso a todo el mundo del
dominio
#auth
sufficient pam_krb5.so no_warn try_first_pass
#auth
sufficient pam_ssh.so no_warn try_first_pass
auth
required pam_unix.so no_warn try_first_pass
# account
account
required pam_nologin.so
#account
required pam_krb5.so
account
required
pam_login_access.so
account
required pam_unix.so
# session
#session optional pam_ssh.so
session required /usr/local/lib/pam_mkhomedir.so #Crea los directorios de los usuarios logeados
del dominio
session
required pam_permit.so
# password
#password
sufficient pam_krb5.so no_warn try_first_pass
password
required pam_unix.so no_warn try_first_pass
Ahora solo queda probarlo, puede
usted logear con cualquier objeto miembro del dominio vía ssh y verificarlo con
tail –f /var/log/auth.log, además validando que se crea su directorio en
/home/TUDOMINIO/
NOTA.- No se olviden de compilar
el bash, de la siguiente manera:
cd /usr/ports/shells/bash && make
install clean