紹介
Rocky Linux 8サーバーを新規に作成した場合、基本的なセットアップの一環として初めにいくつかの構成手順を実行する必要があります。これにより、サーバーのセキュリティと利便性が向上し、その後の操作のための堅固な基盤が得られます。
ステップ1 — ルートユーザーとしてログインする
サーバーにログインするには、サーバーの公開IPアドレスを知っている必要があります。また、認証用にSSHキーをインストールした場合は、rootユーザーアカウントの秘密鍵が必要です。まだサーバーにログインしていない場合は、このプロセスを詳しく説明した「DropletにSSHで接続する方法」のドキュメントに従うと良いでしょう。
すでにサーバーに接続していない場合は、次のコマンドを使用してrootユーザーとしてログインします(コマンドの強調部分をサーバーの公開IPアドレスに置き換えてください):
警告を受け入れてください。ホストの信頼性に関して。パスワード認証を使用している場合は、ログインするためにrootパスワードを入力してください。パスフレーズで保護されたSSHキーを使用している場合は、セッションごとにキーを使用する最初の回にパスフレーズを入力するように求められる場合があります。これがパスワードを使用してサーバーにログインする最初の回である場合、rootパスワードの変更を求められることもあります。
ルートについて
rootユーザーは、Linux環境における管理ユーザーであり、非常に広範な特権を持っています。 rootアカウントの特権が強化されているため、定期的に使用することは推奨されていません。 これは、rootアカウントに固有の権限の一部が、事故によってさえ非常に破壊的な変更を行う能力であるためです。
そのため、次のステップは、日常的な作業のために影響範囲が縮小された代替ユーザーアカウントを設定することです。 このアカウントは、必要に応じて特権を増やすことができます。
ステップ2 — 新しいユーザーの作成
rootとしてログインしたら、今後ログインに使用する新しいユーザーアカウントを作成できます。
この例では、新しいユーザーをsammyとして作成しますが、必要に応じて好きなユーザー名に置き換えてください。
次に、sammy
ユーザーの強力なパスワードを設定します。
パスワードを2回入力するように求められます。これを行った後、ユーザーは使用可能になりますが、まずこのユーザーにsudo
コマンドを使用するための追加の特権を付与します。これにより、必要に応じてrootとしてコマンドを実行できます。
ステップ3 — 管理特権の付与
これで、通常のアカウント特権を持つ新しいユーザーアカウントが作成されました。しかし、時々管理タスクを実行する必要があるかもしれません。
通常のユーザーからログアウトしてrootアカウントにログインし直す手間を避けるために、通常のアカウントに「スーパーユーザー」またはroot特権を設定できます。これにより、通常のユーザーは各コマンドの前にsudo
を付けることで管理特権でコマンドを実行できます。
これらの特権を新しいユーザーに追加するには、新しいユーザーをwheelグループに追加する必要があります。デフォルトでは、Rocky Linux 8ではwheelグループに属するユーザーはsudo
コマンドを使用できます。
rootとして、次のコマンドを実行して、新しいユーザーをwheelグループに追加します(ハイライトされた単語を新しいユーザー名に置き換えてください):
これで、通常のユーザーとしてログインしているときに、スーパーユーザー特権でアクションを実行するためにコマンドの前にsudo
を入力できます。
ステップ 4 — 基本的なファイアウォールの設定
ファイアウォールは、サーバーのすべてのポートへのトラフィックを拒否し、明示的に承認したポート/サービスを除いて、すべてのポートへのトラフィックを拒否する責任があります。 Rocky Linuxには、この機能を実行するためのfirewalld
というサービスがあります。 firewalld
ファイアウォールポリシーを構成するためにfirewall-cmd
というツールが使用されます。
注意: DigitalOceanでサーバーを実行している場合、firewalld
の代わりにDigitalOcean Cloud Firewallsをオプションで使用できます。 衝突するルールを回避するために、1度に1つのファイアウォールのみを使用することをお勧めします。
まずfirewalld
をインストールします:
デフォルトのfirewalld
構成では、ssh
接続が許可されているため、ファイアウォールをすぐにオンにできます:
サービスの状態を確認して、起動していることを確認します:
Output● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago
Docs: man:firewalld(1)
Main PID: 13180 (firewalld)
Tasks: 2 (limit: 5059)
Memory: 22.4M
CGroup: /system.slice/firewalld.service
└─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid
注意してください、それはアクティブ
であり、有効
でもあることを意味します。つまり、サーバーが再起動されるとデフォルトで開始されます。
サービスが稼働している今、firewall-cmd
ユーティリティを使用して、ファイアウォールのポリシー情報を取得および設定できます。
まず、すでに許可されているサービスをリストアップしましょう:
Outputpublic (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: cockpit dhcpv6-client ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
名前で有効にできる追加のサービスを見るには、次のように入力します:
許可されるべきサービスを追加するには、--add-service
フラグを使用します:
これにより、http
サービスが追加され、ポート80
への着信TCPトラフィックが許可されます。ファイアウォールをリロードすると、設定が更新されます:
後で構成する追加のサービス(またはポート)については、ファイアウォールを明示的に開く必要があることを覚えておいてください。
ステップ5 — 通常のユーザー向けの外部アクセスの有効化
今、日常的な使用のための通常の非rootユーザーがいるので、そのユーザーを使用してサーバーにSSHできるようにする必要があります。
注意:新しいユーザーでsudo
を使用してログインできることを確認するまでは、rootとしてログインすることをお勧めします。これにより、問題が発生した場合、rootとしてトラブルシューティングを行い、必要な変更を行うことができます。DigitalOcean Dropletを使用しており、rootのSSH接続に問題がある場合は、DigitalOceanコンソールを使用してDropletにログインできます。
新しいユーザーのSSHアクセスを構成するプロセスは、サーバーのrootアカウントが認証にパスワードを使用するかSSHキーを使用するかに依存します。
ルートアカウントがパスワード認証を使用する場合
rootアカウントにパスワードを使用してログインした場合、SSHのパスワード認証が有効になっています。新しいユーザーアカウントにSSHするには、新しいユーザー名を使用して新しいターミナルセッションを開き、SSHを使用します:
通常のユーザーのパスワードを入力すると、ログインされます。必要に応じて管理者権限でコマンドを実行する場合は、次のようにsudo
を入力してください:
セッションごとに最初にsudo
を使用するときに通常のユーザーのパスワードが要求されます(その後、定期的に要求されます)。
サーバーのセキュリティを強化するために、パスワード認証の代わりにSSHキーの設定を強くお勧めします。 Rocky Linux 8でSSHキーを設定する方法に従って、キーベースの認証を構成する方法を学んでください。
ルートアカウントがSSHキー認証を使用している場合
SSHキーを使用してrootアカウントにログインしている場合、SSHのパスワード認証は無効になっています。新しいユーザーに正常にログインするには、公開鍵のコピーを新しいユーザーの~/.ssh/authorized_keys
ファイルに追加する必要があります。
サーバーのrootアカウントの~/.ssh/authorized_keys
ファイルにすでに公開鍵があるため、そのファイルとディレクトリ構造を新しいユーザーアカウントにコピーできます。
適切な所有権とアクセス許可を持つファイルをコピーする最も簡単な方法は、rsync
コマンドを使用することです。これにより、rootユーザーの.ssh
ディレクトリがコピーされ、アクセス権が保持され、ファイルの所有者が変更されます。以下のコマンドのハイライトされた部分を正規のユーザー名に変更してください:
注意: rsync
コマンドは、末尾にスラッシュがあるかどうかによって、ソースと宛先を異なるように扱います。以下で rsync
を使用する際は、ソースディレクトリ (~/.ssh
) に末尾のスラッシュが含まれていないことを確認してください (~/.ssh/
を使用していないことを確認してください)。
コマンドに誤って末尾のスラッシュを追加した場合、rsync
は sudo
ユーザーのホームディレクトリに root アカウントの ~/.ssh
ディレクトリの 内容をコピーしようとします。ファイルは間違った場所にあり、SSH がそれらを見つけて使用することができません。
さて、ローカルマシンの新しいターミナルで、非 root ユーザーで新しい SSH セッションを開きます:
パスワードを使用せずに新しいユーザーアカウントにログインするはずです。管理者権限でコマンドを実行する必要がある場合は、次のようにその前に sudo
を入力してください:
管理者権限で sudo
を使用する場合、セッションごとに最初の一回(そして定期的に)通常のユーザーパスワードが求められます。
結論
この時点で、サーバーの堅固な基盤が整いました。今後、サーバーに必要なソフトウェアをインストールできます。
Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8