Integracion Unix AIX, Samba, Winbind, SSH y dominio Windows (6/8) - Winbind y SSH, puesta en marcha y debugado


Home del documento

Tras construir Samba en el paso anterior, hay que asegurar que /usr/lib/security/WINBIND apunta a lo nuevo y no a la que nos traía el paquete precompilado (que no es la que nos interesa). Por lo tanto hay que cambiar ese soft link (o eliminar ese fichero si lo fuera) y hacer que apunte a la nueva versión, que queda construida en /usr/src/samba-3.0.26a/source/nsswitch/WINBIND:


# ln -s /usr/src/samba-3.0.26a/source/nsswitch/WINBIND /usr/lib/security/WINBIND
# ls -l /usr/lib/security/WINBIND
lrwxrwxrwx 1 root system 46 Dec 10 19:17 /usr/lib/security/WINBIND -> /usr/src/samba-3.0.26a/source/nsswitch/WINBIND
#


- Otro link necesario es el siguiente:

# ln -s /usr/src/samba-3.0.26a/source/bin/pam_winbind.so /usr/lib/security/pam_winbind.so


- También se requiere retocar algunos ficheros del sistema operativo. En concreto /etc/security/login.cfg ...

# tail /etc/security/login.cfg
* Valid values: STD_AUTH, PAM_AUTH
*
*******************************************************************************

usw:
shells = /bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,/bin/ksh93,/usr/bin/sh,/usr/bin/bsh,/usr/bin/csh,/usr/bin/ksh,/usr/bin/tsh,/usr/bin/ksh93,/usr/bin/rksh,/usr/bin/rksh93,/usr/sbin/uucp/uucico,/usr/sbin/sliplogin,/usr/sbin/snappd
maxlogins = 32767
logintimeout = 60
auth_type = PAM_AUTH

... en el que cambiamos

auth_type = STD_AUTH

por

auth_type = PAM_AUTH
...

... /usr/lib/security/methods.cfg que lo dejamos así ...

