Сценарий: двухсторонняя TLS-аутентификация PostgreSQL для базы данных Сервера администрирования и базы данных IAM

19 октября 2026

ID 257050

В Kaspersky Security Center Linux вы можете настроить шифрование и взаимную проверку сертификатов между сервером PostgreSQL и клиентами – Сервером администрирования и IAM. Для каждой базы данных используется отдельный пользователь и отдельный клиентский сертификат. Кроме TLS применяется парольная аутентификация scram-sha-256.

Аутентификация сервера PostgreSQL состоит из следующих этапов:

  1. Подготовка СУБД и создание ролей

    Выполните следующие команды:

    sudo -u postgres psql

    CREATE DATABASE kav;

    CREATE DATABASE iam;

    CREATE USER myuserksc WITH PASSWORD '*password*';

    ALTER ROLE myuserksc WITH LOGIN CREATEDB;

    ALTER DATABASE kav OWNER TO myuserksc;

    CREATE USER myuseriam WITH PASSWORD '*password*';

    ALTER ROLE myuseriam WITH LOGIN CREATEDB;

    ALTER DATABASE iam OWNER TO myuseriam;

  2. Создание собственного 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:kladmins /etc/ssl/certs/postgresql_ca.crt

    sudo chmod 644 /etc/ssl/certs/postgresql_ca.crt

    sudo chmod 644 /etc/ssl/certs/postgresql.crt

  3. Создание клиентского CA и сертификатов для базы данных Сервера администрирования и базы данных IAM (двусторонняя 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

    openssl req -new -nodes -newkey rsa:4096 -keyout $HOME/postgresql_cli_myuseriam.key -out /tmp/postgresql_cli_myuseriam.csr -subj "/CN=myuseriam"

    sudo openssl x509 -req -in /tmp/postgresql_cli_myuseriam.csr -CA /etc/ssl/certs/postgresql_cli_ca.crt -CAkey /etc/ssl/private/postgresql_cli_ca.key -CAcreateserial -out $HOME/postgresql_cli_myuseriam.crt -days 365

  4. Копирование клиентских сертификатов на хост Сервера администрирования и IAM и установка прав

    Выполните следующие команды:

    sudo cp $HOME/postgresql_cli_myuserksc.crt /home/ksc/

    sudo cp $HOME/postgresql_cli_myuserksc.key /home/ksc/

    sudo cp $HOME/postgresql_cli_myuseriam.crt /home/ksciam/

    sudo cp $HOME/postgresql_cli_myuseriam.key /home/ksciam/

    sudo chown ksc:kladmins /home/ksc/*.crt /home/ksc/*.key

    sudo chown ksciam:kladmins /home/ksciam/*.crt /home/ksciam/*.key

    sudo chmod 644 /home/ksc/*.crt

    sudo chmod 600 /home/ksc/*.key

    sudo chmod 644 /home/ksciam/*.crt

    sudo chmod 600 /home/ksciam/*.key

  5. Настройка PostgreSQL

    Измените файл postgresql.conf следующим образом:

    listen_addresses = '*'

    ssl = on

    ssl_cert_file = '*path to postgresql.crt*'

    ssl_key_file = '*path to postgresql_leaf.key*'

    ssl_ca_file = '*path to postgresql_cli_ca.crt*'

    Измените файл pg_hba.conf следующим образом:

    hostssl kav myuserksc *Administration Server IP address* scram-sha-256 clientcert=verify-full

    hostssl iam myuseriam *Administration Server IP address* scram-sha-256 clientcert=verify-full

    Если Сервер администрирования и PostgreSQL находятся на одном устройстве, используйте адрес 127.0.0.1/32 и listen_addresses = 'localhost'.

    Убедитесь, что в pg_hba.conf нет записи, начинающейся с host.

  6. Перезапуск демона PostgreSQL

    Выполните следующую команду:

    systemctl restart postgresql

  7. Задание флага сервера для Сервера администрирования

    С помощью утилиты 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

  8. Настройка IAM

    Измените файл iam_config.yaml следующим образом:

    dbms_tl_opt_ssl_ca: "/etc/ssl/certs/postgresql_ca.crt"

    dbms_tl_opt_ssl_verify_server_cn: "1"

    dbms_tl_opt_ssl_cert: "/home/ksc/postgresql_cli_myuseriam.crt"

    dbms_tl_opt_ssl_key: "/home/ksc/postgresql_cli_myuseriam.key"

  9. Перезапуск служб Сервера администрирования

    Выполните следующую команду:

    sudo systemctl restart kl*

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!