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

前書き

新しいUbuntu 16.04サーバーを初めて作成するとき、基本的なセットアップの一部として早期に実行する必要があるいくつかの構成手順があります。 これにより、サーバーのセキュリティと使いやすさが向上し、その後のアクションの強固な基盤が得られます。

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

サーバーにログインするには、サーバーのパブリックIPアドレスを知る必要があります。 パスワード、または認証用のSSHキーをインストールした場合は、「root」ユーザーのアカウントの秘密キーも必要になります。 サーバーにまだログインしていない場合は、このシリーズの最初のチュートリアル(https://www.digitalocean.com/community/tutorials/how-to-connect-to-your-droplet-with-)に従うことをお勧めします。 ssh [SSHでドロップレットに接続する方法]。このプロセスについて詳しく説明しています。

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

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

ルートについて

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

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

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

`+ root`としてログインすると、これからログインするために使用する新しいユーザーアカウントを追加する準備が整います。

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

adduser

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

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

ステップ3-ルート権限

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

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

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

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

usermod -aG sudo

これで、ユーザーはスーパーユーザー権限でコマンドを実行できます! この仕組みの詳細については、https://www.digitalocean.com/community/tutorials/how-to-edit-the-sudoers-file-on-ubuntu-and-centos [このsudoersチュートリアル]をご覧ください。

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

ステップ4-公開キー認証を追加する(推奨)

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

キーペアを生成する

公開キーと秘密キーで構成されるSSHキーペアがまだない場合は、生成する必要があります。 使用するキーが既にある場合は、_公開キーのコピー_ステップに進んでください。

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

ssh-keygen

ローカルユーザーの名前が「localuser」であると仮定すると、次のような出力が表示されます。

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

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

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

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

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

公開鍵をコピーする

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

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

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

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

ssh-copy-id @

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

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

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

cat ~/.ssh/id_rsa.pub

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

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

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

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

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

su -

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

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

mkdir ~/.ssh
chmod 700 ~/.ssh

ここで、テキストエディタで + authorized_keys`という名前のファイルを + .ssh`で開きます。 ファイルを編集するには、 `+ nano +`を使用します。

nano ~/.ssh/authorized_keys

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

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

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

chmod 600 ~/.ssh/authorized_keys

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

exit

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

キー認証の仕組みの詳細については、https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server [How LinuxサーバーでSSHキーベース認証を構成するには]。

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

ステップ5-パスワード認証を無効にする(推奨)

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

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

  • root または your sudo user *として、SSHデーモン構成を開きます。

sudo nano /etc/ssh/sshd_config

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

sshd_config-パスワード認証を無効にする

PasswordAuthentication no

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

sshd_config-重要なデフォルト

PubkeyAuthentication yes
ChallengeResponseAuthentication no

変更が完了したら、前に行った方法( + CTRL-X +、次に + Y +、次に + ENTER +)を使用してファイルを保存して閉じます。

これを入力して、SSHデーモンをリロードします。

sudo systemctl reload sshd

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

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

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

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

ssh @

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

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

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

sudo

ステップ7-基本的なファイアウォールのセットアップ

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

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

これを確認するには、次のように入力します。

sudo ufw app list
OutputAvailable applications:
 OpenSSH

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

sudo ufw allow OpenSSH

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

sudo ufw enable

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

sudo ufw status
OutputStatus: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

追加のサービスをインストールして構成する場合は、ファイアウォール設定を調整して、受け入れ可能なトラフィックを許可する必要があります。 https://www.digitalocean.com/community/tutorials/ufw-essentials-common-firewall-rules-and-commands [このガイド]で、いくつかの一般的なUFW操作を学ぶことができます。

ここからどこへ行く?

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