Asenna PostgreSQL CentOSiin turvallisella etäkäytöllä


Julkaistu:

Päivitetty:


Artikkelit › Asenna PostgreSQL CentOSiin turvallisella etäkäytöllä

Tilanne vuonna 2026 ja turvallinen käyttö

Johtopäätös: Asenna tuettu PostgreSQL-julkaisu, alusta aiottu klusteri, kuuntele vain vaadittuja liitäntöjä ja myönnä käyttöoikeus tiedostossa pg_hba.conf tietyille tietokantoille, rooleille ja luotettaville verkoille. Käytä SCRAM-salasanatodennusta ja TLS:ää, kun salasanat ylittävät verkon.

Mitä opit

  • Miten pakettilähde, tietohakemisto, alustus, systemd, kuunteluliittimet ja asiakkaan todennus toimivat vuorovaikutuksessa.
  • Miksi listen_addresses='*' plus host all all 0.0.0.0/0 md5 paljastaa paljon enemmän kuin useimmat sovellukset vaativat.
  • Käyttöoikeussääntöjen testaaminen lukitsematta paikallista hallintoa.

Kenelle artikkeli on tarkoitettu: Järjestelmänvalvojat, jotka siirtävät yksinkertaisen CentOS/PostgreSQL-runbookin tuettuun verkkokäyttöön.

Vuoden 2026 asema: Alla oleva laaja MD5-sääntö säilyy vain varoituksena historiallisena esimerkkinä. PostgreSQL dokumentoi MD5-salatut salasanat vanhentuneiksi; mieluummin scram-sha-256, kapeita CIDR-tiedostoja, vähiten etuoikeusrooleja, palomuuriohjaimia, TLS:ää, varmuuskopioita ja tuettua pääversiota.

Turvallisuushuomautus: Alkuperäisen artikkelin komentoja ja määritysesimerkkejä ei ole suoritettu uudelleen nykyaikaisessa tuotantoympäristössä. Tarkista tuetut versiot, ota varmuuskopio ja valmistele palautus erillisessä testiympäristössä ennen käyttöönottoa.

Viralliset lähteet

Yleiskatsaus

Tämä on alustava konfigurointimenettely, jota tarvitaan PostgreSQL:n asentamiseen ja käynnistämiseen CentOS-käyttöjärjestelmässä. Tiedot perustuvat oletukseen, että käytössä on CentOS7. Mukana on myös turvallisuutta koskeva osa.

PostgreSQL:ää suositellaan, koska se on ilmainen ja erittäin toimiva. Olen kuullut, että PostgreSQL:n funktiot olivat ennen hitaita, mutta viimeaikaiset funktiot ovat parantuneet ja nopeutuneet.

Versiot ovat seuraavat.

CentOS-versio7.6 (1810)
PostgreSQL:n versio9.2.24

Sisällysluettelo

  1. asenna
  2. Asetusten yksityiskohdat
  3. Yhteenveto

1. asenna

Tässä osassa kuvataan PostgreSQL:n asentaminen.

1-1. PostgreSQL:n asentaminen

Suorita PostgreSQL-asennus yum-komennolla. Suorita työ pääkäyttäjänä.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server

2. Asetusten yksityiskohdat

Tässä osassa kuvataan kokoonpano PostgreSQL:n käynnistämiseen asti.

2-1. Luo oma PostgreSQL-käyttäjä.

Halusin luoda oman käyttäjän PostgreSQL:n käsittelyä varten (psql-komentojen käyttö), mutta käyttäjä oli jo luotu. Muistan luoneeni käyttäjiä aiemmin, joten ehkä määrittely on muuttunut.

Kokeile siirtyä käyttäjäksi seuraavalla komennolla.

[root@hostname ~]# su - postgres

Koska jotkut saattavat mahdollisesti käyttää vanhempaa PostgreSQL-versiota, on syytä mainita, että menettely ympäristömuuttujien asettamiseksi muuttamalla seuraavaa ".bashrc" ei myöskään ole enää tarpeen.

.bashrc


export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost

Postgres-käyttäjien oletusarvoinen PGDATA näyttää nyt olevan '/var/lib/pgsql/data'. Sen kuvataan viittaavan tiedostoon "/usr/lib/systemd/system/postgresql.service".

2-2. PostgreSQL-tietojen valmistelu

Luo PostgreSQL-tiedot. Koodaus on UNICODE. Hakemisto "/var/lib/pgsql/data" luotiin oletusarvoisesti, mutta niitä, jotka eivät ole luoneet, pyydetään myös luomaan kansio.

-bash-4.2$ initdb --encoding=UNICODE

Koska "PGDATA=/var/lib/pgsql/data" on asetettu "/usr/lib/systemd/system/postgresql.service"-kenttään, "initdb --encoding=UNICODE" luo tietokannan osoitteeseen "/var/lib/pgsql/". data/", tietokanta rakennetaan osoitteeseen "/var/lib/pgsql/data/".

2-3. Määritystiedoston muuttaminen

Salli IP-osoitteiden pääsy PostgreSQL:ään. Määritä järjestelmä niin, että se on salasanalla todennettu muita kuin paikallisia käyttäjiä varten.

