Triage Linux SSH and Sudo Activity
SSH and sudo records provide useful context about remote access and privilege use. Review them together: an SSH authentication event identifies an access attempt or session, while sudo records can show a later command run with elevated privileges.
This walkthrough uses the systemd journal and read-only commands. Distribution logging differs: Debian and Ubuntu commonly write authentication messages to /var/log/auth.log; RHEL-family systems commonly use /var/log/secure when a syslog service is configured. Journal retention and collection policy determine which records are available.

Journal review: Compare SSH authentication and sudo records using their UTC timestamps, account, source, and command.
Step 1: Set the Host and Time Basis
Record the System and Its Time Configuration
ScopeRecord the case ID, host name, affected account, and time range. Compare the host’s clock and time zone with the alerting platform, then use UTC when building the shared timeline. Start with a short window around the alert; widen it only when the evidence calls for it.
hostnamectl --statictimedatectl statussudo journalctl --list-boots❯ View Expected Console Output
app-17Local time: Mon 2026-10-05 09:20:00 CESTUniversal time: Mon 2026-10-05 07:20:00 UTCTime zone: Europe/Zagreb (CEST, +0200)
Use journalctl --utc in the following queries to compare entrieswith other systems on a consistent time basis.Step 2: Query SSH and Sudo Records for a Bounded Window
Read the Relevant Journal Entries
Log ReviewQuery SSH daemon and sudo records separately so each result is easy to review. The _COMM match filters on the process name. Use the case’s actual start and end times instead of the example 24-hour interval when investigating a real alert.
sudo journalctl --since '24 hours ago' --until now --utc \ --no-pager -o short-iso-precise _COMM=sshd
sudo journalctl --since '24 hours ago' --until now --utc \ --no-pager -o short-iso-precise _COMM=sudo❯ View Expected Console Output
2026-10-05T07:22:18.412345Z app-17 sshd[2481]: Failed password for ...2026-10-05T07:23:04.512345Z app-17 sshd[2510]: Accepted publickey for ...2026-10-05T07:25:11.612345Z app-17 sudo[2634]: user : TTY=pts/1 ; COMMAND=...Step 3: Inspect the Authentication and Privilege Details
Separate Attempts, Sessions, and Elevated Commands
AnalysisFor SSH, note whether authentication succeeded, the account, source address, authentication method, and any session open or close messages. For sudo, record the invoking account, target user, terminal, working directory, and command when logged. A failed attempt is not a successful session, and a sudo command is not suspicious solely because it is privileged.
SSH fields to capture:- Timestamp in UTC- Success or failure and authentication method- Account and source address- Session opened / closed when recorded- Host and SSH service log source
Sudo fields to capture:- Invoking account and target user- TTY, working directory, and command- Timestamp, host, and source log record- Whether the command matches an approved task❯ View Expected Console Output
Example finding:An accepted public-key login for ops-user came from a new sourceaddress. A sudo command followed two minutes later; owner andmaintenance authorization are not yet confirmed.Step 4: Correlate with Other Host and Identity Evidence
Check Nearby Sessions and Approved Work
CorrelationCompare the same time window with the change calendar, access gateway, identity provider, endpoint telemetry, and the system’s expected role. A source address may identify a VPN, jump host, NAT gateway, or scanner rather than a person’s workstation. Check the account owner and key-management record before calling a public-key login unauthorized.
last -Fai | head -n 30sudo lastb -Fai | head -n 30❯ View Expected Console Output
last reads recorded login sessions when the system maintains them.lastb reads failed-login records when the system maintains them.
These files may be absent, rotated, incomplete, or outside retention.Step 5: Handle Missing Logs and Write the Handoff
Check the Distribution's Other Authentication Log
Collection CheckIf the journal query is empty, confirm the service name, time window, journal access, and retention first. Some systems forward authentication messages to traditional log files instead of, or in addition to, the journal. Read only the path used by the host’s logging configuration; do not assume that every distribution has both files.
# Debian / Ubuntu, when configured:sudo grep -E 'sshd|sudo' /var/log/auth.log | tail -n 500
# RHEL / Fedora family, when configured:sudo grep -E 'sshd|sudo' /var/log/secure | tail -n 500❯ View Expected Console Output
No matching file or no entries is a collection / retention questionto investigate; it is not proof that no authentication occurred.
Use the timestamps to keep only the case interval. If the intervalspans log rotation, identify and review the relevant rotated files too.