CentOS

Активирайте SSL криптиране и SCRAM-SHA-256 удостоверяване на парола в PostgreSQL

Активирайте SSL криптиране и SCRAM-SHA-256 удостоверяване на парола в PostgreSQL

Настоящите бизнес нужди продължават да напредват поради засилените нарушения на сигурността в световен мащаб. В резултат на това всяка организация вдига чорапите си, докато се стяга и намалява максимално повърхността на атаката си. Независимо дали става дума за приложения, мрежи, сървъри или бази данни, стандартите за сигурност са ключови изисквания, които изобщо не трябва да се избягват. В резултат на това тръгваме на пътешествие, включващо осигуряване на вашата мощна база данни PostgreSQL с релационна обектна релация.

PostgreSQL е мощна система за обектно-релационни бази данни с отворен код, която използва и разширява езика SQL, комбиниран с много функции, които безопасно съхраняват и мащабират най-сложните натоварвания на данни. Източник: PostgreSQL страница

Ще разгледаме как да активираме SSL / TLS връзка с вашата база данни PostgreSQL, като първо активираме SSL в базата данни, след което добавяме сертификата към клиента за сигурна връзка. Освен това ще активираме SCRAM-SHA-256 удостоверяване с парола в нашата база данни PostgreSQL. За да сме всички на една и съща страница, ще опишем SCRAM-SHA-256 удостоверяване с парола.

The scram-sha-256 методът за удостоверяване с парола извършва удостоверяване SCRAM-SHA-256, както е описано в RFC 7677. Това е схема за предизвикателство-отговор, която предотвратява надушването на пароли при ненадеждни връзки и поддържа съхраняването на пароли на сървъра в криптографски хеширана форма, която се смята за сигурна. Източник: PostgreSQL страница

Сега, когато формалностите са извън пътя, ние ще продължим да даваме възможност SSL и SCRAM-SHA-256 удостоверяване с парола, като следвате стъпките по-долу.

ЗАБЕЛЕЖКА: Ще използваме CentOS за този пример, представените пътища на директориите могат да се различават в различните дистрибуции.

Стъпка 1: Инсталирайте базата данни PostgreSQL

В случай, че нямате база данни PostgreSQL, ръководствата, изброени по-долу, ще я покажат на вашия сървър възможно най-скоро.

Инсталирайте PostgreSQL 13 на Fedora

Как да инсталираме PostgreSQL 13 на CentOS / RHEL 8

Инсталирайте PostgreSQL 13 на Debian

Как да инсталирате PostgreSQL 13 на CentOS 7

След като приключите, можем да пристъпим към внедряване на SSL във вашата база данни PostgreSQL.

Стъпка 2: Създайте сертификати

PostgreSQL има вградена поддръжка за използване на SSL връзки за криптиране на комуникация клиент / сървър за повишена сигурност. В случай че нямате закупени сертификати, създайте сертификат на сървър, чиято самоличност може да бъде проверена от клиенти. За да направите това, първо създайте заявка за подписване на сертификат (CSR) и файл с публичен / частен ключ като този

openssl req -new -nodes -text -out корен.csr \ -keyout корен.ключ -subj "/ CN = корен.computingforgeeks.com "

Уверете се, че сте променили „корен.computingforgeeks.com”, За да съответства на името на вашия домейн. След създаването на основния ключ се уверете, че неговите разрешения са зададени възможно най-сигурно. Уверете се, чегрупа" и "други”Няма да може да чете, пише и изпълнява.

sudo chmod og-rwx корен.ключ

След като приключите, подпишете заявката с ключа, за да създадете коренно удостоверително тяло (като използвате местоположението на конфигурационния файл OpenSSL по подразбиране в Linux). Можете да проверите местоположението на конфигурационния файл на OpenSSL в Linux, като стартирате „openssl версия -d”Команда.

openssl x509 -req -в корен.csr -text -days 3650 \ -extfile / etc / pki / tls / openssl.cnf -разширения v3_ca \ -signkey корен.изход за корен.crt

И накрая, създайте сертификат на сървър, подписан от новия орган за сертифициране на корен:

