Here’s your copy of a helpful log guide to make life easier for analysts.
As you can imagine, the Expel security operations center (SOC) uses a lot of logs. So we pulled them all together into a handy quick reference guide for our analysts. Then we decided it might be nice if we shared the list with our readers.
Enjoy.
What SOC logs are and where to start
A log is a timestamped record of something a system did—a request served, a user authenticated, a scheduled job run, a file written. On its own, a single line is inert. In an investigation it’s evidence: the record that puts an action at a time, on a host, under an account.
Security teams lean on logs for two jobs that pull in different directions. Detection needs a narrow, high-signal subset arriving fast enough to alert on. Investigation needs breadth and history—the log you didn’t think mattered until you’re reconstructing how someone got in. Most log strategies fail by optimizing for one and forgetting the other.
Which log sources to prioritize
If you’re starting from nothing, work in this order:
- Identity and authentication. Who logged in, from where, and whether it worked. Windows Security event log, Linux auth logs, and your identity provider. Most intrusions touch these first.
- Endpoint. Process execution, and the shell history covered below. This is where you see what an attacker actually did.
- Cloud control plane. API calls against your cloud accounts—who created, changed, or deleted infrastructure.
- Web access. The first thing you reach for when a public-facing server is compromised.
- Everything else. Useful in an investigation, rarely worth alerting on.
Work backward from the detections you want rather than forward from what’s easy to collect. A SIEM full of the logs that were simplest to onboard tells you about the wrong parts of your environment.
Retention and ingestion basics
Two costs govern every logging decision. Ingestion is what you pay to get data into your SIEM, usually priced by volume—which means your bill scales with how much you log, not how much you detect. Retention is what you pay to keep it, and it’s governed as much by compliance as by security: PCI DSS requires 12 months of audit log history with three months immediately available, and other frameworks set their own floors.
That tension is why teams increasingly split the difference—high-signal sources into the SIEM where detections run, high-volume low-signal sources into a security data lake where storage is cheaper and the data stays queryable for investigations. Before adding sources, it’s worth knowing whether the problem is coverage or tuning; optimizing an existing SIEM is often cheaper than feeding it more.
One practical note for everything below: default paths are defaults, not guarantees. Every section includes where to find the config file when logs aren’t where they should be.
Web access logs
Access logs record the http web requests sent to a web server. They’re the first logs we reach for in the event of a web server compromise. These logs show critical investigate information, like the URI string of requests, the status code of the request (200, 404, 500, etc.), and the requester’s source IP.
| Log source | OS/distro | Default path |
|---|---|---|
|
Apache |
Debian | /var/log/apache/access.log |
|
Apache |
Debian | /var/log/apache2/access.log |
|
Apache |
Red Hat | /var/log/httpd/access_log |
|
Apache |
Windows | %SystemDrive%\Program Files\Apache Software Foundation\Apache<version-number>\logs\access.log |
|
Apache |
Mac | /etc/httpd/log/access_log |
|
Apache |
FreeBSD | /var/log/httpd-access.log |
| ISS | Windows | %SystemDrive%\inetpub\logs\LogFiles |
| Tomcat | Debian | /opt/tomcat/log/localhost_access_log.YYYY-MM-DD.txt |
| Tomcat | Debian | /var/log/tomcat/localhost_access_log.YYYY-MM-DD.txt |
| Tomcat | Windows | %SystemDrive%\program files\apache software foundation\apache-tomcat<version-number>\logs\localhost_access_log |
| Tomcat | Mac | $TOMCAT_HOME/logs/localhost_access_log.YYYY-MM-DD.txt |
| JBoss | All platforms | <JBOSS-install_location>/standalone/log/<custom-name>.log |
| JBoss | All platforms | <JBOSS-install_location>/domain/log/<custom-name>.log |
| JBoss | Windows | <JBOSS-install_location>\server\default\log\<custom-name>.log |
| Confluence | Linux | /opt/atlassian/confluence/logs/conf_access_log<date>.log |
| Confluence | Linux | <confluence-install-location>/logs/conf_access_log<date>.log |
| Confluence | Windows | <confluence-install-location>\logs\conf_access_log<date>.log |
| nginx | Debian | /var/log/nginx/access.log |
| nginx | Red Hat | /var/log/nginx/access.log |
| nginx | Windows | <nginx-install-location>\logs\access.log |
Finding web access logs in non-default locations
Logging can be configured to write anywhere. When logs aren’t at the default path, the config file tells you where they went.
| source | OS/distro | Config file |
|---|---|---|
| Apache | Debian | /etc/apache2/sites-available/000-default.conf |
| Apache | Red Hat | /etc/httpd/conf/httpd.conf |
| Apache | Windows | <install-folder>\conf\httpd.conf |
| Apache | Mac | /etc/apache2/httpd.conf |
| IIS | Windows | %SystemDrive%\Windows\System32\inetsrv\config\applicationHost.config |
| IIS | Windows | %SystemDrive%\temp\appPools\<app-pool-name>\<app-pool-name>.config |
| Tomcat | All | server.xml in the Tomcat install directory |
| Confluence | Linux | /opt/confluence/conf/server.xml |
| Confluence | Windows | <confluence-install-location>\conf\server.xml |
| nginx | Linux | /etc/nginx/nginx.conf |
| nginx | Windows | <nginx-install-location>\conf\nginx.conf |
A note on IIS and multiple app pools: The app pool you want is in the command line arguments of the W3WP.exe process you’re investigating. Once you have the site id from applicationHost.config, the logs for that pool sit at <log-directory>\W3SVC<id-number>. Under the hood Confluence uses a Tomcat server, so its logging config works the same way Tomcat’s does.
Windows event logs
Windows event logs can be a treasure trove of forensic information. The security event log Security.evtx is one of the most-used log files in the Expel SOC, but other log files like System.evtx and Application.evtx can sometimes be put to good use.
Security.evtx holds a lot of valuable information, but one of the most common reasons for collecting this log is to get authentication info from event IDs 4624 and 4625. Authentication events are the highest-value logs most teams collect—see what a security operations center does with them.
| Log source | OS version | Default path | What it tells you |
|---|---|---|---|
| Event logs | Windows 2000, XP | %SystemDrive%\WINDOWS\System32\config\ | Security, system, and application events |
| Event logs | Windows 7-11 | %SystemDrive%\WINDOWS\System32\winevt\logs\ | Security, system, and application events |
| Event logs | Windows Server 2003 | %SystemDrive%\WINDOWS\System32\config\ | Security, system, and application events |
| Event logs | Windows Server 2008+ | %SystemDrive%\WINDOWS\System32\winevt\logs\ | Security, system, and application events |
Browser history files
Browser history files can be used to determine what website a malicious file was downloaded from (if it was downloaded through a browser). EDR tools and firewalls don’t always capture the URL or domain name that a file was downloaded from, but browser history is an easy way to determine where a user got a file.
Browser history files are simple SQLite databases that can be opened in free tools like DB Browser for SQLite (DB4S).
| Browser | OS | Default path |
|---|---|---|
| Chrome | Windows | %SystemDrive%\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\History |
| Chrome | Linux | /home/<username>/.config/google-chrome/Default/History |
| Chrome | Mac | /Users/<username>/Library/Application Support/Google/Chrome/Default/History |
| Edge | Windows | %SystemDrive%\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\History |
| Edge | Mac | /Users/<username>/Library/Application Support/Microsoft Edge/Default/History |
| Firefox | Windows | %SystemDrive%\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\%PROFILE%.default\places.sqlite |
| Firefox | Linux | /home/<username>/.mozilla/firefox/%PROFILE%.default/places.sqlite |
| Firefox | Mac | /Users/<username>/Library/Application Support/Firefox/Profiles/%PROFILE%.default/places.sqlite |
| Safari | Mac | /Users/<username>/Library/Safari/History.db |
Linux logs
Linux can seem a bit scary and complex to investigate, but when it comes to logging, it’s actually pretty simple. You don’t need any special software—all of these files can be opened in a text editor. These feed the same detection pipeline as everything else; the role SIEM plays in security operations covers how they get there.
| Log source | Distro | Default path | What it tells you |
|---|---|---|---|
| Authentication | Debian | /var/log/auth.log | User logons; who assumed root and when |
| Authentication | Red Hat | /var/log/secure | Used logons; who assumed root and when |
| Authentication | FredBSD | /var/log/secure | |
| Syslog/messages | Debian | /var/log/syslog | Cron jobs, services, daemons, kernel messages |
| Syslog/messages | Red Hat | /var/log/messages | Cron jobs, services, daemons, kernel messages |
| Syslog/messages | FreeBSD | /var/log/messages | Cron jobs, services, daemons, kernel messages |
| Cron | Debian | /var/log/cron, /var/log/syslog |
Scheduled jobs—a common persistence mechanism |
| Cron | Red Hat | /var/log/cron, /var/log/messages |
Scheduled jobs |
| Cron | RedBSD | /var/cron/log, /var/cron/olog, /var/log/messages |
Scheduled jobs |
Cron is the main scheduling tool that attackers might use to establish persistence on a Linux system. Cron logs can seem a bit superfluous—given that cron is often logged to the syslog/messages log—but like everything in Linux, cron logging can be highly configured. If you don’t see cron logs in the syslog, then it may be worth checking the dedicated cron log.
Shell history logs
Shell history logs are one of the most valuable investigative logs when it comes to Linux systems. Shell history records user-run commands and, given how command line heavy Linux can be, it’s likely that shell history will record at least some of the actions taken by an attacker.
These files are hidden by default, so make sure you enable hidden files when searching for them.
| Shell | Distro | Default path |
|---|---|---|
| Bash | Debian | /home/<username>/.bash_history |
| Bash | Red Hat | /home/<username>/.bash_history |
| ZSH | Debian | /home/<username>/.zsh_history |
| ZSH | Red Hat | /home/<username>/.zsh_history |
| TCSH | FreeBSD | /usr/home/<username>/.history |
Getting these logs somewhere useful
Knowing where a log lives is step one. Step two is getting it somewhere you can query it during an incident—and that’s where most teams stall, because ingestion costs and detection coverage pull against each other. Whether that means tuning the SIEM you have or routing high-volume sources to cheaper storage, the goal is the same: the log you need is already collected when you go looking for it.
References
Apache logs
- https://www.loggly.com/use-cases/how-to-monitor-your-apache-logs/
- https://sematext.com/blog/apache-logs/#apache-access-logs-location
- https://exampleconfig.com/view/apache-ubuntu20-04-etc-apache2-sites-available-000-default-conf
- https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/deployment_guide/s1-apache-config
- https://httpd.apache.org/docs/2.4/platform/windows.html
Tomcat logs
- https://www.loggly.com/use-cases/monitoring-and-troubleshooting-tomcat-logs/
- https://linuxhint.com/view-tomcat-logs-linux/
- https://sematext.com/blog/tomcat-logs/#:~:text=Tomcat%20Logs%20Location,-The%20location%20of&text=log%20.,%7Bver%7D%5Clogs%5Ccatalina.
JBOSS logs
- https://access.redhat.com/documentation/en-us/red_hat_jboss_data_virtualization/6.2/html/administration_and_configuration_guide/default_log_file_locations
- https://docs.cyberark.com/AAM-CP/10.10/en/Content/CP%20and%20ASCP/Logging-in-JBoss.htm
Confluence logs
- https://confluence.atlassian.com/doc/configure-access-logs-1044780567.html
- https://support.atlassian.com/organization-administration/docs/configure-required-connections-and-upstream-ports/
Nginx logs
Browser history
- https://www.foxtonforensics.com/browser-history-examiner/chrome-history-location
- https://www.foxtonforensics.com/browser-history-examiner/microsoft-edge-history-location
- https://www.foxtonforensics.com/browser-history-examiner/firefox-history-location
- https://www.foxtonforensics.com/blog/post/analysing-safari-browser-history
Linux logs
