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='*'plushost all all 0.0.0.0/0 md5paljastaa 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-versio | 7.6 (1810) |
|---|---|
| PostgreSQL:n versio | 9.2.24 |
Sisällysluettelo
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.
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.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
#------------------------------------------------------------------------------
# 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.
#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.
[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.
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.
■Artikkelit
■Profiili
■Yhteystiedot
