--- layout: handbook-page-toc title: "SYS.1.01 - Audit Logging Control Guidance" --- ## On this page {:.no_toc .hidden-md .hidden-lg} - TOC {:toc .hidden-md .hidden-lg} # SYS.1.01 - Audit Logging ## Control Statement GitLab logs critical information system activity. ## Context Logging is the foundation for a variety of other security controls including monitoring, incident response, and configuration management. Without comprehensive and reliable logs, large parts of our security compliance program wouldn't be possible. This control is left vague by design. As we develop our system maps and inventories this control will likely become a bit more targeted. To start we really want all GitLab teams to enable system-level logging on all production systems. An auditor will look to validate in-scope systems are generating logs, those logs are collected, retained the required amount of time and utilized to monitor for performance, health, and anomalies. To validate the control is working properly, the auditor should require additional pieces of information to demonstrate audit logging is functioning properly. Those information items include: * Review of the audit and accountability policy and procedures * Confirmation that audit events are reviewed and updated on a recurring basis * Review what should be collected for auditing and cross-reference against what is collected * Determine what defines a production system to validate the correct systems are being audited * Confirm log validation processes are working as intended * Master asset listing to confirm correct systems are being audited * Log collection process(es) ## Scope This control applies to all systems within our production environment. The production environment includes all endpoints and cloud assets used in hosting GitLab.com and its subdomains. This may include third-party systems that support the business of GitLab.com. ## Ownership Control Owner: * Infrastructure Process Owners: * Security Compliance * Infrastructure * Security Operations ## Guidance Server configuration standards should have logging information enabled for each type of system. These logs should be retained for one year with 90 days of data immediately available for analysis or in accordance with [Record Retention Policy](/handbook/people-group/code-of-conduct/#record-retention-policy), whichever is longer. ### Audit Logging Matrix _Audit Logging Matrix is a modified version of_ [NIST 800-92 - Guide to Computer Security Log Management](https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-92.pdf)
Type | Value | Reason(s) | Log Example(s) |
General Information
|
Timestamp | When the event occurred | 2017-07-04*13:23:55 2019-09-30T19:15:26.309Z Sep 30, 2019 @ 15:15:26.309 |
Event, Status, and/or error codes | The action taken | Sep 11 09:46:33 sys1 crontab[20601]: (root) BEGIN EDIT (root) Sep 11 09:46:39 sys1 crontab[20601]: (root) REPLACE (root) Sep 11 09:46:39 sys1 crontab[20601]: (root) END EDIT (root) storage.objects.delete v1.compute.instances.delete |
|
Service/cmd/app name | What tool the actor used | service sshd start | |
User or system acct associated with an event (username, uuid, global UID, API token name, 3rd party) | Actor | "user_id":3003042 "username":"jsmith-admin" "TdGZg20BL6pl1duCU2g7" |
|
Group | What access the actor has | 6007778 | |
Device used (e.g. source and destination IPs, terminal session ID, web browser, device ID, etc.) | Where the event is originating from or terminates | source IP - 192.168.xxx.174:8080 destination IP - 192.168.xxx.126:53021 device ID - 89ABxDEF-01234567-89ABxDEF |
|
OS Events
|
Start-up and shut-down of the system | Unintended or modified system activity | Jun 1 22:20:05 secserv kernel: Kernel logging (proc) stopped. Jun 1 22:20:05 secserv kernel: Kernel log daemon terminating. Jun 1 22:20:06 secserv exiting on signal 15 Nov 27 08:05:57 galileo kernel: Kernel logging (proc) stopped. Nov 27 08:05:57 galileo kernel: Kernel log daemon terminating. Nov 27 08:05:57 galileo exiting on signal 15 |
Start-up and shut-down of a service | Unintended or modified service activity | Jan 26 12:22:41 combo xinetd[2013]: bind failed (Address already in use (errno = 98)). service = telnet Jan 26 12:22:41 combo xinetd[2013]: Service telnet failed to start and is deactivated. Jan 26 12:22:42 combo spamassassin: spamd startup succeeded Jan 26 12:22:43 combo privoxy: privoxy startup succeeded Jan 26 12:55:20 combo sendmail: sm-client shutdown succeeded |
|
Network connection changes or failures | Unintended or modified network activity | Jan 26 12:22:03 combo network: Setting network parameters: succeeded | |
Changes to, or attempts to change, system security settings and controls | Security settings and controls are modified very rarely | TBD | |
Audit Records
|
Log-on attempts (successful or unsuccessful) | Identify brute force, password spraying | May 21 11:21:03 gitlab.com sshd[11179]: `Accepted password` for tanuki from 202.91.xxx.210 port 58244 ssh2 Dec 12 21:32:40 gitlab.com sshd[43456]: `Failed password` for root from 192.168.xxx.174 port37632 ssh2 Jan 22 05:51:12 combo sshd[24935]: Failed password for illegal user miha from ::ffff:212.24.173.67 port 55263 ss |
The function(s) performed after logging on (e.g., reading or updating a critical file, software installation) | Track all actions taken by actor | Jan 26 12:22:13 combo kernel: audit(1138278089.855:0): avc: denied { read write } for pid=1 exe=/sbin/init name=initctl dev=hda2 ino=1031635 scontext=system_u:system_r:kernel_t tcontext=system_u:object_r:file_t tclass=fifo_file | |
File changes( e.g., name, creation and deletion, integrity) | Unintended or modified file activity | Sat Feb 3 05:32:20 CST 2007 0 /etc/hosts1308742 fd:00 0100644 0 0 00:00 system_u:object_r:etc_t:s0 | |
Data export | Track data exportation against defined baselines | Mon Jun 19 04:44:43 2017 1 10.4.xxx.22 20 /CSV/test1.csv a _ o r testuser ftp 0 * c Mon Jun 19 04:51:33 2017 1 10.4.xxx.22 432 /CSV/test4.csv a _ o r testuser ftp 0 * c Mon Jun 19 04:57:15 2017 1 10.4.xxx.22 110 /CSV/test14.csv a _ o r testuser ftp 0 * c Mon Jun 19 04:57:19 2017 1 10.4.xxx.22 2505 /CSV/master.csv a _ o r testuser ftp 0 * c |
|
Account changes (e.g., account creation and deletion, account privilege assignment) | Identify privilege escalation or suspicious accounts | sudo: mike : TTY=pts/2 ; PWD=/home/mike ; USER=root ; COMMAND=/usr/sbin/adduser jim sudo: pam_unix(sudo:session): session opened for user root by mike(uid=1000) groupadd[1731]: group added to /etc/group: name=jim, GID=1001 groupadd[1731]: group added to /etc/gshadow: name=jim groupadd[1731]: new group: name=jim, GID=1001 useradd[1735]: new user: name=jim, UID=1001, GID=1001, home=/home/jim, shell=/bin/bash passwd[1742]: pam_unix(passwd:chauthtok): password changed for jim passwd[1742]: gkr-pam: couldn't update the login keyring password: no old password was entered chfn[1743]: changed user 'jim' information sudo: pam_unix(sudo:session): session closed for user root |
|
Successful/failed use of privileged accounts | Unintended privileged account activity | Jan 30 11:25:57 combo sshd(pam_unix)[3533]: authentication failure; logname= uid=0 euid=0 tty=NODEVssh ruser= rhost=mail.fullerproperties.com user=root Jan 23 05:28:18 combo sshd[28534]: Failed password for root from ::ffff:62.26.66.134 port 57203 ssh2 |
|
Database Operations
|
Direct data changes | Integrity of financial data used in reporting | TBD |
ELT job failures | Completeness and accuracy of data being used in financial reporting and operational decision-making | _Dependent on key financial applications_ | |
Application account information
|
Successful and failed application authentication attempts | Identify unintended activity | Git-99-sb-gprd sshd 3087 error: Received disconnect from 10.218.xxx.36 port 39772:3: com.jcraft.jsch.JSchException: Auth fail [preauth] system.auth gprd git-99-sb-gprd git-99-sb-gprd.c.gitlab-production.internal 2019/10/04 18:06:23 [error] 29881#0: *319208 connect() to unix:/var/opt/gitlab/gitlab-workhorse/socket failed (111: Connection refused) while connecting to upstream, client: 156.160.xxx.190, server: git.kts.io, request: "POST /api/v4/jobs/request HTTP/1.1", upstream: "hxxp://unix:/var/opt/gitlab/gitlab-workhorse/socket:/api/v4/jobs/request", host: "git.kts.io" |
Application account changes (e.g., account creation and deletion, account privilege assignment) | Identify privilege escalation or suspicious accounts | October 06, 2014 11:56: User "Administrator" (admin@example.com) was created October 06, 2014 11:56: Documentcloud created a new project "Documentcloud / Underscore" October 06, 2014 11:56: Gitlab Org created a new project "Gitlab Org / Gitlab Ce" October 07, 2014 11:25: User "Claudie Santie" (santie_clause@tanuki.co.uk) was removed October 07, 2014 11:25: Project "project133" was removed |
|
Use of application privileges | Unintended privileged account activity | TBD | |
Application Operations
|
Application startup and shutdown | Unintended or modified application activity | TBD |
Application failures | Identify brute force, password spraying | TBD | |
Major application configuration changes | Unintended or modified application configuration activity | TBD | |
Application transactions: – e-mail servers recording the sender, recipients, subject name, and attachment names for each e-mail – Web servers recording each URL requested and the type of response provided by the server – business applications recording which financial records were accessed by each user |
Capture relevant application transaction data to create baselines for identifying unintended actions | TBD |
## Additional control information and project tracking Non-public information relating to this security control as well as links to the work associated with various phases of project work can be found in the [Audit Logging control issue](https://gitlab.com/gitlab-com/gl-security/compliance/compliance/issues/904). ### Policy Reference * [GitLab Audit Logging Policy](/handbook/engineering/security/audit-logging-policy.html) * [Monitoring of GitLab.com](/handbook/engineering/monitoring/) * [GitLab.com Logging Runbook](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc) * [GitLab.com audit logging infrastructure](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#logging-infrastructure-overview) * [GitLab.com - what are we logging](https://gitlab.com/gitlab-com/runbooks/tree/master/logging/doc#what-are-we-logging) * [GitLab.com Main Monitoring Dashboards](/handbook/engineering/monitoring/#main-monitoring-dashboards) ## Framework Mapping * ISO * A.12.4.1 * SOC2 CC * CC7.2 * NIST 800-53 * AU-1 * AU-2 * AU-9 * AU-12