Kihagyás

Telepítés

Megjegyzés

Emlékeztetőül: Debian rendszerű számítógépeken a root felhasználóra a következő paranccsal kell váltani:

1
su -

Az ezen az oldalon található utasításokat a PostgreSQL-fürt összes csomópontjának telepítésekor követni kell.

Rendszerbeállítások

Csatlakozás a számítógéphez

A virtuális berendezéseken alapértelmezés szerint két fiók található: egy felhasználói fiók és egy szuperfelhasználói fiók.

  • Felhasználói fiók
    • Bejelentkezési név: systancia
    • Jelszó: systnci
  • Szuperfelhasználói fiók
    • Bejelentkezési név: root
    • Jelszó: systnci

Csatlakozzon a számítógéphez konzolmódban.

Megjegyzés

Az alapértelmezett billentyűzetkiosztás QWERTY.

A billentyűzetkiosztás módosítása

A billentyűzetkiosztás a következő parancssorral módosítható:

1
dpkg-reconfigure keyboard-configuration

Megjelenik egy menü, amelyben másik billentyűzetkiosztást választhat.

Ezután a következő parancssorral alkalmazza és mentse a beállításokat:

1
setupcon -k --save

A beállítások a parancs végrehajtása után azonnal érvénybe lépnek.

A hálózat konfigurálása

Előfordulhat, hogy a virtuális berendezés indításkor a következő okok miatt nem kap hálózati konfigurációt:

  • A hálózati csatoló neve nem ens192: az appliance DHCP-re van konfigurálva, de kizárólag az ens192 csatolón
  • Nem érhető el DHCP-kiszolgáló

A hálózati csatoló nevének, állapotának és a hozzárendelt IP-címeknek az ellenőrzéséhez futtassa a következő parancsot root felhasználóként:

1
ip -br a | grep -ve "^lo"
Példa

A parancs végrehajtása után a következő válasz jelenik meg:

1
ens192      UP      10.100.0.51/24

A példában a hálózati csatoló neve ens192, a csatoló aktív, és az IP-címe 10.100.0.51/24.

Ha a név eltér az ens192 névtől, vagy a parancs nem ad vissza hálózati beállításokat, a hálózatot manuálisan kell konfigurálnia a következő parancsokkal:

1
2
ip address add IP_ADDRESS/SUBNET dev DEV_NAME
ip route add default via GATEWAY

Cserélje le a következőket:

  • IP_ADDRESS helyére a számítógép IP-címét
  • SUBNET helyére az alhálózatot
  • DEV_NAME helyére a korábban lekérdezett hálózati csatoló nevét
  • GATEWAY helyére a hálózati átjárót
Példa

A PostgreSQL-csomópont következő adatokkal történő konfigurálásához:

  • IP-cím: 10.100.0.51
  • Alhálózat: /24 vagy 255.255.255.0
  • Hálózati csatoló neve: eth0
  • Hálózati átjáró: 10.100.0.254

A parancsok a következők:

1
2
ip address add 10.100.0.51/24 dev eth0
ip route add default via 10.100.0.254

Megjegyzés

Ez a hálózati konfiguráció ideiglenes, ezért a kiszolgáló bármilyen újraindítása visszaállítja az ip address és ip route parancsokkal végzett manuális beállításokat.
A végleges konfigurációt a PostgreSQL-fürt konfigurációs segédprogramja végzi el.

Ennek a hálózati konfigurációnak köszönhetően azonban most már SSH-n keresztül hozzáférhet a PostgreSQL-csomóponthoz.

Az időzóna módosítása

A virtuális berendezés alapértelmezés szerint az Europe/Paris időzónára van beállítva.

Az időzóna módosításához először kérje le az elérhető időzónák írásmódját a következő paranccsal:

1
timedatectl list-timezones

Ezután használja a következő parancssort:

1
timedatectl set-timezone your_time_zone
Példa

Az időzóna Londonra állításához a következő parancsot kell végrehajtani:

1
timedatectl set-timezone Europe/London

Ellenőrizze a kiszolgáló időzónáját a következő parancssorral:

1
timedatectl

NTP-időkiszolgáló konfigurálása

Veszély

