"Ubuntu дээр Postgresql гаднаас хандалттай болгож PGAdmin-аар холбогдох"-ны өөр хувилбарууд

Дусал нэвтэрхий толь-с
30-р мөр: 30-р мөр:
  
 
3. Edit the file:
 
3. Edit the file:
 +
 
     vim /etc/postgresql/[version_number]/main/pg_hba.conf
 
     vim /etc/postgresql/[version_number]/main/pg_hba.conf
  
 
Append the following configuration lines to give access to 10.10.1.0/24 network:
 
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 тохируулах хэрэгтэй.
+
    host ''dbName dbUsername'' 10.10.1.0/24 md5
 +
 
 +
dbName, dbUsername хоёрын оронд "хандах баазын нэр" ба "хэрэглэгчийн нэрийг" оруулна. Бас энэ host гэсэн тохиргоо нь plain холболт тул секюрити эрсдэлтэй тул SSL тохируулах хэрэгтэй.
 
Эхний ээлжинд туршиж холбож үзээд доор байгаа заавраар SSL тохируулаарай. Тэгээд host > hostssl гэж солих хэрэгтэй.
 
Эхний ээлжинд туршиж холбож үзээд доор байгаа заавраар SSL тохируулаарай. Тэгээд host > hostssl гэж солих хэрэгтэй.
  
104-р мөр: 106-р мөр:
 
     cd /var/lib/postgresql/[version_number]/main
 
     cd /var/lib/postgresql/[version_number]/main
  
2. Generate a private key by entering a pass phrase:
+
a) Create a Certificate Signing Request (CN=X.X.X.X) CNs are important!!! IP or Domain if there is. -days 3650 шаардлагатай бол өөрчлөөрэй. CompanyName, DepartmentName, example@example.com, X.X.X.X зэрэг утгуудын оронд өөрийн тохирох утгаа оруулна.
 
 
    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
+
     umask u=rw,go= && openssl req -days 3650 -new -text -nodes -subj '/C=MN/ST=Ulaanbaatar/L=Ulaanbaatar/O=CompanyName/OU=DepartmentName/emailAddress=example@example.com/CN=X.X.X.X' -keyout server.key -out server.csr
  
4. Run the following command to remove group and other’s permission from the private key file:
+
Generate self-signed certificate
  
     chmod og-rwx server.key
+
     umask u=rw,go= && openssl req -days 3650 -x509 -text -in server.csr -key server.key -out server.crt
  
5. Run the following command to create a self-signed certificate:
+
Also make the server certificate to be the root-CA certificate
  
     openssl req -new -key server.key -days 3650 -out server.crt -x509
+
     umask u=rw,go= && cp server.crt root.crt
  
    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.
+
Remove the now-redundant CSR
  
Output:
+
    rm server.csr
  
Country Name (2 letter code) [XX]: MN
+
Generate client certificates to be used by clients/connections
State or Province Name (full name) []: Ulaanbaatar
+
Create a Certificate Signing Request (CN=dbUsername гэдэг дээр өгөгдлийн баазын хэрэглэгчийн нэр) -days 3650 шаардлагатай бол өөрчлөөрэй. CompanyName, DepartmentName, example@example.com, dbUsername зэрэг утгуудын оронд өөрийн тохирох утгаа оруулна.
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:
+
    umask u=rw,go= && openssl req -days 3650 -new -nodes -subj '/C=MN/ST=Ulaanbaatar/L=Ulaanbaatar/O=CompanyName/OU=DepartmentName/emailAddress=example@example.com/CN=dbUsername' -keyout client.key -out client.csr
  
    cp server.crt root.crt
+
Create a signed certificate for the client using our root certificate
  
 +
    umask u=rw,go= && openssl x509 -days 3650 -req  -CAcreateserial -in client.csr -CA root.crt -CAkey server.key -out client.crt
  
==== Edit posgresql config files ====
+
Remove the now-redundant CSR
  
Prepare PostgreSQL standalone for SSL authentication:
+
    rm client.csr
  
To prepare the Postgres server for SSL authentication, run the following steps:
+
Ингээд root.crt, client.crt, client.key файлуудыг хуулж авна. Эдгээр файлуудыг дараа нь холбогдохдоо ашиглана. Эдгээр файлуудаа мэдээж маш сайн нууцлах шаардлагатай ба ил задгай дамжуулж болохгүй.
  
* Edit the postgresql.conf file to activate SSL:
 
  
    vim postgresql.conf
+
Ингээд postgresql.conf файлд доорх тохиргоог хийнэ
 
 
Uncomment and change the following parameters:
 
  
 
<pre>
 
<pre>
ssl = on
+
ssl = on
ssl_cert_file = 'server.crt'
+
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
+
ssl_key_file = 'server.key'
ssl_prefer_server_ciphers = on
+
ssl_ca_file = 'root.crt'
 
</pre>
 
</pre>
  
 
===== Enforcing SSL/TLS =====
 
===== Enforcing SSL/TLS =====
  
pg_hba.conf файлд доорх мөрүүдийг нэмнэ. 10.10.1.0-255 IP-аас хандах боломжтой тохируулах үед доорх байдлаар:
+
pg_hba.conf файлд доорх мөрүүдийг нэмнэ:
  
 
<pre>
 
<pre>
165-р мөр: 156-р мөр:
  
 
<pre>
 
<pre>
hostssl    database     user   10.10.1.0/24  md5
+
#10.10.1.0-255 IP-аас хандах боломжтой тохируулах үед доорх байдлаар:
 +
hostssl    dbName     dbUsername   10.10.1.0/24  md5 clientcert=1
 
hostnossl all            all            10.10.1.0/24    reject
 
hostnossl all            all            10.10.1.0/24    reject
 
</pre>
 
</pre>
  