[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf

Muokkaa 'postgresql.conf' seuraavasti.

postgresql.conf【Ennen muutosta】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;

postgresql.conf【muutoksen jälkeen】


#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;

Koska tämä on tärkeä osa tietoturvaa, jos otat tämän asetuksen käyttöön, voit käyttää sivustoa miltä tahansa IP-osoitteelta. Jos käytettävä IP-osoite on kiinteä, ilmoita kiinteä IP-osoite.

Tämä asetus on tarpeen, kun kirjaudutaan sisään muulta palvelimelta kuin siltä, jolle PostgreSQL on asennettu, esim. pgadmin. Tämä asetus ei ole tarpeen, jos kirjaudut palvelimeen ja suoritat psql-komennon. (koska yhteys on peräisin häneltä itseltään (localhost))

Tämä on tärkeä tietoturva-asetus, joten minimoi mahdollisimman paljon käyttäjiä, jotka voivat käyttää sitä.

Muokkaa sitten 'pg_hba.conf'.

[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf

Lisää seuraavat tiedot asiakirjan loppuun.

pg_hba.conf


#Salasanan todennus ulkopuolelta.
host    all             all             0.0.0.0/0            md5

Jos tämä asetus on käytössä, salasana vaaditaan, kun yhteys muodostetaan ulkopuolelta. Nämä alueet voivat olla vakavia tietoturva-aukkoja, jos niitä ei ole määritetty tai ne on määritetty väärin, joten määritä ne mahdollisimman huolellisesti.

2-4. bootstrap-tarkistus

Nyt kun esiasetukset on tehty, tarkista, että PostgreSQL käynnistyy. Koska tietokanta rakennettiin postgres-käyttäjänä, vaihda postgres-käyttäjäksi ennen käynnistämistä.

[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start

Kun PostgreSQL on käynnistetty onnistuneesti, tarkista, että psql-komento toimii ongelmitta. Suorita psql-komento postgres-käyttäjänä.

-bash-4.2$ psql -l
                                         Database List
   Name    |  Owner   | Encoding         |  Collation Order   | Ctype(conversion operator) |      Access rights
-----------+----------+------------------+--------------------+----------------------------+-----------------------
 postgres  | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                |
 template0 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
 template1 | postgres | UTF8             | ja_JP.UTF-8        | ja_JP.UTF-8                | =c/postgres          +
           |          |                  |                    |                            | postgres=CTc/postgres
(3 lines)

On OK, jos edellä mainitut tulokset palautetaan.

2-5. Automaattinen käynnistysasetus

Vaikka se ei ole pakollista, PostgreSQL:ää on vaikea käynnistää joka kerta, kun palvelin käynnistetään uudelleen, joten se on määritetty siten, että PostgreSQL käynnistyy automaattisesti, kun palvelin käynnistetään. Se rekisteröityy myös systemctl-komentoon. Huomaa, että tämä menettely koskee CentOS7:ää, joten jos käytät jotain muuta kuin CentOS7:ää, sinun on käytettävä Service-komentoa.

Tarkista, onko tiedosto '/usr/lib/systemd/system/postgresql.service' olemassa. Jos näin ei ole, luo tiedosto 'postgresql.service' seuraavalla tavalla. Suorita pääkäyttäjänä.

[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service

Toimitetaan seuraavat tiedot.

postgresql.service


[Unit]
#Kuvaus.
Description=PostgreSQL
#Toteutusta edeltävä ja sen jälkeinen valvonta.
#Before=xxx.service
After=network.target

[Service]
#Käyttäjän ja ryhmän nimeäminen
User=postgres
Group=postgres
#Kun se on aktivoitu, aseta tilaksi Aktivoitu.
Type=oneshot
RemainAfterExit=yes
#Käynnistä, pysäytä ja lataa uudelleen.
Environment=PGDATA=/var/lib/pgsql/data
ExecStart=/usr/bin/pg_ctl start -D /var/lib/pgsql/data
ExecStop=/usr/bin/pg_ctl stop
ExecReload=/usr/bin/pg_ctl reload

[Install]
#Runlevel 3:n vastaavat asetukset.
WantedBy=multi-user.target

Rekisteröidy seuraavaksi systemctl-komennolla.

[root@hostname ~]# systemctl enable postgresql
[root@hostname ~]# systemctl is-enabled postgresql
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep postgresql
postgresql.service                                enabled
[root@hostname ~]# systemctl daemon-reload

2-6. Hallinnollisen käyttäjän lisääminen PostgreSQL:ään

Luo PostgreSQL-sovelluksessa käytettävä käyttäjä, joka on erillinen siitä käyttäjästä, joka käyttää PostgreSQL:ää Linuxissa. Tämä on käyttäjä, kun käytät pgadminia, jne. Haluaisin muuttaa oletusarvoisesti olemassa olevan postgres-käyttäjän salasanan ja käyttää sitä.

Suorita seuraava komento postgres-käyttäjänä.

-bash-4.2$ psql
postgres=# alter role postgres with password '(tietokoneen) salasana';
postgres=# \q

Huomautus:Kirjoita haluamasi salasana kenttään 'Password'.

2-7. Palomuurien poraaminen

Salli pääsy PostgreSQL-porttiin, koska palomuuri (iptables CentOS6:ssa ja sitä vanhemmissa versioissa) sallii oletusarvoisesti vain ssh-yhteyden CentOS7:ssä. Lisää myös "permanent"-vaihtoehto, jotta asetuksista tulee pysyviä.

[root@hostname ~]# firewall-cmd --permanent --zone=public --add-port=5432/tcp
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports: 8080/tcp 5432/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Jos siinä lukee "portit: 5432/tcp", se on OK.

Pääsy pgadminin kautta. Sinun pitäisi pystyä kirjautumaan sisään postgres-käyttäjänä juuri asettamallasi salasanalla.

pgAdmin-näkymä, jossa postgres-tietokanta on centos_test-palvelimella

3. yhteenveto

Olemme kuvailleet PostgreSQL:n asennuksen yhteydessä tarvittavia alkukokoonpanoja. PostgreSQL:n alkuasennus voi olla hankalaa, joten tutustu tähän osioon.

Tässä ovat tärkeimmät huomioitavat vaiheet ja rajoitukset.