Erősen ajánlott egy időkiszolgálót konfigurálni a rendszeróra naprakészen tartásához: a PostgreSQL-csomópontok közötti bármilyen időeltérés instabilitást okozhat, sőt a fürt leállását is eredményezheti.

A szükséges lépéseket az NTP-konfigurációról szóló oldal ismerteti (a konfiguráció megegyezik a CyberElements Bastion Mediation Controller kiszolgálókéval).

PKI létrehozása a PostgreSQL-csomópontok tanúsítványainak előállításához

Információ

Ez a fejezet nem kötelező, ha már rendelkezik olyan PKI-val, amellyel elő tudta állítani az előfeltételekben megadott tanúsítványokat.
Ez a fejezet bemutatja a PKI és a PostgreSQL-fürthöz szükséges tanúsítványok létrehozásának különböző lépéseit. Vegye figyelembe, hogy a megújításukat nem ismertetjük, mivel egy tanúsítvány megújítása annak újbóli létrehozását jelenti.

A lépés kihagyása

Figyelem!

A leírt eljárást egy Debian 12 rendszerű számítógépen ellenőriztük az openssl csomaggal. Az eljárást azonban bármely olyan számítógépen el lehet végezni, amelyen az OpenSSL egy friss verziója fut (az ellenőrzött verzió a 3.0.17). Kivételt képez a Windows és a MacOS, ahol a rendszerparancsokat módosítani kell.

Változók és testreszabások meghatározása

Ez a fejezet különböző parancsokat és konfigurációs fájlokat tartalmaz, amelyek módosítható változókat használnak.
Az alábbi táblázat összefoglalja az összes értéket, és lehetővé teszi azok megadását, hogy közvetlenül az ezen az oldalon megjelenített parancsokban módosíthassa őket.

Érték Változó Definíció
PSQL_IP A PostgreSQL-fürt virtuális IP-címe.
PSQL_NAME A PostgreSQL-fürt virtuális IP-címéhez társított rövid név (nem az FQDN).
PSQL_1_IP A PostgreSQL-fürt 1. számú csomópontjának IP-címe.
PSQL_1_NAME A PostgreSQL-fürt 1. számú csomópontjának rövid neve (nem az FQDN).
PSQL_2_IP A PostgreSQL-fürt 2. számú csomópontjának IP-címe.
PSQL_2_NAME A PostgreSQL-fürt 2. számú csomópontjának rövid neve (nem az FQDN).
PSQL_3_IP A PostgreSQL-fürt 3. számú csomópontjának IP-címe.
PSQL_3_NAME A PostgreSQL-fürt 3. számú csomópontjának rövid neve (nem az FQDN).
CA_ROOT_NAME A PKI legfelső szintű hitelesítésszolgáltatójához (CA) rendelt név.

Előkészítés

A következő műveleteket egy új könyvtárban kell végrehajtani, hogy az összes új fájl egyetlen könyvtárban legyen. Bármely könyvtár használható, de a hozzáférést a lehető legszigorúbban korlátozni kell. Jelentkezzen be az 1. számú PostgreSQL-csomópontra root felhasználóként, és futtassa a következő parancsokat:

1
2
3
mkdir /root/psql-certificates/
chmod 600 /root/psql-certificates/
cd /root/psql-certificates/

A legfelső szintű hitelesítésszolgáltató létrehozása

Futtassa a következő parancsot egy új legfelső szintű CA létrehozásához. A rendszer a CA védelmére szolgáló jelszót fog kérni:

1
openssl req -x509 -newkey rsa:4096 -days 3650 -sha512 -keyout CA_ROOT_NAME.key -out CA_ROOT_NAME.crt -subj "/CN=CA_ROOT_NAME" -extensions v3_ca -addext "subjectKeyIdentifier=hash" -addext "authorityKeyIdentifier=keyid:always,issuer:always" -addext "basicConstraints=critical,CA:true" -addext "keyUsage=critical,digitalSignature,cRLSign,keyCertSign"

Cserélje le a CA_ROOT_NAME változót a legfelső szintű CA nevére, ha nem itt szabta testre.

Tanúsítványok létrehozása

A PostgreSQL-csomópontok tanúsítványainak előállításához szükséges parancsok a következők:

