SV-235135r638812_rule
V-235135
SRG-APP-000176-DB-000068
MYS8-00-004800
CAT I
10
Implement strong access and authentication controls to protect the database’s private key.
Configure the database to support Transport Layer Security (TLS) protocols and the put in place file systems permissions on authentication and signing credentials, including private keys.
Put keys in place in the datadir, or define their locations using ssl_capath and ssl_crlpath.
Ensure proper permissions are set to protect the private keys and certificates.
Change directory ssl_capath, ssl_crlpath, or the default datadir path.
To determine the file paths:
select @@ssl_capath, @@ssl_crlpath, @@ssl_key, @@datadir;
Ensure OS account mysql owns all the pem and key files.
$ chown mysql *.pem
$ chgrp mysql *.key
$ chmod 600 *.key"
$ chmod 600 *.pem
Optionally, allow access to public keys.
$ chmod 644 client-cert.pem client-key.pem
$chmod 644 public_key.pem server-cert.pem
If the server-key.pem has a password, provide this password when prompted during a console startup. The server will not start without this password if the server key is password protected.
Edit the mysql configuration file.
[mysqld]
ssl-fips-mode=ON
If the OpenSSL FIPS Object Module is not available, ssl_fips_mode to ON or STRICT at startup causes the server to produce an error message and exit.
Review DBMS configuration to determine whether appropriate access controls exist to protect the DBMS’s private key.
If strong access controls do not exist to enforce authorized access to the private key, this is a finding.
MySQL stores certificates in PEM formatted files.
Verify User ownership, Group ownership, and permissions on the ssl_files.
select @@ssl_ca, @@ssl_capath, @@ssl_cert, @@ssl_cipher, @@ssl_crl, @@ssl_crlpath, @@ssl_fips_mode, @@ssl_key;
If ssl_path or ssl_crlpath are not defined the locations default to the datadir.
To determine the datadir
select @@datadir;
Example if path is <directory where audit log files are located>/
sudo sh -c 'ls -l <directory where data files are located>/*.pem'
For example if the value returned by "select @@datadir;' is /usr/local/mysql/data/
sudo sh -c 'ls -l /usr/local/mysql/data/*.pem'
Password:
-rw------- 1 _mysql _mysql 1676 Feb 25 11:09 <directory where audit log files are located>/ca-key.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/ca.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/client-cert.pem
-rw------- 1 _mysql _mysql 1680 Feb 25 11:09 <directory where audit log files are located>/client-key.pem
-rw------- 1 _mysql _mysql 1676 Feb 25 11:09 <directory where audit log files are located>/private_key.pem
-rw-r--r-- 1 _mysql _mysql 452 Feb 25 11:09 <directory where audit log files are located>/public_key.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/server-cert.pem
-rw------- 1 _mysql _mysql 1680 Feb 25 11:09 <directory where audit log files are located>/server-key.pem
If the User owner is not "mysql", this is a finding.
If the Group owner is not "mysql", this is a finding.
For public certs and keys, permissions should be "rw" for mysql and "readonly" for mysql group and world. These files by default are named "ca.pem", "client-cert.pem", "public_key.pem", and "server-cert.pem". If not, this is a finding.
For private certs and keys, permissions should be "rw" for mysql and "no rights" for mysql group or world. These files by default are named "ca-key.pem", "client-key.pem", "private_key.pem", and "server-key.pem". If not, this is a finding.
Review system configuration to determine whether FIPS 140-2 support has been enabled.
select @@ssl_fips_mode;
- OFF: Disable FIPS mode.
- ON: Enable FIPS mode.
- STRICT: Enable “strict” FIPS mode.
If FIPS mode is not "ON" or "STRICT", this is a finding.
If the server-key.pem has a password, verify when starting mysqld in a console there is prompt requiring the passphrase for the server-key.
V-235135
False
MYS8-00-004800
Review DBMS configuration to determine whether appropriate access controls exist to protect the DBMS’s private key.
If strong access controls do not exist to enforce authorized access to the private key, this is a finding.
MySQL stores certificates in PEM formatted files.
Verify User ownership, Group ownership, and permissions on the ssl_files.
select @@ssl_ca, @@ssl_capath, @@ssl_cert, @@ssl_cipher, @@ssl_crl, @@ssl_crlpath, @@ssl_fips_mode, @@ssl_key;
If ssl_path or ssl_crlpath are not defined the locations default to the datadir.
To determine the datadir
select @@datadir;
Example if path is <directory where audit log files are located>/
sudo sh -c 'ls -l <directory where data files are located>/*.pem'
For example if the value returned by "select @@datadir;' is /usr/local/mysql/data/
sudo sh -c 'ls -l /usr/local/mysql/data/*.pem'
Password:
-rw------- 1 _mysql _mysql 1676 Feb 25 11:09 <directory where audit log files are located>/ca-key.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/ca.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/client-cert.pem
-rw------- 1 _mysql _mysql 1680 Feb 25 11:09 <directory where audit log files are located>/client-key.pem
-rw------- 1 _mysql _mysql 1676 Feb 25 11:09 <directory where audit log files are located>/private_key.pem
-rw-r--r-- 1 _mysql _mysql 452 Feb 25 11:09 <directory where audit log files are located>/public_key.pem
-rw-r--r-- 1 _mysql _mysql 1112 Feb 25 11:09 <directory where audit log files are located>/server-cert.pem
-rw------- 1 _mysql _mysql 1680 Feb 25 11:09 <directory where audit log files are located>/server-key.pem
If the User owner is not "mysql", this is a finding.
If the Group owner is not "mysql", this is a finding.
For public certs and keys, permissions should be "rw" for mysql and "readonly" for mysql group and world. These files by default are named "ca.pem", "client-cert.pem", "public_key.pem", and "server-cert.pem". If not, this is a finding.
For private certs and keys, permissions should be "rw" for mysql and "no rights" for mysql group or world. These files by default are named "ca-key.pem", "client-key.pem", "private_key.pem", and "server-key.pem". If not, this is a finding.
Review system configuration to determine whether FIPS 140-2 support has been enabled.
select @@ssl_fips_mode;
- OFF: Disable FIPS mode.
- ON: Enable FIPS mode.
- STRICT: Enable “strict” FIPS mode.
If FIPS mode is not "ON" or "STRICT", this is a finding.
If the server-key.pem has a password, verify when starting mysqld in a console there is prompt requiring the passphrase for the server-key.
M
5277