sql >> Database teknologi >  >> RDS >> PostgreSQL

Aktiver FIPS på PostgreSQL-databasen

Jeg tror ikke, du kan køre Postgres i "FIPS-tilstand" på grund af dets brug af ikke-godkendt kryptografi. Fra en tidligere revision ved jeg, at den gør meget brug af MD5 (se f.eks. Postgres Mailing List:Brug af MD5 . Så mange ting går i stykker i praksis.

Uanset, her er trinene til at prøve at gøre det via OpenSSL. Der er tre dele, fordi Postgres ikke er FIPS-bevidst, og du skal lave nogle ændringer til Postgres.

Trin 1

Du skal bygge OpenSSL til konfigurationen. Dette er en to-trins proces. Først bygger du FIPS-objektmodulet; og for det andet bygger du FIPS Capable Library.

For at bygge FIPS-objektmodulet skal du først downloade `openssl-fips-2.n.n.tar.gz. Efter udpakning udfører du:

./configure
make
sudo make install
 

Når du har kørt ovenstående kommandoer, vil fipscanister vil være placeret i /usr/local/ssl/fips-2.0 . FIPS Capable Library vil bruge det til at levere FIPS-valideret kryptografi.

For det andet downloader du openssl-1.n.n.tar.gz . Efter udpakning udfører du:

./configure fips shared <other options>
make all
sudo make install
 

Den kritiske del er fips mulighed under konfiguration.

Når du har kørt ovenstående kommandoer, vil du have et FIPS-kapabelt bibliotek. Biblioteket vil være placeret i /usr/local/ssl/lib . Brug libcrypto.so og libssl.so som altid.

FIPS Capable Library bruger fipscanister , så du behøver ikke bekymre dig om, hvad der er i /usr/local/ssl/fips-2.0 . Det er kun en artefakt fra bygningen af ​​FIPS Object Module (noget afkald på hånden).

Trin to

Find, hvor Postgres kalder SSL_library_init :

$ grep -R SSL_library_init *
...
src/backend/libpq/be-secure.c:      SSL_library_init();
src/interfaces/libpq/fe-secure.c:           SSL_library_init();
 

Åbn be-secure.c og fe-secure.c , og tilføj et opkald til FIPS_mode_set .

/* be-secure.c, near line 725 */
static void
initialize_SSL(void)
{
    struct stat buf;

    STACK_OF(X509_NAME) *root_cert_list = NULL;

#if defined(OPENSSL_FIPS)
    int rc;
    rc = FIPS_mode();
    if(rc == 0)
    {
        rc = FIPS_mode_set(1);
        assert(1 == rc);
    }
#endif

    if (!SSL_context)
    {
#if SSLEAY_VERSION_NUMBER >= 0x0907000L
        OPENSSL_config(NULL);
#endif
        SSL_library_init();
        SSL_load_error_strings();
        ...
    }
    ...
}
 

Hvis opkaldet til FIPS_mode_set lykkes, så vil du bruge FIPS Valideret kryptografi. Hvis det mislykkes, vil du stadig bruge OpenSSL's kryptografi, men det vil ikke være FIPS Valideret kryptografi.

Du skal også tilføje følgende overskrifter til be-secure.c og fe-secure.c :

#include <openssl/opensslconf.h> #include <openssl/fips.h>

Trin tre

Det sidste trin er at sikre, at du bruger FIPS Capable Library fra trin et. Gør det via CFLAGS og LDFLAGS :

cd postgres-9.3.2
export CFLAGS="-I/usr/local/ssl/include"
export LDFLAGS="-L/usr/local/ssl/lib"

./config --with-openssl <other options>
...
 


  1. Sådan eksporteres forespørgselsresultat til .csv eller tabulatorsepareret fil i SQL Server Management Studio(SSMS) - SQL Server / TSQL Selvstudium Del 23

  2. Hent overordnet MySQL på øverste niveau

  3. MySql SELECT AS - Tilføj alle feltnavne

  4. Sådan konverteres MySQL datetime værdi til google chart api datetime