Rocky Linux 9を使用した初期サーバーセットアップ
はじめに
Rocky Linux 9サーバーを新しく作成する際には、初期設定の一環としていくつかの構成手順を早めに行う必要があります。これにより、サーバーのセキュリティと利便性が向上し、堅固な基盤が築かれます。
ステップ1 – Rootとしてログインする
サーバーにログインするためには、サーバーの公開IPアドレスを知る必要があります。また、パスワードが必要です。もしくは、認証のためにSSHキーをインストールした場合は、ルートユーザーアカウントのプライベートキーが必要です。サーバーにログインしたことがない場合は、vServerをSSHで接続する方法に関するドキュメンテーションに従うことをお勧めします。このプロセスについて詳しく説明されています。
すでにサーバーに接続されていない場合、以下のコマンドを使用して今すぐルートユーザーとしてログインしてください(コマンドのハイライトされた部分をサーバーの公共IPアドレスで置き換えてください)。
- ssh root@your_server_ip
以下の内容を日本語で言い換えます。
もしホストの信頼性に関する警告が表示された場合は、それを受け入れてください。パスワード認証を使用している場合は、ルートパスワードを提供してログインしてください。パスフレーズで保護されたSSHキーを使用している場合は、セッションごとにキーを使用する初めての際にパスフレーズの入力を求められる場合があります。パスワードでサーバーに初めてログインする場合、ルートパスワードの変更を求められることもあります。
ルートについて
ルートユーザーはLinux環境における管理者ユーザーであり、非常に広範な特権を持っています。ルートアカウントの特権が高いため、通常の使用は推奨されません。なぜなら、ルートアカウントには事故でも非常に破壊的な変更を行う能力があるからです。
そのため、次のステップは、日常の業務において影響を抑えた代替ユーザーアカウントを設定することです。このアカウントは必要な場合には依然として特権を取得することができます。
ステップ2 – 新しいユーザーの作成
ルートとしてログインした後、今後ログインに使用する新しいユーザーアカウントを作成することができます。
この例では、新しいユーザー「Sammy」という名前を作成していますが、任意のユーザー名に置き換える必要があります。
- adduser sammy
次に、sammyユーザーの強力なパスワードを設定してください。
- passwd sammy
パスワードを2回入力するように促されます。それを行うと、ユーザーが使用可能な状態になりますが、まずこのユーザーにsudoコマンドの追加の特権を与えます。これにより、必要な時にはrootとしてコマンドを実行することができます。
第3ステップ — 管理者特権の付与
今、通常のアカウント権限を持った新しいユーザーアカウントを持っています。ただし、時々管理タスクを実行する必要があることもあります。
「スーパーユーザー」またはルートアカウントにログアウトして、通常のユーザーに戻る手間を避けるために、通常のアカウントに「スーパーユーザー」またはルートの権限を設定することができます。これにより、通常のユーザーは各コマンドの前にsudoという単語を入れることで管理者権限でコマンドを実行できるようになります。
新しいユーザーにこれらの特権を追加するには、新しいユーザーをwheelグループに追加する必要があります。Rocky Linux 9ではデフォルトで、wheelグループに所属するユーザーはsudoコマンドの使用が許可されています。
ルート権限で、次のコマンドを実行して新しいユーザーをホイールグループに追加します(ハイライト部分を新しいユーザー名で置き換えてください)。
- usermod -aG wheel sammy
いま、通常のユーザーとしてログインしている場合、コマンドの前にsudoを入力することで、スーパーユーザー権限で操作を実行することができます。
ステップ4:ファイアウォールの設定
ファイアウォールは、サーバーのセキュリティの基本レベルを提供します。これらのアプリケーションは、あなたが明示的に承認したポート/サービスを除いて、サーバー上のすべてのポートへのトラフィックを拒否する役割を担っています。Rocky Linuxには、この機能を実行するためのfirewalldというサービスがあります。ファイアウォールポリシーを設定するために、firewall-cmdというツールが使用されます。
Note
最初にFirewalldをインストールしてください。
- dnf install firewalld -y
デフォルトのfirewalldの設定では、ssh接続を許可しているため、すぐにファイアウォールをオンにすることができます。
- systemctl start firewalld
サービスの状態を確認して、起動していることを確認してください。
- systemctl status firewalld
● 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
サーバーが再起動された場合は、デフォルトで起動されます。これはアクティブかつ有効化されていることに注意してください。
サービスが稼働しているので、ファイアウォールのポリシー情報を取得および設定するために、firewall-cmdユーティリティを使用することができます。
最初に、既に許可されているサービスをリストアップしましょう。 (Saisho ni, sudeni kyoka sarete iru saabisu o risuto appu shimashou.)
- firewall-cmd –permanent –list-all
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:
名前で有効にできる追加サービスを確認するには、以下を入力してください。
- firewall-cmd –get-services
許可されるべきサービスを追加するには、–add-serviceフラグを使用してください。 (Kyoka sareru beki saabisu o tsuika suru ni wa, –add-service furagu o shiyou shite kudasai.)
- firewall-cmd –permanent –add-service=http
以下のように日本語で言い換えます(一つのオプションのみ):
これにより、HTTPサービスが追加され、ポート80への着信TCPトラフィックが許可されます。ファイアウォールの再読み込み後、設定が更新されます。
- firewall-cmd –reload
後で設定する追加サービスに対して、ファイアウォールを明示的に開放する必要があることを忘れないでください。
ステップ5 — 通常のユーザーに対する外部アクセスの有効化
日常的に使うための通常の非ルートユーザーを持っているので、それを使用してサーバーにSSHできるようにする必要があります。
Note
新しいユーザーのSSHアクセスの設定手順は、サーバーのルートアカウントがパスワードかSSHキーで認証されているかによって異なります。
ルートアカウントがパスワード認証を使用している場合
もしパスワードでルートアカウントにログインした場合、SSHのパスワード認証は有効になります。新しいユーザーアカウントにSSHするには、新しいターミナルセッションを開き、新しいユーザー名を使用してSSHを行ってください。
- ssh sammy@your_server_ip
通常のユーザーパスワードを入力すると、ログインされます。管理者特権でコマンドを実行する必要がある場合は、sudoを先頭に追加して入力してください。
- sudo command_to_run
各セッションで初めてsudoを使用する際、お使いのユーザーパスワードを入力してください(その後は定期的に求められます)。
サーバーのセキュリティを強化するために、パスワード認証の代わりにSSHキーを設定する必要があります。Rocky Linux 9でSSHキーに基づく認証を設定する方法については、このガイドに従ってください。
もしルートアカウントがSSH鍵認証を使用している場合
もしSSHキーを使用してルートアカウントにログインした場合、SSHのパスワード認証は無効になっています。新しいユーザーの「~/.ssh/authorized_keys」ファイルに公開鍵のコピーを追加する必要があります。これにより、正常にログインすることができます。
新しいユーザーアカウントに、サーバーのルートアカウントの「~/.ssh/authorized_keys」ファイルに既に公開鍵があるので、そのファイルとディレクトリ構造をコピーすることができます。
適切な所有権とアクセス許可を持つファイルをコピーする最も直接的な方法は、rsyncコマンドを使用することです。これにより、ルートユーザーの.sshディレクトリがコピーされ、アクセス許可が保持され、ファイルの所有者が変更されます。以下のコマンドのハイライト部分を通常のユーザー名に変更することを忘れずに行ってください。
Note
コマンドに誤って末尾にスラッシュを追加してしまった場合、rsyncはルートアカウントの~/.sshディレクトリの内容をsudoユーザーのホームディレクトリにコピーし、~/.sshディレクトリ全体をコピーする代わりに間違った場所にファイルをコピーしてしまいます。ファイルは正しい場所になく、SSHはそれらを見つけて使用することができません。
- rsync –archive –chown=sammy:sammy ~/.ssh /home/sammy
さて、ローカルマシンの新しいターミナルに戻り、非ルートユーザーで新しいSSHセッションを開きます。
- ssh sammy@your_server_ip
新しいユーザーアカウントにはパスワードを使わずにログインする必要があります。また、管理者特権でコマンドを実行する場合は、sudoを前に入力してください。
- sudo command_to_run
各セッションの最初のsudo利用時およびその後の定期的な利用時には、通常のユーザーパスワードが求められます。
結論
この時点で、サーバーの堅固な基盤ができました。今、必要なソフトウェアをサーバーにインストールできます。例えば、Nginxウェブサーバーのインストールから始めることができます。