\ ## Генериране на частен сървър ключ и задаване на защитени разрешения openssl req -new -nodes -text -out сървър.csr \ -keyout сървър.ключ -subj "/ CN = datab.computingforgeeks.com "sudo chmod og-rwx сървър.ключ

След това също създайте сертификата на сървъра, подписан от новия орган за сертифициране на корен

openssl x509 -req -in сървър.csr -text -days 365 \ -CA корен.crt -CAkey корен.ключ -CAcreateserial \ -out сървър.crt

Горните команди ще дадат резултат сървър.crt и сървър.ключ. Това са сървърните сертификати, които ще добавим към PostgreSQL. От друга страна, корен.crt трябва да се съхранява в клиента, за да може клиентът да провери дали сертификатът на сървъра е подписан от неговия надежден корен сертификат. корен.crt сега трябва да бъде вградено във вашите приложения, написани на Java и всеки друг език за програмиране. За Java това трябва да се добави в неговия магазин за ключове.

Запазете корен.ключ на сигурно място за него може да се използва при създаване на бъдещи сертификати.

За удобство ще копираме сървъра и root сертификатите на мястото, където PostgreSQL съхранява основните си конфигурационни файлове. По този начин Postgres ще може да ги чете на същото място, където чете своите конфигурационни файлове. Местоположенията в CentOS са / var / lib / pgsql / 13 / data / за PostgreSQL 13, / var / lib / pgsql / 12 / data / за PostgreSQL 12 и / var / lib / pgsql / 11 / data / за PostgreSQL 11. В този пример ще използваме PostgreSQL 11.

sudo cp сървър.* корен.crt / var / lib / pgsql / 11 / data / ## За PostgreSQL 11

Стъпка 3: Конфигурирайте базата данни PostgreSQL, за да активирате SSL

Сега, когато разполагаме с нашите сертификати, нищо не ни отказва възможността да активираме SSL в нашия PostgreSQL сървър. В зависимост от версията на вашата база данни PostgreSQL, отворете нейния конфигурационен файл. Ще използваме версия 11 като пример тук. Потърсете свързаните с ssl редове, които са коментирани във файла, и ги коментирайте. Редовете са споделени по-долу.

$ sudo vim / var / lib / pgsql / 11 / data / postgresql.conf ssl = на ssl_ca_file = 'корен.crt 'ssl_cert_file =' сървър.crt 'ssl_key_file =' сървър.ключ 'ssl_ciphers =' ВСИЧКИ:!ADH:!НИСКО:!Годен до:!MD5: @STRENGTH 'ssl_prefer_server_ciphers = на ssl_ecdh_curve =' prime256v1 '

След като това приключи, трябва да активираме домакиниl запис в pg_hba.конф файл, който ще съответства на опитите за свързване, направени с помощта на TCP / IP, но само когато връзката е осъществена с SSL криптиране. Отворете файла и редактирайте както следва:

$ sudo vim / var / lib / pgsql / 11 / data / pg_hba.conf hostssl всички всички 10.38.87.40/32 md5 clientcert = verify-full hostssl всички всички 10.38.87.41/32 md5 clientcert = verify-full hostssl всички всички 10.38.87.42/32 md5 clientcert = verify-full hostssl всички всички 10.38.87.43/32 md5 clientcert = verify-full

За да продължим промените, които сме направили досега, трябва да рестартираме услугата PostreSQL по следния начин:

sudo systemctl рестартирайте postgresql-

Проверете дали SSL е активиран

За да сме сигурни, че настройките на SSL работят, ще влезем в базата данни и ще проверим съобщението, което тя ще ни представи. Можете да изпълните командата по-долу в сървъра или от друг сървър с psql инсталиран и разрешен за свързване към базата данни. Трябва да видите съобщение като споделеното по-долу и SSL трябва да бъде успешно активиран.

$ psql -U postgres -h 10.38.87.46 -d postgres Парола за потребителски postgres: psql (11.11) SSL връзка (протокол: TLSv1.2, шифър: ECDHE-RSA-AES256-GCM-SHA384, битове: 256, компресия: изключено) Въведете "помощ" за помощ. postgres = #

Стъпка 4: Конфигурирайте базата данни PostgreSQL, за да активирате SCRAM-SHA-256