1
2
3
openssl genrsa -out PSQL_1_NAME.key 4096
openssl req -new -key PSQL_1_NAME.key -out PSQL_1_NAME.csr -subj "/CN=PSQL_1_NAME"
openssl x509 -req -in PSQL_1_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_1_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_1_NAME,IP:PSQL_IP,IP:PSQL_1_IP")

Cserélje le a CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_1_IP és PSQL_1_NAME változókat, ha nem itt szabta testre őket.

1
2
3
openssl genrsa -out PSQL_2_NAME.key 4096
openssl req -new -key PSQL_2_NAME.key -out PSQL_2_NAME.csr -subj "/CN=PSQL_2_NAME"
openssl x509 -req -in PSQL_2_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_2_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_2_NAME,IP:PSQL_IP,IP:PSQL_2_IP")

Cserélje le a CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_2_IP és PSQL_2_NAME változókat, ha nem itt szabta testre őket.

1
2
3
openssl genrsa -out PSQL_3_NAME.key 4096
openssl req -new -key PSQL_3_NAME.key -out PSQL_3_NAME.csr -subj "/CN=PSQL_3_NAME"
openssl x509 -req -in PSQL_3_NAME.csr -CA CA_ROOT_NAME.crt -CAkey CA_ROOT_NAME.key -CAcreateserial -out PSQL_3_NAME.crt -days 1825 -sha512 -extfile <(printf "subjectKeyIdentifier=hash\nauthorityKeyIdentifier=keyid,issuer\nbasicConstraints=critical,CA:FALSE\nkeyUsage=critical,digitalSignature\nextendedKeyUsage=serverAuth,clientAuth\nsubjectAltName=DNS:PSQL_NAME,DNS:PSQL_3_NAME,IP:PSQL_IP,IP:PSQL_3_IP")

Cserélje le a CA_ROOT_NAME, PSQL_IP, PSQL_NAME, PSQL_3_IP és PSQL_3_NAME változókat, ha nem itt szabta testre őket.

Az első parancs új kulcsot hoz létre, a második egy tanúsítvány-aláírási kérelmet tartalmazó CSR fájlt állít elő, a harmadik pedig magát a tanúsítványt hozza létre.

A tanúsítványt még P12 formátumba kell konvertálni, ehhez jelszót kell megadnia:

1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_1_NAME.key -in PSQL_1_NAME.crt -out PSQL_1_NAME.p12
1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_2_NAME.key -in PSQL_2_NAME.crt -out PSQL_2_NAME.p12
1
openssl pkcs12 -chain -CAfile CA_ROOT_NAME.crt -export -inkey PSQL_3_NAME.key -in PSQL_3_NAME.crt -out PSQL_3_NAME.p12

A PostgreSQL-fürt telepítéséhez szükséges fájlok itt találhatók (cserélje le a CA_ROOT_NAME, PSQL_1_NAME, PSQL_2_NAME és PSQL_3_NAME változókat a korábban kiválasztott értékekre):

  • /root/psql-certificates/CA_ROOT_NAME.crt: a legfelső szintű CA tanúsítványa
  • /root/psql-certificates/PSQL_1_NAME.p12: az 1. számú PostgreSQL-csomópont tanúsítványa
  • /root/psql-certificates/PSQL_2_NAME.p12: a 2. számú PostgreSQL-csomópont tanúsítványa
  • /root/psql-certificates/PSQL_3_NAME.p12: a 3. számú PostgreSQL-csomópont tanúsítványa

PostgreSQL-fürt telepítése

Információ

A következő lépéseket mindhárom PostgreSQL-csomóponton el kell végezni.

A PostgreSQL-fürt konfigurálásának előkészítése

SFTP- vagy SCP-kapcsolatot kell létesíteni, hogy a következőket elküldje az appliance-re:

  • Annak a hitelesítésszolgáltatónak a tanúsítványa, amely a PostgreSQL-csomópontok tanúsítványait aláírta
  • A PostgreSQL-csomópont P12 formátumú tanúsítványa

Vegye figyelembe, hogy SFTP- vagy SCP-kapcsolat nem kezdeményezhető a root fiókkal. Emellett a fájlok egyszerűen elhelyezhetők a /home/systancia/ könyvtárban.

Ezeket a fájlokat át kell helyezni egy új könyvtárba:

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_?_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/ROOT_CA_NAME.crt /etc/ssl/certs/cleanroom/

Cserélje le a következőket:

  • PSQL_?_NAME helyére a telepítés alatt álló PostgreSQL-csomóponthoz szánt tanúsítvány nevét
  • ROOT_CA_NAME helyére a legfelső szintű hitelesítésszolgáltató tanúsítványának nevét
1
2
3
mkdir /etc/ssl/certs/cleanroom/
cp /root/psql-certificates/PSQL_1_NAME.p12 /etc/ssl/certs/cleanroom/
cp /root/psql-certificates/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

A fenti parancsoknak a testreszabási beállítások szerint testreszabottnak kell lenniük.

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_2_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

A fenti parancsoknak a testreszabási beállítások szerint testreszabottnak kell lenniük.

1
2
3
mkdir /etc/ssl/certs/cleanroom/
mv /home/systancia/PSQL_3_NAME.p12 /etc/ssl/certs/cleanroom/
mv /home/systancia/CA_ROOT_NAME.crt /etc/ssl/certs/cleanroom/

A fenti parancsoknak a testreszabási beállítások szerint testreszabottnak kell lenniük.

A PostgreSQL-csomópont konfigurálása

A csomópont konfigurációjának inicializálásához a következő parancsokat kell végrehajtani:

1
2
cd /etc/ssl/certs/cleanroom/
ConfigureSystanciaVault.py

A második parancs elindít egy segédprogramot, amely a következő adatokat kéri:

  1. Új jelszavak a root és a systancia helyi felhasználóhoz
  2. A PostgreSQL-csomópont neve (nem az FQDN)
  3. A PostgreSQL-csomópont IP-címe, a hálózati csatolójának neve, a használandó alapértelmezett hálózati átjáró, valamint a DNS-kiszolgálók és a DNS-utótag
  4. A PostgreSQL verziója; a 15-ös verzió használatát javasoljuk
  5. A PostgreSQL-fürt hozzáférési portja; az 5432-es port használatát javasoljuk
  6. A replikációhoz és a pg_rewind eszközhöz használt PostgreSQL-fiók jelszava
  7. Egy második PostgreSQL-csomópont neve és IP-címe
  8. Az utolsó PostgreSQL-csomópont neve és IP-címe
  9. A PostgreSQL-fürt virtuális IP-címe
  10. A CyberElements Bastion Edge Gateway komponensek vagy bármely más, a fürthöz csatlakozni kívánó számítógép IP-címei (vesszővel elválasztva)
  11. A PostgreSQL-felhasználói fiók neve és jelszava
  12. A PostgreSQL-csomópontokhoz SSH-n keresztüli csatlakozásra engedélyezett IP-címek vagy hálózatok (vesszővel elválasztva)
  13. A PostgreSQL-csomópont tanúsítványadatai (a csomópont P12 formátumú tanúsítványa + a legfelső szintű CA tanúsítványa)

Az adatok megadása után a jóváhagyás előtt megjelenik az összes bevitt adat összefoglalása.
A megadott adatok megerősítése után megjelenik egy üzenet az /etc/ssh/sshd_config fájl módosításairól. Válassza az alapértelmezett lehetőséget: keep the local version currently installed.

A konfiguráció alkalmazásához újraindítás szükséges:

1
reboot
Tipp a 2. és 3. számú PostgreSQL-csomópont telepítésének felgyorsításához

Az 1. számú PostgreSQL-csomópont telepítése után a beállításához használt konfigurációs beállításokat az /etc/cleanroom-vault.ini fájlból kérheti le.

Példa az /etc/cleanroom-vault.ini fájlra

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[local]
name = PSQL-1
ip = 172.16.10.51

[cluster]
server1 = PSQL-2,172.16.10.52
server2 = PSQL-3,172.16.10.53

[ssl]
ca = MY-ROOT-CA.crt
client_cert = /etc/cleanroomvault.crt
client_key = /etc/cleanroomvault.key
peer_cert = /etc/cleanroomvault.crt
peer_key = /etc/cleanroomvault.key

[postgresql]
port = 5432
cluster = cleanroomvault5
version = 15

[patroni]
api_port = 8008
replication_password = R3pl1cationP@SSw0rd
rewind_password = Rew1ndP@SSw0rd

[vip]
interface = ens192
ip = 172.16.10.50

