Created
April 8, 2020 09:50
-
-
Save emaV/9bfd1abfcf7a53b62aea215957915d46 to your computer and use it in GitHub Desktop.
pam_exec script to catch the user from atuhorized_keys
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Get user from authorized_keys | |
# pam_exec_login.sh | |
# * [ssh - What is the SHA256 that comes on the sshd entry in auth.log? - Server Fault](https://serverfault.com/questions/888281/what-is-the-sha256-that-comes-on-the-sshd-entry-in-auth-log) | |
# * [bash - How to get all fingerprints for .ssh/authorized_keys(2) file - Server Fault](https://serverfault.com/questions/413231/how-to-get-all-fingerprints-for-ssh-authorized-keys2-file) | |
# Setup log | |
b=$(basename $0| cut -d. -f1) | |
log="/tmp/${b}.log" | |
function timeStamp () { | |
echo "$(date '+%b %d %H:%M:%S') ${HOSTNAME} $b[$$]:" | |
} | |
# Check if opening a remote session with sshd | |
if [ "${PAM_TYPE}" != "open_session" ] || [ $PAM_SERVICE != "sshd" ] || [ $PAM_RHOST == "::1" ]; then | |
exit $PAM_SUCCESS | |
fi | |
# Get info from auth.log | |
authLogLine=$(journalctl -u ssh.service |tail -100 |grep "sshd\[${PPID}\]" |grep "${PAM_RHOST}") | |
echo ${authLogLine} >> ${log} | |
PAM_USER_PORT=$(echo ${authLogLine}| sed -r 's/.*port (.*) ssh2.*/\1/') | |
PAM_USER_SHA256=$(echo ${authLogLine}| sed -r 's/.*SHA256:(.*)/\1/') | |
# Get details from .ssh/authorized_keys | |
authFile="/home/${PAM_USER}/.ssh/authorized_keys" | |
PAM_USER_authorized_keys="" | |
while read l; do | |
if [[ -n "$l" && "${l###}" = "$l" ]]; then | |
authFileSHA256=$(ssh-keygen -l -f <(echo "$l")) | |
if [[ "${authFileSHA256}" == *"${PAM_USER_SHA256}"* ]]; then | |
PAM_USER_authorized_keys=$(echo ${authFileSHA256}| cut -d" " -f3) | |
break | |
fi | |
fi | |
done < ${authFile} | |
if [[ -n ${PAM_USER_authorized_keys} ]] | |
then | |
echo "$(timeStamp) Local user: ${PAM_USER}, authorized_keys user: ${PAM_USER_authorized_keys}" >> ${log} | |
else | |
echo "$(timeStamp) WARNING: no matching user in authorized_keys" >> ${log} | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment