Rocky Linux 8での初期サーバー設定

紹介

Rocky Linux 8サーバーを新規に作成した場合、基本的なセットアップの一環として初めにいくつかの構成手順を実行する必要があります。これにより、サーバーのセキュリティと利便性が向上し、その後の操作のための堅固な基盤が得られます。

ステップ1 — ルートユーザーとしてログインする

サーバーにログインするには、サーバーの公開IPアドレスを知っている必要があります。また、認証用にSSHキーをインストールした場合は、rootユーザーアカウントの秘密鍵が必要です。まだサーバーにログインしていない場合は、このプロセスを詳しく説明した「DropletにSSHで接続する方法」のドキュメントに従うと良いでしょう。

すでにサーバーに接続していない場合は、次のコマンドを使用してrootユーザーとしてログインします(コマンドの強調部分をサーバーの公開IPアドレスに置き換えてください):

  1. ssh root@your_server_ip

警告を受け入れてください。ホストの信頼性に関して。パスワード認証を使用している場合は、ログインするためにrootパスワードを入力してください。パスフレーズで保護されたSSHキーを使用している場合は、セッションごとにキーを使用する最初の回にパスフレーズを入力するように求められる場合があります。これがパスワードを使用してサーバーにログインする最初の回である場合、rootパスワードの変更を求められることもあります。

ルートについて

rootユーザーは、Linux環境における管理ユーザーであり、非常に広範な特権を持っています。 rootアカウントの特権が強化されているため、定期的に使用することは推奨されていません。 これは、rootアカウントに固有の権限の一部が、事故によってさえ非常に破壊的な変更を行う能力であるためです。

そのため、次のステップは、日常的な作業のために影響範囲が縮小された代替ユーザーアカウントを設定することです。 このアカウントは、必要に応じて特権を増やすことができます。

ステップ2 — 新しいユーザーの作成

rootとしてログインしたら、今後ログインに使用する新しいユーザーアカウントを作成できます。

この例では、新しいユーザーをsammyとして作成しますが、必要に応じて好きなユーザー名に置き換えてください。

  1. adduser sammy

次に、sammyユーザーの強力なパスワードを設定します。

  1. passwd sammy

パスワードを2回入力するように求められます。これを行った後、ユーザーは使用可能になりますが、まずこのユーザーにsudoコマンドを使用するための追加の特権を付与します。これにより、必要に応じてrootとしてコマンドを実行できます。

ステップ3 — 管理特権の付与

これで、通常のアカウント特権を持つ新しいユーザーアカウントが作成されました。しかし、時々管理タスクを実行する必要があるかもしれません。

通常のユーザーからログアウトしてrootアカウントにログインし直す手間を避けるために、通常のアカウントに「スーパーユーザー」またはroot特権を設定できます。これにより、通常のユーザーは各コマンドの前にsudoを付けることで管理特権でコマンドを実行できます。

これらの特権を新しいユーザーに追加するには、新しいユーザーをwheelグループに追加する必要があります。デフォルトでは、Rocky Linux 8ではwheelグループに属するユーザーはsudoコマンドを使用できます。

rootとして、次のコマンドを実行して、新しいユーザーをwheelグループに追加します(ハイライトされた単語を新しいユーザー名に置き換えてください):

  1. usermod -aG wheel sammy

これで、通常のユーザーとしてログインしているときに、スーパーユーザー特権でアクションを実行するためにコマンドの前にsudoを入力できます。

ステップ 4 — 基本的なファイアウォールの設定

ファイアウォールは、サーバーのすべてのポートへのトラフィックを拒否し、明示的に承認したポート/サービスを除いて、すべてのポートへのトラフィックを拒否する責任があります。 Rocky Linuxには、この機能を実行するためのfirewalldというサービスがあります。 firewalldファイアウォールポリシーを構成するためにfirewall-cmdというツールが使用されます。

注意: DigitalOceanでサーバーを実行している場合、firewalldの代わりにDigitalOcean Cloud Firewallsをオプションで使用できます。 衝突するルールを回避するために、1度に1つのファイアウォールのみを使用することをお勧めします。

まずfirewalldをインストールします:

  1. dnf install firewalld -y

デフォルトのfirewalld構成では、ssh接続が許可されているため、ファイアウォールをすぐにオンにできます:

  1. systemctl start firewalld

サービスの状態を確認して、起動していることを確認します:

  1. systemctl status firewalld
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ユーティリティを使用して、ファイアウォールのポリシー情報を取得および設定できます。

