GNU/Linux >> Linux の 問題 >  >> Linux

RockyLinux8にPostgreSQLサーバーをインストールして保護する方法

PostgreSQLは、人気のあるオープンソースのリレーショナルデータベース管理システムです。信頼性で知られ、堅牢性、柔軟性、パフォーマンスで人気を集めています。 PostgreSQLは、データベースと多数のWebおよび分析アプリケーションの管理に使用されます。この記事を書いている時点では、PostgreSQL13が最新バージョンです。このバージョンでは、大規模なデータベースに役立つインデックス作成およびルックアップシステムが大幅に改善されています。

この投稿では、RockyLinux8にPostgreSQLをインストールして保護する方法を紹介します。

前提条件

  • Atlantic.NetクラウドプラットフォームでRockyLinux8を実行しているサーバー
  • サーバーで構成されているrootパスワード

ステップ1-Atlantic.Netクラウドサーバーを作成する

まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてRockyLinux8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。

サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。

dnf update -y

ステップ2–PostgreSQL13リポジトリを追加する

dnf module list postgresql

PostgreSQLバージョン10のみが利用可能であることがわかります:

Rocky Linux 8 - AppStream
Name                         Stream                   Profiles                             Summary                                             
postgresql                   9.6                      client, server [d]                   PostgreSQL server and client module                 
postgresql                   10 [d]                   client, server [d]                   PostgreSQL server and client module                 
postgresql                   12                       client, server [d]                   PostgreSQL server and client module                 
postgresql                   13                       client, server [d]                   PostgreSQL server and client module                 

最新のPostgreSQLバージョンをインストールするには、PostgreSQLリポジトリをシステムにインストールする必要があります。

次のコマンドを使用してインストールできます:

dnf install https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm

リポジトリが作成されたら、次のステップに進むことができます。

ステップ3–PostgreSQL13をRockyLinux8にインストールする

次に、次のコマンドを使用してリポジトリを更新します。

dnf update -y

次に、次のコマンドを使用してデフォルトのPostgreSQLリポジトリを無効にします。

dnf -qy module disable postgresql

次に、次のコマンドを実行して、最新バージョンのPostgreSQLをインストールします。

dnf install postgresql13 postgresql13-server

PostgreSQL 13をインストールすると、次の出力が得られます。

Last metadata expiration check: 0:00:08 ago on Fri 22 Oct 2021 08:38:58 AM UTC.
Dependencies resolved.
===============================================================================================================================================
 Package                                  Architecture                Version                                Repository                   Size
===============================================================================================================================================
Installing:
 postgresql13                             x86_64                      13.4-1PGDG.rhel8                       pgdg13                      1.5 M
 postgresql13-server                      x86_64                      13.4-1PGDG.rhel8                       pgdg13                      5.5 M
Installing dependencies:
 postgresql13-libs                        x86_64                      13.4-1PGDG.rhel8                       pgdg13                      414 k

Transaction Summary
===============================================================================================================================================
Install  3 Packages

Total download size: 7.4 M
Installed size: 31 M
Is this ok [y/N]: y

次に、次のコマンドを使用してPostgreSQLデータベースを初期化します。

/usr/pgsql-13/bin/postgresql-13-setup initdb

サンプル出力:

Initializing database ... OK

次に、PostgreSQLサービスを開始し、次のコマンドを使用してシステムの再起動時に開始できるようにします。

systemctl start postgresql-13
systemctl enable postgresql-13

次のコマンドを使用してPostgreSQLのステータスを確認できます。

systemctl status postgresql-13

次の出力が得られるはずです:

● postgresql-13.service - PostgreSQL 13 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-13.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-10-22 08:39:47 UTC; 7s ago
     Docs: https://www.postgresql.org/docs/13/static/
  Process: 36412 ExecStartPre=/usr/pgsql-13/bin/postgresql-13-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
 Main PID: 36417 (postmaster)
    Tasks: 8 (limit: 11411)
   Memory: 16.8M
   CGroup: /system.slice/postgresql-13.service
           ├─36417 /usr/pgsql-13/bin/postmaster -D /var/lib/pgsql/13/data/
           ├─36419 postgres: logger 
           ├─36421 postgres: checkpointer 
           ├─36422 postgres: background writer 
           ├─36423 postgres: walwriter 
           ├─36424 postgres: autovacuum launcher 
           ├─36425 postgres: stats collector 
           └─36426 postgres: logical replication launcher 
ss -antpl | grep 5432

次の出力が得られます:

LISTEN 0      128        127.0.0.1:5432       0.0.0.0:*    users:(("postmaster",pid=36417,fd=7))
LISTEN 0      128            [::1]:5432          [::]:*    users:(("postmaster",pid=36417,fd=6))

ステップ4–Postgresユーザーのパスワードを設定する

パスワードを設定するには、次のコマンドを使用してPostgreSQLにログインします。

su - postgres

次に、次のコマンドを使用して安全なパスワードを設定します。

psql -c "alter user postgres with password 'securepassword'"

次に、次のコマンドを使用してPostgreSQLシェルを終了します。

exit

ステップ5–PostgreSQL認証方法の変更

PostgreSQLのメイン構成ファイルを編集して変更できます:

nano /var/lib/pgsql/13/data/pg_hba.conf

次の行を見つけます:

local   all             all                                     peer

そして、それを次の行に置き換えます:

local   all             all                                     scram-sha-256

ファイルを保存して閉じてから、PostgreSQLサービスを再起動して変更を適用します。

systemctl restart postgresql-13

ステップ6–PostgreSQLでデータベースとユーザーを作成する

まず、次のコマンドを使用してPostgreSQLシェルにログインします。

sudo -u postgres psql

次の出力が得られます:

could not change directory to "/root": Permission denied
psql (13.4)
Type "help" for help.

postgres=# 

次に、次のコマンドを使用して、user1という名前の新しいPostgreSQLユーザーを作成します。

CREATE USER user1 WITH CREATEDB CREATEROLE PASSWORD 'passoword';

PostgreSQLユーザーを確認するには、次を実行します:

\du

次の出力が得られます:

                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
 user1     | Create role, Create DB                                     | {}

user1dbという名前の新しいPostgreSQLデータベースを作成するには、次のコマンドを実行します。

CREATE DATABASE user1db OWNER user1;

PostgreSQLデータベースを確認するには、次のコマンドを実行します。

\l

次の出力が得られます:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 user1db   | user1    | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

結論

おめでとう! Rocky Linux 8にPostgreSQLを正常にインストールして保護しました。セキュリティ上の理由から、本番環境には常に最新バージョンのPostgreSQLをインストールすることをお勧めします。 Atlantic.NetのVPSホスティングを試してみてください!


Linux
  1. Centos8にPostgres13をインストールして設定する方法

  2. Ubuntu18.04にRedisをインストールして保護する方法

  3. Ubuntu 18.04 に PostgreSQL サーバーをインストールする方法

  1. Fedora34にPostgres14をインストールして設定する方法

  2. CentOS8にPostgreSQLサーバーをインストールする方法

  3. PostgreSQLサーバーを保護する方法

  1. CentOS8にPostgreSQLをインストールする方法

  2. CentOS8にMongoDB4をインストールして保護する方法

  3. CentOS / RHEL :OpenSSH サーバーとクライアントをインストールして構成する方法