PostgreSQL σε CentOS: ασφαλής εγκατάσταση και απομακρυσμένη πρόσβαση
Δημοσιεύτηκε:
Ενημερώθηκε:
Άρθρα › PostgreSQL σε CentOS: ασφαλής εγκατάσταση και απομακρυσμένη πρόσβαση
Κατάσταση το 2026 και ασφαλής χρήση
Συμπέρασμα: Εγκαταστήστε μια υποστηριζόμενη έκδοση PostgreSQL, αρχικοποιήστε το προβλεπόμενο σύμπλεγμα, ακούστε μόνο τις απαιτούμενες διεπαφές και παραχωρήστε πρόσβαση στο pg_hba.conf σε συγκεκριμένες βάσεις δεδομένων, ρόλους και αξιόπιστα δίκτυα. Χρησιμοποιήστε έλεγχο ταυτότητας κωδικού πρόσβασης SCRAM και TLS όπου οι κωδικοί πρόσβασης διασχίζουν ένα δίκτυο.
Τι θα μάθετε
- Πώς αλληλεπιδρούν η πηγή πακέτου, ο κατάλογος δεδομένων, η προετοιμασία, το σύστημα, οι υποδοχές ακρόασης και ο έλεγχος ταυτότητας πελάτη.
- Γιατί το
listen_addresses='*'συν τοhost all all 0.0.0.0/0 md5εκθέτει πολύ περισσότερα από όσα απαιτούν οι περισσότερες εφαρμογές. - Πώς να δοκιμάσετε κανόνες πρόσβασης χωρίς να κλειδώσετε την τοπική διοίκηση.
Σε ποιους απευθύνεται: Διαχειριστές που μετεγκαθιστούν ένα απλό βιβλίο εκτέλεσης CentOS/PostgreSQL σε μια υποστηριζόμενη, δικτυωμένη ανάπτυξη.
Ισχύει το 2026: Ο γενικός κανόνας MD5 παρακάτω διατηρείται μόνο ως προειδοποιητικό ιστορικό παράδειγμα. Η PostgreSQL τεκμηριώνει κωδικούς πρόσβασης κρυπτογραφημένους με MD5 όπως έχουν καταργηθεί. προτιμήστε scram-sha-256, στενούς CIDR, ρόλους με τα λιγότερα προνόμια, στοιχεία ελέγχου τείχους προστασίας, TLS, αντίγραφα ασφαλείας και μια υποστηριζόμενη κύρια έκδοση.
Σημείωση ασφαλείας: Οι εντολές και τα παραδείγματα ρυθμίσεων του αρχικού άρθρου δεν έχουν εκτελεστεί ξανά σε σύγχρονο περιβάλλον παραγωγής. Πριν από την εφαρμογή, ελέγξτε τις υποστηριζόμενες εκδόσεις, δημιουργήστε αντίγραφα ασφαλείας και προετοιμάστε σχέδιο επαναφοράς σε ξεχωριστό περιβάλλον δοκιμών.
Επίσημες πηγές
Επισκόπηση
Αυτή είναι η αρχική διαδικασία διαμόρφωσης που απαιτείται για την εγκατάσταση και την εκκίνηση της PostgreSQL στο CentOS. Οι πληροφορίες βασίζονται στην υπόθεση ότι χρησιμοποιείται το CentOS7. Περιλαμβάνεται επίσης η ενότητα για την ασφάλεια.
Συνιστάται η PostgreSQL, καθώς είναι δωρεάν και εξαιρετικά λειτουργική. Έχω ακούσει ότι οι συναρτήσεις της PostgreSQL ήταν αργές, αλλά οι πρόσφατες έχουν βελτιωθεί και είναι ταχύτερες.
Οι εκδόσεις έχουν ως εξής.
| Έκδοση CentOS | 7.6 (1810) |
|---|---|
| Έκδοση της PostgreSQL | 9.2.24 |
Περιεχόμενα
1. εγκαταστήστε το
Αυτή η ενότητα περιγράφει τη διαδικασία εγκατάστασης της PostgreSQL.
1-1. Εγκατάσταση της PostgreSQL
Πραγματοποιήστε την εγκατάσταση της PostgreSQL μέσω της εντολής yum. Εκτελέστε την εργασία ως χρήστης root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install postgresql-server
2. Λεπτομέρειες ρύθμισης
Αυτή η ενότητα περιγράφει τη διαμόρφωση μέχρι την εκκίνηση της PostgreSQL.
2-1. Δημιουργήστε έναν αποκλειστικό χρήστη της PostgreSQL.
Ήθελα να δημιουργήσω έναν ειδικό χρήστη για τον χειρισμό της PostgreSQL (χρήση εντολών psql), αλλά ο χρήστης είχε ήδη δημιουργηθεί. Θυμάμαι ότι δημιουργούσα χρήστες όταν τους δημιουργούσα στο παρελθόν, οπότε ίσως οι προδιαγραφές να έχουν αλλάξει.
Δοκιμάστε να μεταβείτε σε έναν χρήστη με την ακόλουθη εντολή.
[root@hostname ~]# su - postgres
Καθώς κάποιοι ενδεχομένως χρησιμοποιούν παλαιότερη έκδοση της PostgreSQL, θα πρέπει να αναφερθεί ότι η διαδικασία ορισμού των μεταβλητών περιβάλλοντος με την αλλαγή του ακόλουθου αρχείου ".bashrc" δεν είναι πλέον απαραίτητη.
export PGHOME=/var/lib/pgsql
export PGDATA=/var/lib/pgsql/data
export PGHOST=localhost
Το προεπιλεγμένο PGDATA για τους χρήστες του postgres φαίνεται τώρα να είναι το '/var/lib/pgsql/data'. Περιγράφεται ότι αναφέρεται στο "/usr/lib/systemd/system/postgresql.service".
2-2. Προετοιμασία δεδομένων PostgreSQL
Δημιουργία δεδομένων PostgreSQL. Η κωδικοποίηση είναι UNICODE. Ο κατάλογος "/var/lib/pgsql/data" δημιουργήθηκε από προεπιλογή, αλλά όσοι δεν το έχουν κάνει, καλούνται επίσης να δημιουργήσουν έναν φάκελο.
-bash-4.2$ initdb --encoding=UNICODE
Καθώς το "PGDATA=/var/lib/pgsql/data" έχει οριστεί στο "/usr/lib/systemd/system/postgresql.service", το "initdb --encoding=UNICODE" θα δημιουργήσει μια ΒΔ στο "/var/lib/pgsql/ data/", η ΒΔ δημιουργείται στο "/var/lib/pgsql/data/".
2-3. Τροποποίηση του αρχείου ρυθμίσεων
Επιτρέψτε σε διευθύνσεις IP να έχουν πρόσβαση στην PostgreSQL. Ρυθμίστε το σύστημα έτσι ώστε να είναι πιστοποιημένο με κωδικό πρόσβασης για μη τοπική πρόσβαση.
[root@hostname ~]# vi /var/lib/pgsql/data/postgresql.conf
Τροποποιήστε το αρχείο 'postgresql.conf' ως εξής.
#------------------------------------------------------------------------------
# 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;
Για να προσθέσω σε αυτό, καθώς είναι ένα σημαντικό μέρος της ασφάλειας, αν βάλετε αυτή τη ρύθμιση, θα μπορείτε να έχετε πρόσβαση στον ιστότοπο από οποιαδήποτε IP. Εάν η IP στην οποία πρόκειται να αποκτήσετε πρόσβαση είναι σταθερή, αναφέρετε τη σταθερή IP.
Αυτή η ρύθμιση είναι απαραίτητη όταν συνδέεστε από έναν διακομιστή διαφορετικό από αυτόν στον οποίο είναι εγκατεστημένη η PostgreSQL, π.χ. pgadmin. Αυτή η ρύθμιση δεν είναι απαραίτητη εάν συνδεθείτε στο διακομιστή και εκτελέσετε την εντολή psql. (αφού η σύνδεση προέρχεται από τον ίδιο (localhost))
Πρόκειται για μια σημαντική ρύθμιση ασφαλείας, οπότε ελαχιστοποιήστε όσο το δυνατόν περισσότερο τον αριθμό των χρηστών που μπορούν να έχουν πρόσβαση σε αυτήν.
Στη συνέχεια, τροποποιήστε το αρχείο 'pg_hba.conf'.
[root@hostname ~]# vi /var/lib/pgsql/data/pg_hba.conf
Προσθέστε τις ακόλουθες πληροφορίες στο τέλος του εγγράφου.
#Αυθεντικοποίηση κωδικού πρόσβασης από το εξωτερικό.
host all all 0.0.0.0/0 md5
Με την προσθήκη αυτής της ρύθμισης, απαιτείται κωδικός πρόσβασης κατά τη σύνδεση από το εξωτερικό. Αυτές οι περιοχές μπορούν να αποτελέσουν σοβαρά κενά ασφαλείας αν δεν ρυθμιστούν ή αν ρυθμιστούν λανθασμένα, γι' αυτό παρακαλούμε να τις ρυθμίσετε με τη μεγαλύτερη δυνατή προσοχή.
2-4. έλεγχος bootstrap
Τώρα που ολοκληρώθηκε η προρύθμιση, ελέγξτε ότι ξεκινάει η PostgreSQL. Δεδομένου ότι η ΒΔ δημιουργήθηκε ως χρήστης postgres, μεταβείτε στον χρήστη postgres πριν ξεκινήσετε.
[root@hostname ~]# su - postgres
-bash-4.2$ pg_ctl start
Μετά την επιτυχή εκκίνηση της PostgreSQL, ελέγξτε ότι η εντολή psql λειτουργεί χωρίς προβλήματα. Εκτελέστε την εντολή psql ως χρήστης του postgres.
-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)
Είναι εντάξει αν επιστραφούν τα παραπάνω αποτελέσματα.
2-5. Ρύθμιση αυτόματης εκκίνησης
Αν και δεν είναι υποχρεωτικό, είναι δύσκολο να εκκινείται η PostgreSQL κάθε φορά που γίνεται επανεκκίνηση του διακομιστή, οπότε ρυθμίζεται έτσι ώστε η PostgreSQL να εκκινείται αυτόματα κατά την εκκίνηση του διακομιστή. Επίσης, εγγράφεται στην εντολή systemctl. Σημειώστε ότι αυτή η διαδικασία αφορά το CentOS7, οπότε αν χρησιμοποιείτε οτιδήποτε άλλο εκτός του CentOS7, θα πρέπει να χρησιμοποιήσετε την εντολή Service για να το αντιμετωπίσετε.
Ελέγξτε αν υπάρχει το αρχείο '/usr/lib/systemd/system/postgresql.service'. Αν όχι, δημιουργήστε το 'postgresql.service' χρησιμοποιώντας την ακόλουθη διαδικασία. Εκτελέστε ως χρήστης root.
[root@hostname ~]# touch /etc/systemd/system/postgresql.service
[root@hostname ~]# vi /etc/systemd/system/postgresql.service
Παρέχονται οι ακόλουθες πληροφορίες.
[Unit]
#Περιγραφή.
Description=PostgreSQL
#Έλεγχος πριν και μετά την εκτέλεση.
#Before=xxx.service
After=network.target
[Service]
#Ορισμός χρήστη και ομάδας
User=postgres
Group=postgres
#Μόλις ενεργοποιηθεί, ορίστε την κατάσταση σε Ενεργοποιημένη.
Type=oneshot
RemainAfterExit=yes
#Εκκίνηση, διακοπή και επαναφόρτωση.
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]
#Ισοδύναμες ρυθμίσεις επιπέδου εκτέλεσης 3.
WantedBy=multi-user.target
Στη συνέχεια, εγγραφείτε με την εντολή systemctl.
[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. Προσθήκη διαχειριστικού χρήστη στην PostgreSQL
Δημιουργήστε έναν χρήστη που θα χρησιμοποιείται στην εφαρμογή PostgreSQL, ξεχωριστά από τον χρήστη που χειρίζεται την PostgreSQL από το Linux. Αυτός είναι ο χρήστης όταν λειτουργεί με το pgadmin κ.λπ. Θα ήθελα να αλλάξω τον κωδικό πρόσβασης του χρήστη postgres που υπάρχει από προεπιλογή και να τον χρησιμοποιήσω.
Εκτελέστε την ακόλουθη εντολή ως χρήστης του postgres.
-bash-4.2$ psql
postgres=# alter role postgres with password '(υπολογιστής) κωδικός πρόσβασης';
postgres=# \q
Σημείωση:Εισάγετε τον κωδικό πρόσβασης που θέλετε να ορίσετε στο πεδίο "Password" (Κωδικός πρόσβασης).
2-7. Διάτρηση τειχών προστασίας
Επιτρέψτε την πρόσβαση στη θύρα PostgreSQL επειδή το τείχος προστασίας (iptables για το CentOS6 και παλαιότερα) επιτρέπει μόνο την πρόσβαση ssh από προεπιλογή στο CentOS7. Προσθέστε επίσης την επιλογή 'permanent' για να κάνετε τη διαμόρφωση μόνιμη.
[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:
Αν λέει 'ports: 5432/tcp', είναι εντάξει.
Πρόσβαση μέσω pgadmin. Θα πρέπει να μπορείτε να συνδεθείτε ως χρήστης του postgres με τον κωδικό πρόσβασης που μόλις ορίσατε.
3. περίληψη
Περιγράψαμε τις αρχικές ρυθμίσεις που απαιτούνται κατά την εγκατάσταση της PostgreSQL. Η αρχική δημιουργία της PostgreSQL μπορεί να είναι δύσκολη, γι' αυτό ανατρέξτε σε αυτή την ενότητα.
Αυτά είναι τα βασικά βήματα και οι περιορισμοί που πρέπει να ληφθούν υπόψη.
■Άρθρα
■Προφίλ
■Επικοινωνία
