Eu consegui fazer o que eu queria fazer usando o módulo pam_exec.so para verificar se o servidor ActiveDirectory era ou não ingressável. Aqui estão os arquivos pam:
/etc/pam.d/common-auth
auth optional pam_exec.so log=/var/tmp/pam.log /bin/echo "-----AUTH------"
auth [success=5 default=ignore] pam_unix.so nullok_secure
auth [success=3 authinfo_unavail=ignore default=1] pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login try_first_pass
auth [success=4 default=ignore] pam_ccreds.so minimum_uid=1000 action=validate use_first_pass
auth [success=die default=die] pam_ccreds.so minimum_uid=1000 action=update
# here's the fallback if no module succeeds
auth requisite pam_deny.so
auth [success=1 default=die] pam_ccreds.so minimum_uid=1000 action=store
auth [success=4 default=die] pam_exec.so log=/var/tmp/pam.log /bin/echo "sucessfully log with unix"
session [success=ok default=2] pam_exec.so log=/var/tmp/script.log /bin/ping -c 1 ipaddress.to.AD.server
auth optional pam_mount.so
auth [success=1 default=die] pam_exec.so log=/var/tmp/pam.log /bin/echo "sucessfully log with winbind"
auth [default=die] pam_exec.so log=/var/tmp/pam.log /bin/echo "sucessfully log with ccreds"
auth required pam_permit.so
/etc/pam.d/common-account
account optional pam_exec.so log=/var/tmp/pam.log /bin/echo "-----ACCOUNT------"
account [success=ok new_authtok_reqd=done default=1] pam_unix.so
account [success=3] pam_exec.so log=/var/tmp/pam.log /bin/echo "Logged with Unix account"
account [success=1 new_authtok_reqd=done default=ignore] pam_winbind.so
account requisite pam_deny.so
account optional pam_exec.so log=/var/tmp/pam.log /bin/echo "Logged with winbind account"
account required pam_permit.so
/etc/pam.d/common-session
session optional pam_exec.so log=/var/tmp/pam.log /bin/echo "-----SESSION------"
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session [success=ok default=1] pam_unix.so
session [success=ok] pam_exec.so log=/var/tmp/pam.log /bin/echo "unix session started"
session [success=ok default=die] pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
session [success=ok default=2] pam_exec.so log=/var/tmp/script.log /bin/ping -c 1 ipaddress.to.AD.server
session optional pam_mount.so
session [success=done] pam_exec.so log=/var/tmp/pam.log /bin/echo "winbind session started + homedir mounted"
session optional pam_exec.so log=/var/tmp/pam.log /bin/echo "ccreds session started"
Você só precisa alterar o endereço IP no arquivo de autenticação e de sessão para que ele funcione. Você terá log personalizado em / var / tmp / para os pings e ecos. Acho que existem soluções melhores do que as minhas para resolver esse problema, mas não o encontrei.
Espero que esses arquivos conf ajudem algumas pessoas!