まず、すでに許可されているサービスをリストアップしましょう:

  1. firewall-cmd --permanent --list-all
Output
public (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:

名前で有効にできる追加のサービスを見るには、次のように入力します:

  1. firewall-cmd --get-services

許可されるべきサービスを追加するには、--add-serviceフラグを使用します:

  1. firewall-cmd --permanent --add-service=http

これにより、httpサービスが追加され、ポート80への着信TCPトラフィックが許可されます。ファイアウォールをリロードすると、設定が更新されます:

  1. firewall-cmd --reload

後で構成する追加のサービス(またはポート)については、ファイアウォールを明示的に開く必要があることを覚えておいてください。

ステップ5 — 通常のユーザー向けの外部アクセスの有効化

今、日常的な使用のための通常の非rootユーザーがいるので、そのユーザーを使用してサーバーにSSHできるようにする必要があります。

注意:新しいユーザーでsudoを使用してログインできることを確認するまでは、rootとしてログインすることをお勧めします。これにより、問題が発生した場合、rootとしてトラブルシューティングを行い、必要な変更を行うことができます。DigitalOcean Dropletを使用しており、rootのSSH接続に問題がある場合は、DigitalOceanコンソールを使用してDropletにログインできます。

新しいユーザーのSSHアクセスを構成するプロセスは、サーバーのrootアカウントが認証にパスワードを使用するかSSHキーを使用するかに依存します。

ルートアカウントがパスワード認証を使用する場合

rootアカウントにパスワードを使用してログインした場合、SSHのパスワード認証が有効になっています。新しいユーザーアカウントにSSHするには、新しいユーザー名を使用して新しいターミナルセッションを開き、SSHを使用します:

  1. ssh sammy@your_server_ip

通常のユーザーのパスワードを入力すると、ログインされます。必要に応じて管理者権限でコマンドを実行する場合は、次のようにsudoを入力してください:

  1. sudo command_to_run

セッションごとに最初にsudoを使用するときに通常のユーザーのパスワードが要求されます(その後、定期的に要求されます)。

サーバーのセキュリティを強化するために、パスワード認証の代わりにSSHキーの設定を強くお勧めしますRocky Linux 8でSSHキーを設定する方法に従って、キーベースの認証を構成する方法を学んでください。

ルートアカウントがSSHキー認証を使用している場合

SSHキーを使用してrootアカウントにログインしている場合、SSHのパスワード認証は無効になっています。新しいユーザーに正常にログインするには、公開鍵のコピーを新しいユーザーの~/.ssh/authorized_keysファイルに追加する必要があります。

サーバーのrootアカウントの~/.ssh/authorized_keysファイルにすでに公開鍵があるため、そのファイルとディレクトリ構造を新しいユーザーアカウントにコピーできます。

適切な所有権とアクセス許可を持つファイルをコピーする最も簡単な方法は、rsyncコマンドを使用することです。これにより、rootユーザーの.sshディレクトリがコピーされ、アクセス権が保持され、ファイルの所有者が変更されます。以下のコマンドのハイライトされた部分を正規のユーザー名に変更してください:

注意: rsync コマンドは、末尾にスラッシュがあるかどうかによって、ソースと宛先を異なるように扱います。以下で rsync を使用する際は、ソースディレクトリ (~/.ssh) に末尾のスラッシュが含まれていないことを確認してください (~/.ssh/ を使用していないことを確認してください)。

コマンドに誤って末尾のスラッシュを追加した場合、rsyncsudo ユーザーのホームディレクトリに root アカウントの ~/.ssh ディレクトリの 内容をコピーしようとします。ファイルは間違った場所にあり、SSH がそれらを見つけて使用することができません。

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

さて、ローカルマシンの新しいターミナルで、非 root ユーザーで新しい SSH セッションを開きます:

  1. ssh sammy@your_server_ip

パスワードを使用せずに新しいユーザーアカウントにログインするはずです。管理者権限でコマンドを実行する必要がある場合は、次のようにその前に sudo を入力してください:

  1. sudo command_to_run

管理者権限で sudo を使用する場合、セッションごとに最初の一回(そして定期的に)通常のユーザーパスワードが求められます。

結論

この時点で、サーバーの堅固な基盤が整いました。今後、サーバーに必要なソフトウェアをインストールできます。

Source:
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-rocky-linux-8