Сценарий: двухсторонняя TLS-аутентификация PostgreSQL для базы данных Сервера администрирования
В Kaspersky Security Center Linux вы можете настроить шифрование и взаимную проверку сертификатов между сервером PostgreSQL и Сервером администрирования. Кроме TLS применяется парольная аутентификация scram-sha-256.
Аутентификация сервера PostgreSQL состоит из следующих этапов:
- Подготовка СУБД и создание ролей
Выполните следующие команды:
sudo -u postgres psql
CREATE DATABASE kav;
CREATE USER myuserksc WITH PASSWORD '*password*';
ALTER ROLE myuserksc WITH LOGIN CREATEDB;
ALTER DATABASE kav OWNER TO myuserksc;
- Создание собственного CA и серверного сертификата (односторонняя SSL-аутентификация)
subjectAltName(SAN) – обязательный параметр в серверном сертификате. Значение параметра должно соответствовать FQDN хоста.Выполните следующие команды:
sudo openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ssl/private/postgresql_ca.key -out /etc/ssl/certs/postgresql_ca.crt -days 365 -addext "subjectAltName=DNS:*FQDN*" -subj "/CN=mysrvca"
sudo openssl req -new -nodes -newkey rsa:4096 -keyout /etc/ssl/private/postgresql_leaf.key -out /tmp/postgresql_leaf.csr -addext "subjectAltName=DNS:< FQDN >" -subj "/CN=*FQDN*"
sudo openssl x509 -req -in /tmp/postgresql_leaf.csr -CA /etc/ssl/certs/postgresql_ca.crt -CAkey /etc/ssl/private/postgresql_ca.key -CAcreateserial -out /etc/ssl/certs/postgresql_leaf.crt -days 365 -sha256 -copy_extensions copy
sudo cat /etc/ssl/certs/postgresql_leaf.crt /etc/ssl/certs/postgresql_ca.crt | sudo tee /etc/ssl/certs/postgresql.crt
sudo chmod 600 /etc/ssl/private/postgresql_leaf.key
sudo chown postgres:postgres /etc/ssl/private/postgresql_leaf.key
sudo chmod 644 /etc/ssl/certs/postgresql_leaf.crt
sudo chown ksc:ksc /etc/ssl/certs/postgresql_ca.crt
sudo chmod 644 /etc/ssl/certs/postgresql_ca.crt
sudo chmod 644 /etc/ssl/certs/postgresql.crt
- Создание клиентского CA и сертификатов для базы данных Сервера администрирования (двусторонняя SSL-аутентификация)
Выполните следующие команды:
sudo openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ssl/private/postgresql_cli_ca.key -out /etc/ssl/certs/postgresql_cli_ca.crt -days 365 -subj "/CN=myclica"
openssl x509 -in /etc/ssl/certs/postgresql_cli_ca.crt -text -noout
sudo chmod 600 /etc/ssl/private/postgresql_cli_ca.key
sudo chmod 644 /etc/ssl/certs/postgresql_cli_ca.crt
openssl req -new -nodes -newkey rsa:4096 -keyout $HOME/postgresql_cli_myuserksc.key -out /tmp/postgresql_cli_myuserksc.csr -subj "/CN=myuserksc"
sudo openssl x509 -req -in /tmp/postgresql_cli_myuserksc.csr -CA /etc/ssl/certs/postgresql_cli_ca.crt -CAkey /etc/ssl/private/postgresql_cli_ca.key -CAcreateserial -out $HOME/postgresql_cli_myuserksc.crt -days 365
- Копирование клиентских сертификатов на хост Сервера администрирования и установка прав
Выполните следующие команды:
sudo cp $HOME/postgresql_cli_myuserksc.crt /home/ksc/
sudo cp $HOME/postgresql_cli_myuserksc.key /home/ksc/
sudo chown ksc:kladmins /home/ksc/*.crt /home/ksc/*.key
sudo chmod 644 /home/ksc/*.crt
sudo chmod 600 /home/ksc/*.key
- Настройка PostgreSQL
Измените файл postgresql.conf следующим образом:
listen_addresses = '*'
ssl = on
ssl_cert_file = '*путь к postgresql.crt*'
ssl_key_file = '*путь к postgresql_leaf.key*'
ssl_ca_file = '*путь к postgresql_cli_ca.crt*'
Измените файл pg_hba.conf следующим образом:
hostssl kav myuserksc *IP Сервера администрирования* scram-sha-256 clientcert=verify-full
Если Сервер администрирования и PostgreSQL находятся на одном устройстве, используйте адрес
127.0.0.1/32иlisten_addresses = 'localhost'.Убедитесь, что в pg_hba.conf нет записи, начинающейся с
host. - Перезапуск демона PostgreSQL
Выполните следующую команду:
systemctl restart postgresql
- Задание флага сервера для Сервера администрирования
С помощью утилиты klscflag создайте флаги сервера и укажите путь к файлам сертификатов в качестве их значений.
Утилита klscflag расположена в папке установки Сервера администрирования. Путь установки по умолчанию:
/opt/kaspersky/ksc64/sbin/.Выполните следующие команды:
klscflag -fset -pv klserver -n KLSRV_POSTGRES_OPT_SSL_CERT -v *path to postgresql_cli_myuserksc.crt* -t s
klscflag -fset -pv klserver -n KLSRV_POSTGRES_OPT_SSL_KEY -v *path to postgresql_cli_myuserksc.key* -t s
klscflag -fset -pv klserver -n KLSRV_POSTGRES_OPT_SSL_CA -v *path to postgresql_ca.crt* -t s
Если postgres_leaf.key требует кодовую фразу, создайте флаг
KLSRV_POSTGRES_OPT_TLS_PASPHRASEи укажите кодовую фразу в качестве его значения:klscflag -fset -pv klserver -n KLSRV_POSTGRES_OPT_TLS_PASPHRASE -v *pasphrase* -t s
- Перезапуск служб Сервера администрирования
Выполните следующую команду:
sudo systemctl restart kl*