序章
新しいUbuntu18.04サーバーを作成した後、セキュリティを強化し、後で管理しやすくするために、サーバーの初期設定の一部としていくつかの構成手順を実行する必要があります。
このガイドでは、ソフトウェアやサービスのインストールと構成に進む前に、新しいサーバーの強固な基盤を構築するために、早い段階で完了する必要のあるいくつかの手順について説明します。
ステップ1—ルートとしてログインする
新しくインストールされたサーバーには通常、 root アカウントのみが設定されています。これは、サーバーに初めてログインするために使用するアカウントです。
root ユーザーは、非常に幅広い特権を持つ管理ユーザーです。 root アカウントの特権が強化されているため、定期的に使用することは推奨されていません。 これは、 root アカウントに固有の機能の一部が、偶然であっても非常に破壊的な変更を加える機能であるためです。 そのため、通常のシステムユーザーを設定し、このユーザーにsudo
権限を付与して、特定の制限付きで管理コマンドを実行できるようにすることをお勧めします。 次のステップでは、そのようなユーザーを設定します。
開始するには、サーバーにログインする必要があります。 サーバーのパブリックIPアドレスを知っていることを確認してください。 サーバー内で認証用のSSHキーを設定している場合、認証するには、アカウントのパスワードまたはrootユーザーのアカウントのSSH秘密キーのいずれかが必要です。 サーバーにまだログインしていない場合は、 SSH を使用してDropletに接続する方法に関するガイドに従ってください。このガイドでは、このプロセスについて詳しく説明しています。
サーバーにまだ接続していない場合は、次のコマンドを使用してrootユーザーとしてログインします。 コマンドの強調表示された部分をサーバーのパブリックIPアドレスに置き換えてください。
- ssh root@your_server_ip
ホストの信頼性に関する警告が表示された場合は、それを受け入れます。 パスワード認証を使用している場合は、rootパスワードを入力してログインします。 または、パスフレーズで保護されているSSHキーを使用している場合は、セッションごとに初めてキーを使用するときにパスフレーズの入力を求められる場合があります。 さらに、パスワードを使用してサーバーに初めてログインする場合は、rootパスワードを変更するように求められることもあります。
次の手順では、権限を減らした新しいシステムユーザーアカウントを設定し、sudo
を介して管理コマンドを実行するようにこのユーザーを構成します。
ステップ2—新しいユーザーを作成する
root としてログインすると、今後は通常のシステムユーザーとなる新しいユーザーを作成できます。
次の例では、 sammy という名前の新しいユーザーを作成しますが、選択したユーザー名に置き換える必要があります。
- adduser sammy
アカウントのパスワードから始めて、いくつかの質問があります。
強力なパスワードを入力し、必要に応じて、追加情報のいずれかを入力します。 これは必須ではなく、スキップしたい任意のフィールドでENTER
を押すだけです。
次のステップでは、このユーザーにsudo
特権を設定します。 これにより、ユーザーはsudo
プログラムを介してrootユーザーとして管理タスクを実行できるようになります。
ステップ3—管理者権限を付与する
これで、通常の権限を持つ新しいユーザーアカウントができました。 ただし、サーバーの管理、構成ファイルの編集、サーバーの再起動などの管理タスクを実行する必要がある場合があります。
通常のユーザーからログアウトしてrootアカウントとして再度ログインする必要がないように、通常のアカウントに「スーパーユーザー」またはroot特権と呼ばれる権限を設定できます。 これにより、通常のユーザーは、各コマンドの前にsudo
という単語を付けることで、管理者権限でコマンドを実行できるようになります。
これらの特権を新しいユーザーに追加するには、新しいユーザーをsudoグループに追加する必要があります。 Ubuntu 18.04のデフォルトでは、sudoグループに属するユーザーはsudo
コマンドを使用できます。
次のコマンドは、ユーザーがすでに属しているグループのリストにあるsudo
グループを含む、デフォルトのユーザー設定を変更します。 appendを表す-a
引数に注意してください。 このオプションがないと、ユーザーがリンクされている現在のグループがsudo
に置き換えられ、予期しない結果が生じる可能性があります。 -G
引数は、usermod
にユーザーのグループ設定を変更するように指示します。
root として、次のコマンドを実行して、新しいユーザーを sudo グループに追加します(強調表示された単語を新しいユーザーに置き換えます)。
- usermod -aG sudo sammy
これで、システムユーザーが設定されました。 次のステップでは、サーバーの基本的なファイアウォールを構成します。
ステップ4—基本的なファイアウォールの設定
UFW(Uncomplicated Firewall)は、Ubuntuサーバーに付属するファイアウォール構成ツールです。 UFWファイアウォールを使用して、サーバーで特定のサービスへの接続のみが許可されていることを確認できます。
注:サーバーがDigitalOceanで実行されている場合は、UFWファイアウォールの代わりに DigitalOcean CloudFirewallsをオプションで使用できます。 デバッグが困難な可能性のあるルールの競合を回避するために、一度に1つのファイアウォールのみを使用することをお勧めします。
アプリケーションは、インストール時にプロファイルをUFWに登録できます。 これらのプロファイルにより、UFWはアプリケーションごとの設定を名前で管理できます。 今すぐサーバーに接続できるサービスであるOpenSSHには、UFW内に登録されたプロファイルがあります。
次のコマンドを実行して、現在使用可能なすべてのプロファイルのリストを取得します。
- ufw app list
OutputAvailable applications:
OpenSSH
次回ログインできるように、ファイアウォールでSSH接続が許可されていることを確認する必要があります。 次のように入力して、これらの接続を許可できます。
- ufw allow OpenSSH
その後、次の方法でファイアウォールを有効にできます。
- ufw enable
「y
」と入力し、ENTER
を押して続行します。 次のように入力すると、SSH接続が引き続き許可されていることがわかります。
- ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
ファイアウォールは現在SSHを除くすべての接続をブロックしているため、追加のサービスをインストールして構成する場合は、で許容できるトラフィックを許可するようにファイアウォール設定を調整する必要があります。 このガイドでいくつかの一般的なUFW操作を学ぶことができます。
ステップ5—通常のユーザーの外部アクセスを有効にする
日常的に使用する通常のユーザーがいるので、アカウントに直接SSHで接続できることを確認する必要があります。
注:ログインしてsudo
を新しいユーザーとして使用できることを確認するまで、rootとしてログインしたままにすることをお勧めします。 このように、問題が発生した場合は、トラブルシューティングを行い、rootとして必要な変更を加えることができます。 DigitalOcean Dropletを使用していて、 root SSH接続で問題が発生した場合は、DigitalOceanConsoleを使用してDropletにログインできます。
新しいユーザーのSSHアクセスを構成するプロセスは、サーバーのrootアカウントが認証にパスワードまたはSSHキーのどちらを使用するかによって異なります。
ルートアカウントがパスワード認証を使用する場合
パスワードを使用してrootアカウントにログインした場合は、SSHに対してパスワード認証が有効になっていることを意味します。 新しいターミナルセッションを開き、新しいユーザー名でSSHを使用することにより、新しいユーザーアカウントにSSHで接続できます。
- ssh sammy@your_server_ip
通常のユーザーのパスワードを入力すると、ログインします。 管理者権限でコマンドを実行する必要がある場合は、次のように入力する前にsudo
と入力してください。
- sudo command_to_run
sudo
を各セッションで初めて使用するとき(およびその後定期的に)、通常のユーザーパスワードの入力を求められます。
サーバーのセキュリティを強化するために、パスワード認証を使用する代わりにSSHキーを設定することを強くお勧めします。 キーベースの認証を構成する方法については、 Ubuntu18.04でのSSHキーの設定に関するガイドに従ってください。
ルートアカウントがSSHキー認証を使用する場合
SSHキーを使用してrootアカウントにログインした場合、SSHのパスワード認証が無効になっている可能性があります。 正常にログインするには、ローカル公開鍵のコピーを新しいユーザーの~/.ssh/authorized_keys
ファイルに追加する必要があります。
公開鍵はすでにサーバー上のrootアカウントの~/.ssh/authorized_keys
ファイルにあるため、そのファイルとディレクトリ構造を既存のセッションの新しいユーザーアカウントにコピーできます。
正しい所有権と権限でファイルをコピーする最も簡単な方法は、rsync
コマンドを使用することです。 これにより、 rootユーザーの.ssh
ディレクトリがコピーされ、アクセス許可が保持され、ファイル所有者が変更されます。これらはすべて1つのコマンドで実行されます。 次のコマンドの強調表示された部分を、通常のユーザーの名前と一致するように変更してください。
注: rsync
コマンドは、末尾のスラッシュで終わるソースと宛先を、末尾のスラッシュがない場合とは異なる方法で処理します。 以下のrsync
を使用する場合は、ソースディレクトリ(~/.ssh
)に末尾のスラッシュが含まれていないことを確認してください[~/.ssh/
を使用していないことを確認してください])。
コマンドに誤って末尾のスラッシュを追加した場合、rsync
はrootアカウントの~/.ssh
ディレクトリのcontentsを[にコピーします。 ~/.ssh
ディレクトリ構造全体をコピーする代わりに、X161X]ユーザーのホームディレクトリ。 ファイルは間違った場所にあり、SSHはそれらを見つけて使用することができません。
- rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
次に、新しいターミナルセッションを開き、新しいユーザー名でログインしてみます。
- ssh sammy@your_server_ip
認証のためにリモートユーザーのSSHパスワードの入力を求められることなく、新しいユーザーアカウントにログインできるはずです。 SSHキーがキーフレーズで設定されている場合、ターミナルセッションで初めてキーを使用するときに、そのパスワードを入力してSSHキーのロックを解除するように求められる場合があります。
管理者権限でコマンドを実行する必要がある場合は、次のように入力する前にsudo
と入力してください。
- sudo command_to_run
sudo
を各セッションで初めて使用するとき(およびその後定期的に)、通常のユーザーパスワードの入力を求められます。
ここからどこへ行くの?
この時点で、サーバーの強固な基盤ができています。 今すぐサーバーに必要なソフトウェアをインストールできます。
Linuxコマンドについて詳しく知りたい場合は、Linuxコマンドライン入門書を確認してください。 セットアップを拡張するには、 Ubuntu 18.04タグページで、そのディストリビューションに基づくその他のガイドを確認することをお勧めします。