Check: CD12-00-010700
Crunchy Data PostgreSQL STIG:
CD12-00-010700
(in versions v2 r2 through v1 r1)
Title
PostgreSQL must protect its audit features from unauthorized access. (Cat II impact)
Discussion
Protecting audit data also includes identifying and protecting the tools used to view and manipulate log data. Depending upon the log format and application, system and application log tools may provide the only means to manipulate and manage application and system log data. It is, therefore, imperative that access to audit tools be controlled and protected from unauthorized access. Applications providing tools to interface with audit data will leverage user permissions and roles identifying the user accessing the tools and the corresponding rights the user enjoys in order make access decisions regarding the access to audit tools. Audit tools include, but are not limited to, OS-provided audit tools, vendor-provided audit tools, and open source audit tools needed to successfully view and manipulate audit information system activity and records. If an attacker were to gain access to audit tools, he could analyze audit logs for system weaknesses or weaknesses in the auditing itself. An attacker could also manipulate logs to hide evidence of malicious activity.
Check Content
Note: The following instructions use the PGDATA and PGVER environment variables. See supplementary content APPENDIX-F for instructions on configuring PGDATA, APPENDIX-H for PGVER, and APPENDIX-I for PGLOG. Only the database owner and superuser can alter configuration of PostgreSQL. Ensure the PGLOG directory is owned by postgres user and group: $ sudo su - postgres $ ls -la ${PGLOG?} If PGLOG is not owned by the database owner, this is a finding. Ensure the data directory is owned by postgres user and group. $ sudo su - postgres $ ls -la ${PGDATA?} If PGDATA is not owned by the database owner, this is a finding. Ensure pgaudit installation is owned by root: $ sudo su - postgres $ ls -la /usr/pgsql-${PGVER?}/share/contrib/pgaudit If pgaudit installation is not owned by root, this is a finding. Next, as the database administrator (shown here as "postgres"), run the following SQL to list all roles and their privileges: $ sudo su - postgres $ psql -x -c "\du" If any role has "superuser" that should not, this is a finding.
Fix Text
Note: The following instructions use the PGDATA and PGVER environment variables. See supplementary content APPENDIX-F for instructions on configuring PGDATA, APPENDIX-H for PGVER and APPENDIX-I for PGLOG. If PGLOG or PGDATA are not owned by postgres user and group, configure them as follows: $ sudo chown -R postgres:postgres ${PGDATA?} $ sudo chown -R postgres:postgres ${PGLOG?} If the pgaudit installation is not owned by root user and group, configure it as follows: $ sudo chown -R root:root /usr/pgsql-${PGVER?}/share/contrib/pgaudit To remove superuser from a role, as the database administrator (shown here as "postgres"), run the following SQL: $ sudo su - postgres $ psql -c "ALTER ROLE <role-name> WITH NOSUPERUSER"
Additional Identifiers
Rule ID: SV-233607r879579_rule
Vulnerability ID: V-233607
Group Title: SRG-APP-000121-DB-000202
Expert Comments
CCIs
Number | Definition |
---|---|
CCI-001493 |
The information system protects audit tools from unauthorized access. |
Controls
Number | Title |
---|---|
AU-9 |
Protection Of Audit Information |