URL: https://www.progressiverobot.com/initial-server-setup-with-ubuntu-20-04-ja/

はじめに

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

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

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

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

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

				
					
[environment local]

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

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

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

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

				
					
ufw app list

				
			
				
					
[secondary_label Output]

Available applications:

 OpenSSH

				
			

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

				
					
ufw allow OpenSSH

				
			

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

				
					
ufw enable

				
			

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

				
					
ufw status

				
			
				
					
[secondary_label Output]

Status: active



To Action From

-- ------ ----

OpenSSH ALLOW Anywhere

OpenSSH (v6) ALLOW Anywhere (v6)

				
			

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

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

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

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

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

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

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

				
					
[environment local]

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を使用します。

				
					
[environment local]

ssh <^>sammy<^>@<^>your_server_ip<^>

				
			

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

				
					
sudo <^>command_to_run<^>

				
			

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

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

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