Credential guessing against any exposed service.
What gives it awayHigh volume from one rhost, particularly with 'user unknown' lines interleaved.
ATT&CK T1110Nothing matches that yet. Tell us what you were looking for and it goes on the list.
Linux PAM · Event pam_unix authentication failure
The PAM authentication layer refused a login. Because nearly every Linux login path goes through PAM, these messages cover SSH, sudo, su, console logins, and services alike — and the service name in brackets tells you which.
Also written as pam_unix authentication failurecheck pass; user unknownpam authentication failure log
A password was rejected. The text in brackets says which part of the system asked for it.
The service name in brackets — sshd, sudo, login, cron — is the field that gives the message meaning, and it is easy to miss. 'check pass; user unknown' distinguishes a non-existent account from a wrong password, which is the same distinction the Windows sub-status codes make.
Sanitised. Addresses come from the RFC 5737 documentation ranges.
Aug 28 09:41:15 web-01 sshd[24817]: pam_unix(sshd:auth): check pass; user unknown
Aug 28 09:41:15 web-01 sshd[24817]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=198.51.100.77
Aug 28 09:46:31 web-01 sudo: pam_unix(sudo:auth): authentication failure; logname=jbrooks uid=1000 euid=0 tty=/dev/pts/1 ruser=jbrooks rhost= user=jbrooks Everything else in the log line is context.
sshdA remote login attempt. sudoA privilege escalation attempt. loginA console or terminal login. cronA scheduled job failing to authenticate, usually a configuration problem rather than an attack. Most of the time it is one of these.
What gives it awayHigh volume from one rhost, particularly with 'user unknown' lines interleaved.
ATT&CK T1110What gives it awayA run of 'check pass; user unknown' entries, which reveal which accounts exist.
ATT&CK T1589.002What gives it awaysudo-context failures from an account shortly after an unusual login.
ATT&CK T1548.003grep 'pam_unix' /var/log/auth.log | grep 'authentication failure' | grep -oP 'rhost=\K\S*' | sort | uniq -c | sort -rn | head -20 grep -oP 'pam_unix\(\K[^:]+' /var/log/auth.log | sort | uniq -c | sort -rn index=linux sourcetype=linux_secure "pam_unix" "authentication failure" | rex "pam_unix\((?<service>[^:]+):" | stats count by service user rhost | sort -count PAM, the layer nearly every Linux login goes through, rejected a set of credentials. The service name in brackets tells you where — sshd for remote logins, sudo for escalation, login for console access, cron for scheduled jobs. Without reading that part, the message tells you very little.
'check pass; user unknown' means no such account exists. 'authentication failure' on its own means the account exists and the password was wrong. When both appear together the account does not exist — the same distinction the Windows sub-status codes make, and it matters for the same reason.
Because the attempt was local rather than over the network — a console login, a sudo attempt, or a cron job. A populated rhost means the attempt came from another machine, which is the case worth aggregating on.
Last reviewed 28 August 2026