序章

新しいUbuntu16.04サーバーを最初に作成するときは、基本的なセットアップの一部として早い段階で実行する必要のあるいくつかの構成手順があります。 これにより、サーバーのセキュリティと使いやすさが向上し、後続のアクションの強固な基盤が提供されます。

ステップ1—ルートログイン

サーバーにログインするには、サーバーのパブリックIPアドレスを知っている必要があります。 パスワード、または認証用にSSHキーをインストールした場合は、「root」ユーザーのアカウントの秘密キーも必要になります。 サーバーにまだログインしていない場合は、このシリーズの最初のチュートリアルである SSHを使用してドロップレットに接続する方法に従ってください。このチュートリアルでは、このプロセスについて詳しく説明しています。

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

  1. ssh root@your_server_ip

ホストの信頼性に関する警告が表示された場合はそれを受け入れ、ルート認証(パスワードまたは秘密鍵)を提供して、ログインプロセスを完了します。 パスワードを使用してサーバーに初めてログインする場合は、rootパスワードを変更するように求められます。

ルートについて

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

次のステップは、日常業務への影響範囲を減らした代替ユーザーアカウントを設定することです。 必要なときに特権を増やす方法を説明します。

ステップ2—新しいユーザーを作成する

rootとしてログインすると、今後ログインに使用する新しいユーザーアカウントを追加する準備が整います。

この例では、「sammy」という新しいユーザーを作成しますが、次のようなユーザー名に置き換える必要があります。

  1. adduser sammy

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

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

ステップ3—ルート権限

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

通常のユーザーからログアウトしてrootアカウントとして再度ログインする必要がないように、通常のアカウントに「スーパーユーザー」またはroot権限と呼ばれるものを設定できます。 これにより、通常のユーザーは、各コマンドの前にsudoという単語を置くことで、管理者権限でコマンドを実行できるようになります。

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

rootとして、次のコマンドを実行して、新しいユーザーを sudo グループに追加します(強調表示された単語を新しいユーザーに置き換えます)。

  1. usermod -aG sudo sammy

これで、ユーザーはスーパーユーザー権限でコマンドを実行できます。 これがどのように機能するかについての詳細は、このsudoersチュートリアルをチェックしてください。

サーバーのセキュリティを強化する場合は、このチュートリアルの残りの手順に従ってください。

サーバーを保護するための次のステップは、新しいユーザーの公開鍵認証を設定することです。 これを設定すると、ログインに秘密のSSHキーが必要になるため、サーバーのセキュリティが向上します。

キーペアを生成する

公開鍵と秘密鍵で構成されるSSH鍵ペアをまだ持っていない場合は、生成する必要があります。 使用する鍵がすでにある場合は、公開鍵のコピーの手順に進んでください。

新しいキーペアを生成するには、ローカルマシンの端末で次のコマンドを入力します(つまり、 お使いのコンピューター):

  1. ssh-keygen

ローカルユーザーが「localuser」と呼ばれるとすると、次のような出力が表示されます。

ssh-keygen output
Generating public/private rsa key pair. Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):

Returnキーを押して、このファイル名とパスを受け入れます(または新しい名前を入力します)。

次に、キーを保護するためのパスフレーズの入力を求められます。 パスフレーズを入力するか、パスフレーズを空白のままにすることができます。

注:パスフレーズを空白のままにすると、パスフレーズを入力しなくても、認証に秘密鍵を使用できるようになります。 パスフレーズを入力する場合、ログインするには秘密鍵の両方のパスフレーズが必要になります。 パスフレーズを使用してキーを保護する方が安全ですが、どちらの方法にも用途があり、基本的なパスワード認証よりも安全です。

これにより、localuserのホームディレクトリの.sshディレクトリに秘密鍵id_rsaと公開鍵id_rsa.pubが生成されます。 サーバーにアクセスできない人と秘密鍵を共有しないでください。

公開鍵をコピーする

SSHキーペアを生成した後、公開キーを新しいサーバーにコピーする必要があります。 これを行う2つの簡単な方法について説明します。

:ドロップレットの作成中にSSHキーが選択された場合、ssh-copy-idメソッドはDigitalOceanでは機能しません。 これは、SSHキーが存在する場合、DigitalOceanがパスワード認証を無効にし、ssh-copy-idがパスワード認証に依存してキーをコピーするためです。

DigitalOceanを使用していて、ドロップレットの作成中にSSHキーを選択した場合は、代わりにオプション2を使用してください。

オプション1:ssh-copy-idを使用する

ローカルマシンにssh-copy-idスクリプトがインストールされている場合は、それを使用して、ログイン資格情報を持っているすべてのユーザーに公開鍵をインストールできます。

次のように、キーをインストールするサーバーのユーザーとIPアドレスを指定して、ssh-copy-idスクリプトを実行します。

  1. ssh-copy-id sammy@your_server_ip

プロンプトでパスワードを入力すると、公開鍵がリモートユーザーの.ssh/authorized_keysファイルに追加されます。 これで、対応する秘密鍵を使用してサーバーにログインできます。

オプション2:キーを手動でインストールする