[cleanroom]
gw_ips = 172.16.10.10, 172.16.10.11
db_user = DbUser
db_password = DbP@SSw0rd

[networking]
interface = ens192
ip = 172.16.10.51/24
gateway = 172.16.10.254
dns = 172.16.10.100
dnssuffix = domain.local

[ssh]
allow = 10.0.20.0/24

Egyszerűen módosítsa a kiemelt sorokat a telepítés alatt álló PostgreSQL-csomópont értékeivel, az 1. számú PostgreSQL-csomópontról lekért fájl alapján.

Veszély

Ha a példafájlt használja fel újra, az alábbi kiemelt értékek mindegyikét a saját környezetének megfelelően kell módosítania:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
[local]
name = PSQL-1
ip = 172.16.10.51

[cluster]
server1 = PSQL-2,172.16.10.52
server2 = PSQL-3,172.16.10.53

[ssl]
ca = MY-ROOT-CA.crt
client_cert = /etc/cleanroomvault.crt
client_key = /etc/cleanroomvault.key
peer_cert = /etc/cleanroomvault.crt
peer_key = /etc/cleanroomvault.key

[postgresql]
port = 5432
cluster = cleanroomvault5
version = 15

[patroni]
api_port = 8008
replication_password = R3pl1cationP@SSw0rd
rewind_password = Rew1ndP@SSw0rd

[vip]
interface = ens192
ip = 172.16.10.50

[cleanroom]
gw_ips = 172.16.10.10, 172.16.10.11
db_user = DbUser
db_password = DbP@SSw0rd

[networking]
interface = ens192
ip = 172.16.10.51/24
gateway = 172.16.10.254
dns = 172.16.10.100
dnssuffix = domain.local

[ssh]
allow = 10.0.20.0/24

Miután az összes PostgreSQL-csomópont telepítve lett, törölje az /etc/cleanroom-vault.ini fájlt minden csomópontról, mivel az a konfiguráció során megadott jelszavakat egyszerű szövegként tartalmazza:

1
rm /etc/cleanroom-vault.ini

További konfigurációk a patronictl eszközhöz

Ahhoz, hogy a PostgreSQL-fürt felügyeleti parancsai a patronictl eszközzel használhatók legyenek, még néhány parancsot futtatni kell root felhasználóként a PostgreSQL-csomóponton:

1
2
3
4
sed -i "s/2380/2380, 8008/g" /etc/nftables.conf
systemctl reload nftables
cp /etc/patroni/ca.crt /usr/local/share/ca-certificates/PSQL-CA.crt
update-ca-certificates

További konfigurációk az etcd szolgáltatáshoz

Az etcd adatbázis automatikus tömörítésének és töredezettségmentesítésének bekapcsolásához futtassa a következő parancsokat root felhasználóként a PostgreSQL-csomóponton:

1
2
3
4
5
6
7
apt update
apt install etcd-client
echo -e 'ETCD_AUTO_COMPACTION_MODE="periodic"\nETCD_AUTO_COMPACTION_RETENTION="1"' >> /etc/default/etcd
systemctl restart etcd
echo -e '#!/bin/bash\n\nsource /etc/default/etcd\netcdctl --endpoints=${ETCD_ADVERTISE_CLIENT_URLS}  --cert=${ETCD_CERT_FILE} --key=${ETCD_KEY_FILE} "$@"' > /usr/bin/clr_etcdctl
chmod a+x /usr/bin/clr_etcdctl
echo '0 3 * * * root clr_etcdctl defrag' > /etc/cron.d/systancia-db

A CyberElements Bastion telepítéséhez szükséges default adatbázis létrehozása

A CyberElements Bastion telepítésekor először létre kell hoznia egy default nevű adatbázist.
Ehhez töltse ki a következő táblázatot, hogy testreszabja azt a parancsot, amelyet a PostgreSQL-fürt bármelyik csomópontjáról futtatnia kell:

Érték Változó Definíció
PSQL_VIP A PostgreSQL-fürt virtuális IP-címe.
DB_USER A PostgreSQL-csomópont konfigurálásakor megadott adatbázis-felhasználónév

A PostgreSQL-fürt bármelyik csomópontjáról végrehajtandó parancs:

1
createdb -h PSQL_VIP -U DB_USER default