Esta recetilla explica como cambiar la password en un Active Directory, como el de la UCLM. De paso os pongo un scriptito para facilitar un poco lidiar con esas “políticas de seguridad” tan agresivas que les ha dado por poner a las universidades…
Todos son paquetes debian:
Bueno, esto ya lo he contado, así que pasamos al siguiente punto. Venga, va, para los vagos, ahí va lo que teneis que poner en el /etc/krb5.conf si estais en la UCLM:
...
[libdefaults]
default_realm = UCLM.ES
...
[realms]
UCLM.ES = {
kdc = alarcos.uclm.es
admin_server = alarcos.uclm.es
}
...Obviamente si no estais en la UCLM tendreis que averiguar vuestro Kerberos realm, vuestro KDC y vuestro admin server. En Active Directory creo que le llaman PDC, que alguien me corrija si no tiene nada que ver.
Está chupao cambiar la clave, incluso si ha expirado:
$ kpasswd usuario
Tonto, ¿eh? Si usais varios dominios o no teneis puesto el default_realm podeis usar:
$ kpasswd usuario@UCLM.ES
Una regla de sentido común es cambiar frecuentemente la clave y que la clave no sea trivial o deducible. De esta regla de sentido común surge un ente llamado “política de claves” que es lo mismo pero por la fuerza. Osea, que será el propio Active Directory el que te fuerce a cambiar tu clave periódicamente. Y no contento con esto además exigirá que sea diferente a cualquiera de las recientes, y encima pedirá que tenga mayúsculas y minúsculas, y que tenga números, o caracteres de puntuación.
Los que tenemos la memoria de un grillo lo tenemos fácil. Un bonito postit pegado en el monitor. Modelo de seguridad empresarial…
Globalmente a todas estas cositas que nos hacen la vida más interesante se le llama política de seguridad. Aquí, en la UCLM, gozamos de esto en muchas áreas. Evidentemente no voy a criticar yo esta política, pero tengo que hacerlas convivir con mis limitaciones… ¿de qué estábamos hablando…? ¡Ah, si!
A veces tienes una clave a la que le has cogido cariño y la quieres tener otro poquito más contigo. Según la política de la UCLM la tendrías que eliminar de tu vida para siempre… ¡qué pena! ¿no?
Bueno, hay una solución, cambias la clave por otra cualquiera, luego por otra más, luego por otra más… y al final vuelves a cambiar la clave por la original. Fácil, ¿eh? ¿Cuántas veces hay que cambiar? Mmmm, interesante pregunta, hace medio año parecía que bastaba con 11, ahora parece que se necesitan 70. Ya veis que ni nos podemos plantaer hacerlo de forma interactiva.
Aunque no lo mencione la página de manual kpasswd permite su uso no interactivo:
$ printf "clave-antigua\nclave-nueva\nclave-nueva\n" | kpasswd usuario
Y esto es precisamente lo que aprovecho en el scriptito siguiente.
#!/bin/bash
declare -a REQUIRED
REQUIRED=(
"printf"
"kpasswd"
"seq"
"cat"
"pwgen"
)
# chpw OLD_PASSWD NEW_PASSWD
#
# Change Kerberos/Active Directory password
chpw() {
if [ "$DEBUG" ]; then
echo "$1 -> $2"
return 0
fi
if ! printf "$1\n$2\n$2\n" | kpasswd "$USER" >/dev/null ; then
echo "Error setting passwd! I believe last password was '$1'" 1>&2
return 1
fi
}
# force_chpw OLD_PASSWD NEW_PASSWD
#
# Change Kerberos/Active Directory password circumventing the password
# change policy
force_chpw() {
declare -a TMPPWD
TMPPWD=( $(pwgen -c -n -N $NFORCE 10 ) )
if ! chpw "$1" "${TMPPWD[0]}" ; then
return 1
fi
[ -z "$DEBUG" ] && printf "."
for i in $(seq 0 $((${#TMPPWD[@]} - 2 )) ) ; do
if ! chpw "${TMPPWD[$i]}" "${TMPPWD[ $(($i + 1 )) ]}" ; then
return 1
fi
[ -z "$DEBUG" ] && printf "."
done
if chpw "${TMPPWD[$((${#TMPPWD[@]} - 1))]}" "$2" ; then
printf "\nYour password is now '$2'\n"
fi
}
do_help() {
cat <<EOF
Usage: $0 [OPTIONS]
Change Kerberos/Active Directory passwords.
--user USERNAME Set the user name (Kerberos principal).
--oldpw PASSWORD Previous password. By default prompt the user.
--newpw PASSWORD New password. By default prompt the user.
--force NUM Circumvent the password policy forcing NUM password
changes.
--help This help.
EOF
}
main() {
CHPWCMD=chpw
while test $# -gt 0 ; do
case "$1" in
--user)
USER="$2"
shift
;;
--oldpw)
OPWD="$2"
NPWD="$2"
shift
;;
--newpw)
NPWD="$2"
shift
;;
--force)
CHPWCMD=force_chpw
NFORCE="$(( $2 ))"
shift
;;
--help)
do_help
exit 0
;;
*)
do_help
exit 1
;;
esac
shift
done
[ "z$OPWD" = z ] && printf "Previous password: " && read -s OPWD && echo
[ "z$NPWD" = z ] && printf "New password: " && read -s NPWD && echo
$CHPWCMD "$OPWD" "$NPWD"
}
# Check required programs
for i in `seq 0 $((${#REQUIRED[@]} - 1))` ; do
if ! type -t "${REQUIRED[$i]}" > /dev/null ; then
echo "Missing required command '${REQUIRED[$i]}'" 1>&2
exit 1
fi
done
main "$@"Autoexplicativo y con ayuda, ¿qué más quereis?
Supongamos que el scriptillo se llama chpw y que lo tengo en mi PATH.
$ chpw --force 70 --oldpw MiClave
......................................................................
Your password is now 'MiClave'
$ chpw --oldpw MiClaveAntigua --newpw MiClaveNueva Your password is now 'MiClaveNueva'
$ chpw --force 70 --user Usuario --oldpw MiClave
......................................................................
Your password is now 'MiClave'
$ chpw --force 70
Previous password:
New password:
......................................................................
Your password is now 'XXXX'Si hay algún error que no cunda el pánico. El scriptillo debería decir la última clave que funcionó correctamente:
$ chpw --force 10
Previous password:
New password:
..........
Error setting passwd! I believe last password was 'Eb1en4choo'Así que solo queda cambiarla:
$ chpw --force 60 --oldpw Eb1en4choo --newpw MiClave
............................................................
Your password is now 'MiClave'Por supuesto si pasas las claves como argumentos cuidadito con la historia de bash, a no ser que quieras tener un backup de tus claves en texto plano…
export HISTFILE=/dev/null
De todas formas ya sabes que si metes la pata tres veces seguidas conseguirás un bonito bloqueo de tu cuenta. Por eso si quieres probar primero con gaseosa usa el modo de depuración.
$ DEBUG=1 chpw --force 5 --oldpw MiClave MiClave -> DaiPeni3au DaiPeni3au -> leo2Iequoh leo2Iequoh -> CiNoong4za CiNoong4za -> ChieBeb7ga ChieBeb7ga -> eeJ4epheiG eeJ4epheiG -> MiClave Your password is now 'MiClave'
Standard disclaimer applies. Si bloqueas tu cuenta o te insultan cuando pidas que te reseteen la password, ya sabes: se siente.
Comentarios recientes
hace 7 horas 33 mins
hace 1 día 1 hora
hace 2 días 1 hora
hace 2 días 5 horas
hace 4 días 6 horas
hace 1 semana 18 horas
hace 1 semana 5 días
hace 2 semanas 1 día
hace 2 semanas 2 días
hace 2 semanas 2 días