前の手順を使用してSSHキーペアを生成したとすると、ローカルマシンのターミナルで次のコマンドを使用して公開キー(id_rsa.pub)を出力します。

  1. cat ~/.ssh/id_rsa.pub

これにより、公開SSHキーが出力されます。これは次のようになります。

id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf [email protected]

公開鍵を選択し、クリップボードにコピーします。

SSHキーを使用して新しいリモートユーザーとして認証できるようにするには、ユーザーのホームディレクトリにある特別なファイルに公開キーを追加する必要があります。

サーバーで、 root ユーザーとして、次のコマンドを入力して、一時的に新しいユーザーに切り替えます(独自のユーザー名に置き換えます)。

  1. su - sammy

これで、新しいユーザーのホームディレクトリに移動します。

.sshという名前の新しいディレクトリを作成し、次のコマンドを使用してそのアクセス許可を制限します。

  1. mkdir ~/.ssh
  2. chmod 700 ~/.ssh

次に、.sshauthorized_keysというファイルをテキストエディタで開きます。 nanoを使用してファイルを編集します。

  1. nano ~/.ssh/authorized_keys

次に、公開鍵(クリップボードにあるはずです)をエディターに貼り付けて挿入します。

CTRL-xを押してファイルを終了し、yを押して変更を保存し、ENTERを押してファイル名を確認します。

次に、次のコマンドを使用して、authorized_keysファイルのアクセス許可を制限します。

  1. chmod 600 ~/.ssh/authorized_keys

次のコマンドonceを入力して、rootユーザーに戻ります。

  1. exit

これで公開鍵がインストールされ、SSH鍵を使用してユーザーとしてログインできます。

キー認証の仕組みの詳細については、次のチュートリアルをお読みください:LinuxサーバーでSSHキーベースの認証を構成する方法

次に、パスワード認証を無効にしてサーバーのセキュリティを強化する方法を説明します。

新しいユーザーがSSHキーを使用してログインできるようになったので、パスワードのみの認証を無効にすることでサーバーのセキュリティを強化できます。 これを行うと、サーバーへのSSHアクセスが公開鍵認証のみに制限されます。 つまり、(コンソールを除いて)サーバーにログインする唯一の方法は、インストールされた公開鍵とペアになる秘密鍵を所有することです。

注:前のセクションの手順4で推奨されているように、ユーザーに公開鍵をインストールした場合にのみ、パスワード認証を無効にします。 そうしないと、サーバーから自分を締め出すことになります。

サーバーでパスワード認証を無効にするには、次の手順に従います。

root または新しいsudoユーザーとして、SSHデーモン構成を開きます。

  1. sudo nano /etc/ssh/sshd_config

PasswordAuthenticationを指定する行を見つけ、前の#を削除してコメントを解除し、その値を「no」に変更します。 変更を加えると、次のようになります。

sshd_config —パスワード認証を無効にします
PasswordAuthentication no

キーのみの認証に重要で、デフォルトで設定されている他の2つの設定を次に示します。 このファイルを以前に変更したことがない場合は、次の設定を変更する必要はありません

sshd_config —重要なデフォルト
PubkeyAuthentication yes
ChallengeResponseAuthentication no

変更が完了したら、前に説明した方法(CTRL-XYENTER)を使用して、ファイルを保存して閉じます。

SSHデーモンをリロードするには、次のように入力します。

  1. sudo systemctl reload sshd

パスワード認証が無効になりました。 サーバーには、SSHキー認証でのみアクセスできるようになりました。

ステップ6—ログインのテスト

ここで、サーバーからログアウトする前に、新しい構成をテストする必要があります。 SSH経由で正常にログインできることを確認するまで、切断しないでください。

ローカルマシンの新しい端末で、作成した新しいアカウントを使用してサーバーにログインします。 これを行うには、次のコマンドを使用します(ユーザー名とサーバーのIPアドレスを置き換えます)。

  1. ssh sammy@your_server_ip

手順4と5で説明したように、公開鍵認証をユーザーに追加した場合は、秘密鍵が認証として使用されます。 それ以外の場合は、ユーザーのパスワードの入力を求められます。

キー認証に関する注意:パスフレーズを使用してキーペアを作成した場合は、キーのパスフレーズを入力するように求められます。 それ以外の場合、キーペアにパスフレーズがない場合は、パスワードなしでサーバーにログインする必要があります。

サーバーに認証が提供されると、新しいユーザーとしてログインします。

root権限でコマンドを実行する必要がある場合は、次のようにその前に「sudo」と入力することを忘れないでください。

  1. sudo command_to_run

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

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

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

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

  1. sudo ufw app list
Output
Available applications: OpenSSH

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

  1. sudo ufw allow OpenSSH

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

  1. sudo ufw enable

「y」と入力し、Enterキーを押して続行します。 次のように入力すると、SSH接続が引き続き許可されていることがわかります。

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

追加のサービスをインストールして構成する場合は、で許容できるトラフィックを許可するようにファイアウォール設定を調整する必要があります。 このガイドでいくつかの一般的なUFW操作を学ぶことができます。

ここからどこへ行くの?

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