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

導入

Rocky Linux 9サーバーを初めて作成する場合、初期設定の一環として早めに行うべきいくつかの構成手順があります。これにより、サーバーのセキュリティと使いやすさが向上し、堅牢な基盤が得られます。

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

サーバーにログインするには、サーバーのパブリックIPアドレスを知っている必要があります。また、パスワードまたは認証のためにSSHキーをインストールした場合は、rootユーザーアカウントのプライベートキーが必要です。まだサーバーにログインしていない場合は、詳細な手順について当社の「SSHを使用してDropletに接続する方法」のドキュメントに従うことをお勧めします。

サーバーに接続していない場合は、次のコマンドを使用して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 9ではwheelグループに属するユーザーがsudoコマンドを使用できるようになっています。

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

  1. usermod -aG wheel sammy

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

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

ファイアウォールは、サーバーの基本レベルのセキュリティを提供します。これらのアプリケーションは、サーバーのすべてのポートに対するトラフィックを拒否する責任がありますが、明示的に承認されたポート/サービスを除きます。Rocky Linuxには、この機能を実行するためのfirewalldというサービスがあります。firewall-cmdというツールを使用して、firewalldのファイアウォールポリシーを設定します。

注意:サーバーが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 Tue 2022-09-13 18:26:19 UTC; 1 day 2h ago Docs: man:firewalld(1) Main PID: 15060 (firewalld) Tasks: 4 (limit: 10938) Memory: 28.1M CPU: 6.127s CGroup: /system.slice/firewalld.service └─15060 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

注意してください、activeenabled の両方があることに注意してください。これは、サーバーが再起動された場合にデフォルトで開始されることを意味します。

サービスが起動して実行されているので、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アカウントがパスワード認証を使用している場合

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

sudoを使用すると、セッションごとに最初に通常のユーザーパスワードを入力するように求められます(そして定期的にその後)。

サーバーのセキュリティを強化するために、パスワード認証の代わりにSSHキーを設定する必要があります。このガイドに従って、Rocky Linux 9でSSHキーを設定する方法を学び、キーベースの認証を構成してください。

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

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

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

正しい所有権と権限でファイルをコピーする最も直接的な方法は、rsyncコマンドを使用することです。これにより、rootユーザーの.sshディレクトリがコピーされ、権限が保持され、ファイルの所有者が変更されます。以下のコマンドの強調表示された部分を通常のユーザー名に合わせて変更してください:

注意: rsyncコマンドは、トレーリングスラッシュで終わるソースとデスティネーションを、トレーリングスラッシュがないものとは異なるように扱います。以下のrsyncを使用する際には、ソースディレクトリ(~/.ssh)がトレーリングスラッシュを含まないようにしてください(~/.ssh/を使用していないか確認してください)。

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

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

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

sudoを最初に使用すると、通常のユーザーパスワードを入力するように求められます(セッションごとに定期的に)。

結論

その時点で、サーバーの堅固な基盤ができました。今、サーバーに必要なソフトウェアをインストールできます。たとえば、Nginxウェブサーバーをインストールして開始できます。

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