# cat /usr/lib/security/methods.cfg
* @(#)78 1.5 src/bos/usr/lib/security/methods.cfg.S, cmdsadm, bos530 6/11/03 17:06:16
.
NIS:
program = /usr/lib/security/NIS
program_64 = /usr/lib/security/NIS_64
DCE:
program = /usr/lib/security/DCE
PAM:
program = /usr/lib/security/PAM
WINBIND:
program = /usr/lib/security/WINBIND


*diferentes options que he probado aqui

*y que no parecen hacer falta
*
* options = db=BUILTIN
* options = auth=PAM
* options = auth=PAM , db=BUILTIN
* options = authonly
#

... y /etc/pam.conf...

# cat /etc/pam.conf
# IBM_PROLOG_BEGIN_TAG
...
#
# Authentication
#
ftp auth required /usr/lib/security/pam_aix
imap auth required /usr/lib/security/pam_aix
login auth required /usr/lib/security/pam_aix
rexec auth required /usr/lib/security/pam_aix
rlogin auth sufficient /usr/lib/security/pam_rhosts_auth
rlogin auth required /usr/lib/security/pam_aix
rsh auth required /usr/lib/security/pam_rhosts_auth
snapp auth required /usr/lib/security/pam_aix
sshd auth sufficient /usr/lib/security/pam_winbind.so try_first_pass
sshd auth sufficient /usr/lib/security/pam_aix try_first_pass
sshd auth sufficient /usr/lib/security/pam_aix
sshd auth sufficient /usr/lib/security/pam_winbind.so try_first_pass
su auth sufficient /usr/lib/security/pam_allowroot
su auth required /usr/lib/security/pam_aix
telnet auth required /usr/lib/security/pam_aix
OTHER auth required /usr/lib/security/pam_prohibit

#
# Account Management
#
ftp account required /usr/lib/security/pam_aix
login account required /usr/lib/security/pam_aix
rexec account required /usr/lib/security/pam_aix
rlogin account required /usr/lib/security/pam_aix
rsh account required /usr/lib/security/pam_aix
sshd account sufficient /usr/lib/security/pam_winbind.so
sshd account sufficient /usr/lib/security/pam_aix
sshd account sufficient /usr/lib/security/pam_aix
sshd account sufficient /usr/lib/security/pam_winbind.so try_first_pass
su account sufficient /usr/lib/security/pam_allowroot
su account required /usr/lib/security/pam_aix
telnet account required /usr/lib/security/pam_aix
OTHER account required /usr/lib/security/pam_prohibit

#
# Password Management
#
login password required /usr/lib/security/pam_aix
passwd password required /usr/lib/security/pam_aix
rlogin password required /usr/lib/security/pam_aix
sshd password sufficient /usr/lib/security/pam_aix
su password required /usr/lib/security/pam_aix
telnet password required /usr/lib/security/pam_aix
OTHER password required /usr/lib/security/pam_prohibit

#
# Session Management
#
ftp session required /usr/lib/security/pam_aix
imap session required /usr/lib/security/pam_aix
login session required /usr/lib/security/pam_aix
rexec session required /usr/lib/security/pam_aix
rlogin session required /usr/lib/security/pam_aix
rsh session required /usr/lib/security/pam_aix
sshd session sufficient /usr/lib/security/pam_aix
sshd session required /usr/lib/security/pam_aix
snapp session required /usr/lib/security/pam_aix
su session required /usr/lib/security/pam_aix
telnet session required /usr/lib/security/pam_aix
OTHER session required /usr/lib/security/pam_prohibit
...


#

... en el que hemos añadido ...

sshd auth sufficient /usr/lib/security/pam_winbind.so try_first_pass
sshd auth sufficient /usr/lib/security/pam_aix try_first_pass

sshd account sufficient /usr/lib/security/pam_winbind.so
sshd account sufficient /usr/lib/security/pam_aix

sshd session sufficient /usr/lib/security/pam_aix


sshd auth sufficient /usr/lib/security/pam_aix
sshd auth sufficient /usr/lib/security/pam_winbind.so try_first_pass

sshd account sufficient /usr/lib/security/pam_aix
sshd account sufficient /usr/lib/security/pam_winbind.so try_first_pass

sshd password sufficient /usr/lib/security/pam_aix


sshd session required /usr/lib/security/pam_aix


Con try_first_pass evitamos la doble solicitud de password.

Estas modificaciones no requieren reiniciar ningun servicio.


- En las diferentes pruebas que estuve realizando también estuve toqueteando el fichero /etc/security/user. En realidad este fichero no hace falta modificarlo.

- Finalmente en el fichero sshd_config (en nuestro caso en la ruta /etc/ssh/sshd_config) se debe indicar

UsePAM yes


- Si queremos impedir el acceso directo como root desde SSH debemos indicar

PermitRootLogin no

en el fichero anterior.


- Hemos acabado con el ssh. Como parece que ya lo tenemos, probamos de acceder con el cliente SSH (En este caso Cygwin)...

smolarek@host1 ~
$ ssh "DOMINIO\smolarek@modsed"
Password:

... pero falló. Probé con -vvv ...

smolarek@host1 ~
$ ssh -vvv "DOMINIO\smolarek@modsed"
Password:
...

pero no me aclaró nada. En este punto, al igual que antes con winbind, toca revisar el log. Dado que el debug del lado cliente no nos ofrece información util al caso, intento debugar en el servidor. Para ello arranco el sshd con -ddd

# /usr/sbin/sshd -ddd
debug2: load_server_config: filename /etc/ssh/sshd_config
debug2: load_server_config: done config len = 174
debug2: parse_server_config: config /etc/ssh/sshd_config len 174
debug1: sshd version OpenSSH_4.3p2
debug1: private host key: #0 type 0 RSA1
debug3: Not a RSA1 key file /etc/ssh/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #1 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #2 type 2 DSA
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-ddd'
debug2: fd 3 setting O_NONBLOCK
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.
Generating 768 bit RSA key.
RSA key generation complete.
...


- En diferentes ejecucuiones pude obtener errores que decían más o menos lo siguiente:

Failed to set process credentials
...
setgid: Operation not permitted



- Tras consultar algunos links (
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf2/setpcred.htm
http://marc.info/?l=openssh-unix-dev&m=107481704511303&w=2
http://fixunix.com/openssh/179321-64bit-compiled-sshd-fails-ibm-aix.html
http://groups.google.com/group/mailing.unix.openssh-dev/browse_thread/thread/6762b3aca31a6c14/69313ba97dd810a2?lnk=st&q=sshd+setpcred+%22Failed+to+set+process+credentials%22#69313ba97dd810a2
) y examinar el código fuente, he deducido que el sshd de mi SO no se manejaba bien con PAM o bien con la funcion setpcred(). No he podido llegar más allá, por lo que ha habido que compilar de nuevo código fuente (en este caso del sshd). En caso de no llegar a ninguna conclusión, tocaría aplicar el parche para debug propuesto en el último de los links descritos. :-(((

Así pues, en uno de los corespondientes mirrors, descargo el openssh con su código fuente. En mi caso es la openssh-4.7p1, descargada desde

ftp://ftp.stacken.kth.se/pub/OpenBSD/OpenSSH/portable


Home del documento

ACTUALIZACION (Añadido) (2008-01-20): Se ha modificado el orden y la forma del fichero pam.conf. Al hacerlo como al principio, cuando caducaba el password del usuario el SO no era capaz de permitir indicar una nueva contraseña ya que faltaba la orden correspoendiente en la sección passwords.

Por otro lado, el orden es más correcto como se indica ahora, es decir, primero pam_aix y después pam_winbind.

2 Comentarios:

Anónimo dijo...

Hey donde puedo descargar o conseguirme unix????
Se puede conseguir en algun lugar???
si lo sabes mi correo es "elpollo_30_2005@hotmail.com

Te lo agradeceria mucho.

Pere Moltó Agut dijo...

La mayoria de Unix son propietarios y hay que pagar por ellos. Además en algunos casos van ligados a un hardware determinado (por ejemplo AIX y IBM), con lo que descargándolo no conseguirías nada. Si no te vale con alguna distribución libre de Linux, pégale un vistazo a http://en.wikipedia.org/wiki/Comparison_of_operating_systems , aunque con Linux podrás hacer todo lo que hagas con Unix (y más).