Ubuntu дээр Postgresql гаднаас хандалттай болгож PGAdmin-аар холбогдох

Дусал нэвтэрхий толь-с
17:22, 31 Аравдугаар сар 2022-ий байдлаарх Almas (Яриа | оруулсан хувь нэмэр) хэрэглэгчийн хийсэн залруулга

Эрх авах

1. Login as postgres user using su / sudo command, enter:

   sudo su
   su - postgres


postgresql тохиргоо 1

2. Edit the file:

   vim /etc/postgresql/[version_number]/main/postgresql.conf

Find configuration line that read as follows:

   listen_addresses='localhost'

Дээрх мөрийг комэнт аут хийгээд доорхыг оронд нь нэмнэ. Энэ нь бүх хаягнаас хандах боломжийг нээнэ:

   listen_addresses='*'

OR

Болж өгвөл * биш яг хандах IP хаягнуудаа таслалаар зааглан оруулах нь дээр

   listen_addresses = '10.10.1.105,127.0.0.1,localhost'


postgresql тохиргоо 2

3. Edit the file:

   vim /etc/postgresql/[version_number]/main/pg_hba.conf

Append the following configuration lines to give access to 10.10.1.0/24 network:

   host database user 10.10.1.0/24 md5

database, user хоёрын оронд "хандах баазын нэр" ба "хэрэглэгчийн нэрийг" оруулна. Бас энэ host гэсэн тохиргоо нь plain холболт тул секюрити эрсдэлтэй тул SSL тохируулах хэрэгтэй. Эхний ээлжинд туршиж холбож үзээд доор байгаа заавраар SSL тохируулаарай. Тэгээд host > hostssl гэж солих хэрэгтэй.

postgresql дахин ачааллах

4. Ингээд postgresql дээрх тохиргоо болно.

   systemctl restart postgresql

Firewall дээр порт нээх

5. ufw дээр порт нээж өгөх.

   ufw allow 5432

OR

   ufw allow from 10.10.1.0/24 to any port 5432

OR

   ufw allow from 10.10.1.105 to any port 5432


Аль болох IP зааж өгвөл аюулгүй байдлын хувьд илүү. Мөн түр нээгээд хаах бол:

   ufw status numbered

тушаалаар харж байгаад урд талын дугаараар нь жишээ нь 5 дахь дүрмийг устгах бол:

   ufw delete 5

гэх мэт буцааж арилгана.

Ингээд хандах боломжтой болно.

pgAdmin 4-с хандах

6. pgAdmin 4-с хандахдаа:

Servers баруун дараа Register > Server...

Нээгдсэн цонхонд Name дээр ямар нэгэн нэр оруулаад Connection tab дээр тохиргоо хийнэ:

  • Hostname
  • Port
  • Username
  • Password

утгуудыг тохируулаад холбогдоход холбогдох ёстой.

postgresql SSL тохируулах

7. SSL тохируулах

(Эх сурвалж: https://blog.francium.tech/enabling-ssl-on-postgresql-2929bb4dca8f)

Generate SSL Certificates for PostgreSQL server

Follow these steps to generate server certificate, trusted root certificate, and private key for the Postgres server.

  • Login as the postgres user and change the directory to the data directory:
   sudo su
   su - postgres
   cd /var/lib/postgresql/[version_number]/main

2. Generate a private key by entering a pass phrase:

   openssl genrsa -des3 -out server.key 1024

3. Remove the pass phrase to automatically start up the server using the following command:

   openssl rsa -in server.key -out server.key

4. Run the following command to remove group and other’s permission from the private key file:

   chmod og-rwx server.key

5. Run the following command to create a self-signed certificate:

   openssl req -new -key server.key -days 3650 -out server.crt -x509
   Note: You will be asked to enter information that will be incorporated into your certificate request. For some fields, there will be a default value. If you enter ‘.’, the field will be left blank.

Output:

Country Name (2 letter code) [XX]: MN State or Province Name (full name) []: Ulaanbaatar Locality Name (eg, city) [Default City]: Ulaanbaatar Organization Name (eg, company) [Default Company Ltd]: Компанийнхаа нэрийг Organizational Unit Name (eg, section) []: Тасаг хэлтсийн нэрийг Common Name (eg, your name or your server's hostname) []: domain.tld Email Address []: email@domain.tld

6. For self-signed certificates, use the server certificate as the trusted root certificate:

   cp server.crt root.crt


Edit posgresql config files

Prepare PostgreSQL standalone for SSL authentication:

To prepare the Postgres server for SSL authentication, run the following steps:

  • Edit the postgresql.conf file to activate SSL:
   vim postgresql.conf

Uncomment and change the following parameters:

ssl = on  
ssl_cert_file = 'server.crt'  
ssl_key_file = 'server.key'  
ssl_prefer_server_ciphers = on
Enforcing SSL/TLS

pg_hba.conf файлд доорх мөрүүдийг нэмнэ. 10.10.1.0-255 IP-аас хандах боломжтой тохируулах үед доорх байдлаар:

vim pg_hba.conf:
<pre>

<pre>
hostssl    database     user    10.10.1.0/24   md5
hostnossl all            all             10.10.1.0/24     reject

OR зөвхөн 1 IP-аас хандахаар тохируулах үед

hostssl    database     user    10.10.1.115/32   md5
hostnossl all            all             10.10.1.0/24    reject


postgresql дахин ачааллаж тохиргоог идэвхжүүлэх

   systemctl restart postgresql


Test the Connection

Connect to the database from another machine with the PostgreSQL client installed. Replace DatabaseName, 10.10.1.55, databaseUsername values with yours.

   psql -d "dbname=DatabaseName sslmode=require" -h 10.10.1.55 -U databaseUsername

You should see the PostgreSQL prompt.

   Password for user postgres:
   psql (12.8 (Ubuntu 12.8-0ubuntu0.20.04.1))
   SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
   Type "help" for help.


   postgres=#


Type \Q to exit the PostgreSQL client.

   postgres=# \q