Ubuntu 20.04での初期サーバーセットアップ

紹介

新しいUbuntu 20.04サーバーを初めて作成するときは、初期設定の一環として重要な構成手順を実行する必要があります。これらの手順により、サーバーのセキュリティと利用性が向上し、その後の作業の堅固な基盤が得られます。

DigitalOcean Dropletを作成すると、新しいDropletに自動的に追加されるUbuntuバージョンを選択できます。私たちの箱から出した解決策でセットアップを簡略化しましょう。

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

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

もしまだサーバーに接続していない場合は、次のコマンドを使用してrootユーザーとしてログインしてください(コマンドの強調表示された部分をサーバーのパブリックIPアドレスに置き換えてください):

  1. ssh root@your_server_ip

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

rootについて

rootユーザーはLinux環境で非常に広範な特権を持つ管理者ユーザーです。 rootアカウントの特権が強化されているため、定期的に使用することは推奨されていません。 これは、rootアカウントが偶然にも非常に破壊的な変更を行うことができるためです。

次のステップは、日常的な使用のために特権を削減した新しいユーザーアカウントを設定することです。 後で、必要な場合に一時的に特権を増やす方法も示します。

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

rootとしてログインすると、新しいユーザーアカウントを追加できます。rootではなく、この新しいアカウントでログインすることになります。

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

  1. adduser sammy

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

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

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

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

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

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

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

  1. usermod -aG sudo sammy

次に、通常のユーザーとしてログインしている場合は、コマンドの前にsudoを入力して、スーパーユーザー権限でそれらを実行できます。

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

Ubuntu 20.04サーバーでは、UFWファイアウォールを使用して特定のサービスへの接続のみを許可できます。このアプリケーションを使用して基本的なファイアウォールを設定できます。

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

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

次のように入力することで、これを確認できます:

  1. ufw app list
Output
Available applications: OpenSSH

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

  1. ufw allow OpenSSH

その後、ファイアウォールを有効にするには、次のように入力します:

  1. ufw enable

yと入力し、ENTERを押して進んでください。SSH接続がまだ許可されていることがわかります:

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

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

Step 5 — 通常のユーザーに対する外部アクセスの有効化

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

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

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

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

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

  1. ssh sammy@your_server_ip

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

  1. sudo command_to_run

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

サーバーのセキュリティを強化するために、パスワード認証の代わりにSSHキーの設定を強くお勧めします。Ubuntu 20.04でSSHキーを設定する方法については、当社のガイドに従ってキーベースの認証を構成してください。

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

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

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

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

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

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

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

今、ローカルマシンで新しいターミナルセッションを開き、新しいユーザー名を使用して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-ubuntu-20-04