PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL डेटाबेस पर FIPS सक्षम करें

मुझे विश्वास नहीं है कि आप गैर-अनुमोदित क्रिप्टोग्राफी के उपयोग के कारण "FIPS मोड" में Postgres चला सकते हैं। पिछले ऑडिट से, मुझे पता है कि यह MD5 का व्यापक उपयोग करता है (उदाहरण के लिए देखें, पोस्टग्रेज मेलिंग लिस्ट:MD5 का उपयोग . अभ्यास में बहुत सारी चीज़ें टूटने वाली हैं।

इसके बावजूद, यहां ओपनएसएसएल के माध्यम से प्रयास करने और इसे करने के चरण दिए गए हैं। तीन भाग हैं क्योंकि Postgres FIPS-जागरूक नहीं है, और आपको Postgres में कुछ संशोधन करने की आवश्यकता है।

एक कदम

आपको कॉन्फ़िगरेशन के लिए ओपनएसएसएल बनाना होगा। यह दो चरणों वाली प्रक्रिया है। सबसे पहले आप FIPS ऑब्जेक्ट मॉड्यूल का निर्माण करें; और दूसरा, आप FIPS सक्षम लाइब्रेरी बनाते हैं।

FIPS ऑब्जेक्ट मॉड्यूल बनाने के लिए, पहले आप `openssl-fips-2.n.n.tar.gz डाउनलोड करें। अनपैक करने के बाद, आप निम्न कार्य करते हैं:

./configure
make
sudo make install

उपरोक्त कमांड चलाने के बाद, fipscanister /usr/local/ssl/fips-2.0 . में स्थित होगा . FIPS सक्षम पुस्तकालय इसका उपयोग FIPS मान्य क्रिप्टोग्राफी प्रदान करने के लिए करेगा।

दूसरा, आप डाउनलोड करें openssl-1.n.n.tar.gz . अनपैक करने के बाद, आप निम्न कार्य करते हैं:

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

महत्वपूर्ण हिस्सा है fips कॉन्फ़िगरेशन के दौरान विकल्प।

उपरोक्त आदेशों को चलाने के बाद, आपके पास एक FIPS सक्षम पुस्तकालय होगा। पुस्तकालय /usr/local/ssl/lib . में स्थित होगा . libcrypto.so . का उपयोग करें और libssl.so हमेशा की तरह।

FIPS सक्षम पुस्तकालय fipscanister . का उपयोग करता है , इसलिए आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि /usr/local/ssl/fips-2.0 में क्या है . यह सिर्फ FIPS ऑब्जेक्ट मॉड्यूल (कुछ हाथ से छूट) के निर्माण से एक आर्टिफैक्ट है।

दूसरा चरण

पता लगाएं कि Postgres 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();

be-secure.cखोलें और fe-secure.c , और 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();
        ...
    }
    ...
}

अगर FIPS_mode_set पर कॉल करें सफल होता है, तो आप FIPS मान्य क्रिप्टोग्राफी का उपयोग कर रहे होंगे। यदि यह विफल हो जाता है, तब भी आप OpenSSL की क्रिप्टोग्राफी का उपयोग कर रहे होंगे, लेकिन यह नहीं होगा FIPS मान्य क्रिप्टोग्राफी बनें।

आपको निम्न शीर्षलेखों को be-secure.c में भी जोड़ना होगा और fe-secure.c :

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

तीसरा चरण

अंतिम चरण यह सुनिश्चित करना है कि आप चरण एक से FIPS सक्षम पुस्तकालय का उपयोग कर रहे हैं। ऐसा CFLAGS के माध्यम से करें और 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PSQLException:त्रुटि:कॉलम में शून्य मान शून्य-शून्य बाधा का उल्लंघन नहीं करता है

  2. एसक्यूएल ऐरे से स्ट्रिंग्स के ऐरे में परिणाम सेट को कनवर्ट करें

  3. तालिका के अंदर JSONB डेटा प्रकार और PostgreSQL JDBC ड्राइवर का उपयोग करके JSON ऑब्जेक्ट को PostgreSQL में कैसे संग्रहीत करें?

  4. pgAdmin के साथ एक उपयोगकर्ता कैसे बनाएं

  5. PostgreSQL - pgAdmin UI के माध्यम से एक नया DB बनाएँ