Сега, когато SSL е активиран и работи както е конфигуриран, нека сега добавим още един слой защита, като активираме SCRAM-SHA-256 удостоверяване с парола. Това е много прост процес. Първо отворете основния конфигурационен файл на postgresql и променете реда по-долу, както е показано.

$ sudo vim / var / lib / pgsql / 11 / data / postgresql.conf password_encryption = scram-sha-256

След като приключим, трябва да принудим клиентите да удостоверяват чрез тази нова схема чрез редактиране pg_hba.конф файл, както е показано по-долу. Ще забележите, че всички случаи на md5 са заменени с scram-sha-256.

$ sudo vim / var / lib / pgsql / 11 / data / pg_hba.conf hostssl всички всички 10.38.87.40/32 scram-sha-256 clientcert = verify-full hostssl всички всички 10.38.87.41/32 scram-sha-256 clientcert = verify-full hostssl всички всички 10.38.87.42/32 scram-sha-256 clientcert = verify-full hostssl всички всички 10.38.87.43/32 scram-sha-256 clientcert = проверка-пълна

За да продължим промените, които сме направили досега, трябва да рестартираме услугата PostreSQL по следния начин:

sudo systemctl рестартирайте postgresql-11

След като тези промени бъдат направени, ще трябва да актуализираме пароли за всички потребители във вашата база данни, или няма да можете да влезете. За целта отворете вашата база данни, както следва. Трябва да имаш Судо права.

$ sudo su - postgres Последно влизане: Fri Feb 19 17:16:16 EAT 2021 on pts / 0 -bash-4.2 $ psql psql (11.11) Въведете "помощ" за помощ. postgres = #

След това изпълнете командата за парола по този начин, след това натиснете enter. Ще бъдете подканени да въведете паролата два пъти. Можете да въведете същата парола, която е била там преди. Сега ще бъде криптиран с помощта на новия scram-sha-256 схема.

postgres = # \ парола  Въведете нова парола: Въведете я отново: postgres = #

След като това стане, единствената оставаща стъпка е да добавите сертификати към клиентските приложения. За системи * nix можете да поставите клиентския сертификат под $ потребител.У дома/.postgresql / директория. Как да вградите клиентския сертификат в различни приложения, написани на различни езици, е извън обхвата на това ръководство. Пример за Java е предоставен в PostgreSQL JDBC документация

Когато осъществявате връзка с помощта на JDBC драйвер, низът за свързване трябва да отговаря на следния формат. Забележете ssl = вярно добавена опция.

jdbc: postgresql: //:/?ssl = true ## Например jdbc: postgresql: // datab.computingforgeeks.com: 5432 / all_cent_customers?ssl = вярно

Последни думи

Гарантирането, че вашата организация остава сигурна, трябва да остане основен приоритет, докато продължавате да администрирате и управлявате техните скъпи системи. Като пазител на тяхната инфраструктура, вие трябва да защитите, предотвратите и проактивно да се борите срещу всяка форма на уязвимост. Запечатайте ги колкото можете. Ние се надяваме, че ръководството е полезно и в случай, че имате допълнителни идеи, не се колебайте да ги посочите.

И накрая, ние сме много благодарни за посещението на сайта и продължаваме да оценяваме огромната подкрепа, която неуморно оказвате. Други ръководства, които може да ви харесат, включват:

SQLPad - уеб-базиран SQL редактор за MySQL / PostgreSQL / SQL Server

Най-добрите книги за Microsoft SQL Server

Най-добрите книги за изучаване на програмиране за ръжда

Нови проучвания показват, че излъчването на мобилен телефон не е толкова опасно, колкото някога се е мислило
Сега живеем в свят, в който сме информирани често за всички различни неща, които използваме от години, които сега са опасни за нас: глутен, кофеин, со...
Минен ботнет засегна 5000 потребители на Android само за 24 часа
Ако имате телефон с Android, може да искате да бъдете особено внимателни. Създател на зловреден софтуер е измислил изцяло нов начин за заразяване на у...
Apple HomePod Той може да чете текстовите ви съобщения на глас ... на всеки
Най-новото устройство на Apple, HomePod, вече имаше много удари срещу него и това беше всичко, преди дори да бъде пуснато за обществеността. Сега, ког...