OR зөвхөн 1 IP-аас хандахаар тохируулах үед
+
OR  
  
 
<pre>
 
<pre>
hostssl    database     user   10.10.1.115/32  md5
+
#зөвхөн 1 IP-аас хандахаар тохируулах үед
 +
hostssl    dbName     dbUsername   10.10.1.115/32  md5 clientcert=1
 
hostnossl all            all            10.10.1.0/24    reject
 
hostnossl all            all            10.10.1.0/24    reject
 
</pre>
 
</pre>
 +
 +
dbName, dbUsername хоёрын оронд "хандах баазын нэр" ба "хэрэглэгчийн нэрийг" оруулна. Энэ зааврын дээд хэсэгт дурдсан дагуу host гээд plain холболтоор холбох боломжтой төстэй мөрийг өмнө нь оруулсан бол тэр мөрөө хасах хэрэгтэй.
  
  
184-р мөр: 179-р мөр:
 
==== Test the Connection ====
 
==== 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.
+
Connect to the database from another machine with the PostgreSQL client installed. Replace dbName, X.X.X.X, dbUsername values with yours.
  
     psql -d "dbname=DatabaseName sslmode=require" -h 10.10.1.55 -U databaseUsername
+
     psql "host=X.X.X.X dbname=dbName user=dbUsername sslmode=verify-ca sslcert=client.crt sslkey=client.key sslrootcert=root.crt"
  
 
You should see the PostgreSQL prompt.
 
You should see the PostgreSQL prompt.
203-р мөр: 198-р мөр:
 
     postgres=# \q
 
     postgres=# \q
  
 +
Харин pgAdmin 4-с холбогдохдоо SSL tab дээр 3 файлаа тохируулж өгнө.
  
  
 
[[Ангилал:Сисадмин]]
 
[[Ангилал:Сисадмин]]

00:59, 2 Арваннэгдүгээр сар 2022-ий байдлаарх засвар

Эрх авах

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 dbName dbUsername 10.10.1.0/24 md5

dbName, dbUsername хоёрын оронд "хандах баазын нэр" ба "хэрэглэгчийн нэрийг" оруулна. Бас энэ 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

a) Create a Certificate Signing Request (CN=X.X.X.X) CNs are important!!! IP or Domain if there is. -days 3650 шаардлагатай бол өөрчлөөрэй. CompanyName, DepartmentName, example@example.com, X.X.X.X зэрэг утгуудын оронд өөрийн тохирох утгаа оруулна.

   umask u=rw,go= && openssl req -days 3650 -new -text -nodes -subj '/C=MN/ST=Ulaanbaatar/L=Ulaanbaatar/O=CompanyName/OU=DepartmentName/emailAddress=example@example.com/CN=X.X.X.X' -keyout server.key -out server.csr

Generate self-signed certificate

   umask u=rw,go= && openssl req -days 3650 -x509 -text -in server.csr -key server.key -out server.crt

Also make the server certificate to be the root-CA certificate

   umask u=rw,go= && cp server.crt root.crt

Remove the now-redundant CSR

   rm server.csr

Generate client certificates to be used by clients/connections Create a Certificate Signing Request (CN=dbUsername гэдэг дээр өгөгдлийн баазын хэрэглэгчийн нэр) -days 3650 шаардлагатай бол өөрчлөөрэй. CompanyName, DepartmentName, example@example.com, dbUsername зэрэг утгуудын оронд өөрийн тохирох утгаа оруулна.

   umask u=rw,go= && openssl req -days 3650 -new -nodes -subj '/C=MN/ST=Ulaanbaatar/L=Ulaanbaatar/O=CompanyName/OU=DepartmentName/emailAddress=example@example.com/CN=dbUsername' -keyout client.key -out client.csr

Create a signed certificate for the client using our root certificate

   umask u=rw,go= && openssl x509 -days 3650 -req  -CAcreateserial -in client.csr -CA root.crt -CAkey server.key -out client.crt

Remove the now-redundant CSR

   rm client.csr

Ингээд root.crt, client.crt, client.key файлуудыг хуулж авна. Эдгээр файлуудыг дараа нь холбогдохдоо ашиглана. Эдгээр файлуудаа мэдээж маш сайн нууцлах шаардлагатай ба ил задгай дамжуулж болохгүй.


Ингээд postgresql.conf файлд доорх тохиргоог хийнэ

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

pg_hba.conf файлд доорх мөрүүдийг нэмнэ:

vim pg_hba.conf:
<pre>

<pre>
#10.10.1.0-255 IP-аас хандах боломжтой тохируулах үед доорх байдлаар:
hostssl    dbName     dbUsername    10.10.1.0/24   md5 clientcert=1
hostnossl all            all             10.10.1.0/24     reject

OR

#зөвхөн 1 IP-аас хандахаар тохируулах үед
hostssl    dbName     dbUsername    10.10.1.115/32   md5 clientcert=1
hostnossl all            all             10.10.1.0/24    reject

dbName, dbUsername хоёрын оронд "хандах баазын нэр" ба "хэрэглэгчийн нэрийг" оруулна. Энэ зааврын дээд хэсэгт дурдсан дагуу host гээд plain холболтоор холбох боломжтой төстэй мөрийг өмнө нь оруулсан бол тэр мөрөө хасах хэрэгтэй.


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

   systemctl restart postgresql


Test the Connection

Connect to the database from another machine with the PostgreSQL client installed. Replace dbName, X.X.X.X, dbUsername values with yours.

   psql "host=X.X.X.X dbname=dbName user=dbUsername sslmode=verify-ca sslcert=client.crt sslkey=client.key sslrootcert=root.crt"

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

Харин pgAdmin 4-с холбогдохдоо SSL tab дээр 3 файлаа тохируулж өгнө.