Tutorial

Ubuntu 20.04を使用するための初期サーバーセットアップ

UbuntuGetting StartedSecurityInitial Server SetupUbuntu 20.04

はじめに

最初に新しいUbuntu 20.04サーバを作成するときは、基本的なセットアップの一部として、いくつかの重要な設定手順を実行する必要があります。これらの手順を踏むことで、サーバーのセキュリティと使い勝手が向上し、その後のアクションに必要な強固な基盤を手にすることができます。

ステップ1 — rootとしてログインする

サーバーにログインするには、サーバーのパブリックIPアドレスを知る必要があります。また、パスワード、あるいは認証用のSSHの鍵をインストールしている場合には、rootユーザーアカウントのプライベートキーが必要になります。まだサーバーにログインしていない場合は、このプロセスを詳細に説明しているSSHとDropletsに接続する方法のガイドを参照してください。

サーバーに接続していない場合は、以下のコマンドを使用してrootユーザーとしてログインしてください(コマンドのハイライト部分をサーバーのパブリックIPアドレスに置き換えてください)。

  • ssh root@your_server_ip

ホスト認証に関する警告が表示された場合は承認します。パスワード認証を使用している場合は、ログインするためのrootパスワードを入力します。パスフレーズで保護されたSSHの鍵を使用している場合は、セッションごとにキーを初めて使用するときにパスフレーズの入力を促す画面が表示される場合があります。パスワードを使用してサーバーに初めてログインする場合は、rootパスワードの変更を求められる場合があります。

rootについて

rootユーザーとは、Linux環境では非常に幅広い権限を持つ管理者ユーザーです。rootアカウントの権限が強化されているため、定期的に使用することはお勧めできません。これは、rootアカウントに固有の機能の一部が、たとえ偶然であっても、非常に壊滅的な変化をもたらす能力があるためです。

次のステップは、日常的に使用するために権限を限定した新しいユーザーアカウントを設定します。後で、必要なときにのみ権限を増やす方法を確認していきましょう。

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

rootとしてログインすると、新しいユーザーアカウントを追加する準備が整います。これからは、rootではなく、この新しいアカウントでログインします。

この例では、sammyと呼ばれる新しいユーザーを作成しますが、任意のユーザー名に置き換える必要があります。

  • adduser sammy

いくつか質問されますが、アカウントのパスワードから始めます。

強力なパスワードを入力し、必要に応じて追加情報を入力します。これは必須ではないので、スキップしたい任意のフィールドでENTERキーを押すことができます。

ステップ3 — 管理権限を付与する

これで、通常のアカウント権限を持つ新しいユーザーアカウントができました。ただし、管理作業を行う必要がある場合があります。

通常のユーザーからログアウトしてrootアカウントとしてログインし直す必要を避けるために、通常のアカウントにスーパーユーザーまたはroot権限として知られているものを設定することができます。これにより、通常のユーザーが各コマンドの前にsudoという単語を入力して管理権限でコマンドを実行することができます。

新しいユーザーにこれらの権限を追加するには、sudoグループにそのユーザーを追加する必要があります。デフォルトでは、Ubuntu 20.04で、sudoグループのメンバーであるユーザーはsudoコマンドの使用が許可されています。

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

  • usermod -aG sudo sammy

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

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

Ubuntu 20.04サーバーは、UFWファイアウォールを使用して、特定のサービスへの接続のみが許可されていることを確認できます。このアプリケーションを使用して、基本的なファイアウォールを非常に簡単に設定することができます。

注:サーバーがDigitalOcean上で実行している場合は、UFWファイアウォールの代わりに、DigitalOcean Cloud Firewallsを使用できます。デバッグが困難になる可能性のある矛盾したルールを避けるために、一度に一つのファイアウォールだけを使用することをお勧めします。

アプリケーションはインストール時に、UFWでプロファイルを登録できます。これらのプロファイルにより、UFWはこれらのアプリケーションを名前で管理できます。現在、サーバーへの接続を実現するサービスであるOpenSSHのプロファイルはUFWに登録されています。

次のように入力すれば、これを確認できます。

  • ufw app list
Output
Available applications: OpenSSH

次回ログインできるように、ファイアウォールがSSH接続を許可していることを確認する必要があります。次のように入力して、これらの接続を許可できます。

  • ufw allow OpenSSH

その後、次のように入力してファイアウォールを有効にすることができます。

  • ufw enable

yと入力してから、ENTERキーを押して続行します。次のように入力して、SSH接続がまだ許可されていることを確認できます。

  • ufw status
Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)

現在、ファイアウォールがSSH以外のすべての接続をブロックしているため、追加サービスをインストールして設定する場合は、ファイアウォールの設定を調整してトラフィックを許可する必要があります。UFWエッセンシャルガイドで、一般的なUFWの操作を学習することができます。

ステップ5 — 通常ユーザーによる外部アクセスを有効にする

日常的に利用する通常ユーザーが存在するため、直接アカウントにSSHできるようにする必要があります。

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

新しいユーザーにSSHアクセス権を設定するプロセスは、サーバーのrootアカウントが認証にパスワードまたはSSHの鍵を使用しているかどうかによります。

rootアカウントがパスワード認証を使用している場合

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

  • ssh sammy@your_server_ip

通常ユーザーのパスワードを入力すると、ログインします。管理者権限でコマンドを実行する必要がある場合は、次のように実行前にsudoと入力することを覚えておきましょう。

  • sudo command_to_run

セッションごとに初めてsudoを使用する場合、通常ユーザーのパスワードが必要になります(以降は定期的に必要になります)。

サーバーのセキュリティを強化するには、パスワード認証を使用せずに、SSHの鍵をセットアップすることを強くお勧めします。鍵ベースの認証の設定方法については、Ubuntu 20.04でSSHキーを設定するガイドに従ってください。

rootアカウントがSSHの鍵認証を使用している場合

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

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

正しい所有権と許可によりファイルをコピーする最も簡単な方法はrsyncコマンドです。これにより、rootユーザーの.sshディレクトリをコピーし、権限を保存し、ファイル所有者をすべて単一のコマンドで変更します。以下のコマンドのハイライト部分を通常のユーザ名と一致するように変更してください。

注: rsyncコマンドは、末尾のスラッシュで終わる同期元と同期先を、末尾のスラッシュのない同期元と同期先とは異なる方法で扱います。以下のrsyncを使用する場合は、ソースディレクトリ (~/.ssh) に末尾のスラッシュが含まれていないことを確認してください ( ~/.ssh/ を使用していないことを確認してください)。

コマンドに誤って末尾のスラッシュを追加してしまった場合、rsyncrootアカウントの ~/.ssh ディレクトリの内容を、 ~/.ssh ディレクトリ構造全体をコピーするのではなく、sudoユーザーのホームディレクトリにコピーします。ファイルが間違った場所になってしまい、SSHでは検索や使用ができなくなってしまいます。

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

これで、ローカルマシンで新しいターミナルセッションを開き、新しいユーザー名でSSHを使用します。

  • ssh sammy@your_server_ip

パスワードを使用せずに、新しいユーザーアカウントにログインする必要があります。管理者権限でコマンドを実行する必要がある場合は、次のように実行前にsudoと入力することを覚えておきましょう。

  • sudo command_to_run

セッションごとに初めてsudoを使用する場合、通常ユーザーのパスワードが必要になります(以降は定期的に必要になります)。

この次はどうすればよいのでしょうか?

この時点で、サーバーの基盤は強固になっています。これでサーバーに必要なソフトウェアをインストールすることができます。

Creative Commons License