前書き
新しいUbuntu 16.04サーバーを初めて作成するとき、基本的なセットアップの一部として早期に実行する必要があるいくつかの構成手順があります。 これにより、サーバーのセキュリティと使いやすさが向上し、その後のアクションの強固な基盤が得られます。
[[step-one -—- root-login]] ==ステップ1—ルートログイン
サーバーにログインするには、サーバーのパブリックIPアドレスを知る必要があります。 パスワード、または認証用のSSHキーをインストールした場合は、「root」ユーザーのアカウントの秘密キーも必要になります。 サーバーにまだログインしていない場合は、このシリーズの最初のチュートリアルであるHow to Connect to Your Droplet with SSHに従ってください。このチュートリアルでは、このプロセスについて詳しく説明しています。
サーバーにまだ接続していない場合は、先に進み、次のコマンドを使用してroot
ユーザーとしてログインします(強調表示された単語をサーバーのパブリックIPアドレスに置き換えます)。
ssh root@your_server_ip
ホスト認証に関する警告が表示された場合はそれを受け入れ、ルート認証(パスワードまたは秘密キー)を提供して、ログインプロセスを完了します。 パスワードを使用してサーバーに初めてログインする場合は、rootパスワードを変更するように求められます。
ルートについて
rootユーザーは、非常に幅広い特権を持つLinux環境の管理ユーザーです。 rootアカウントの特権が強化されているため、実際には、定期的に使用することはdiscouraged秒です。 これは、ルートアカウントに固有のパワーの一部が、偶然であっても非常に破壊的な変更を加えることができるためです。
次のステップは、日常業務の影響範囲を減らした代替ユーザーアカウントを設定することです。 必要なときに特権を増やす方法を説明します。
[[step-two --- create-a-new-user]] ==ステップ2—新しいユーザーを作成します
root
としてログインすると、これからログインするために使用する新しいユーザーアカウントを追加する準備が整います。
この例では、「sammy」という新しいユーザーを作成しますが、好きなユーザー名に置き換える必要があります。
adduser sammy
アカウントのパスワードから始めて、いくつか質問があります。
強力なパスワードを入力し、必要に応じて追加情報を入力します。 これは必須ではなく、スキップしたい任意のフィールドでENTER
を押すだけです。
[[step-three -—- root-privileges]] ==ステップ3—ルート特権
これで、通常のアカウント特権を持つ新しいユーザーアカウントが作成されました。 ただし、管理タスクを実行する必要がある場合があります。
通常のユーザーからログアウトしてルートアカウントとして再度ログインする必要を回避するために、通常のアカウントに「スーパーユーザー」またはルート権限として知られるものを設定できます。 これにより、通常のユーザーは、各コマンドの前にsudo
という単語を置くことで、管理者権限でコマンドを実行できます。
これらの特権を新しいユーザーに追加するには、新しいユーザーを「sudo」グループに追加する必要があります。 デフォルトでは、Ubuntu 16.04では、「sudo」グループに属するユーザーはsudo
コマンドを使用できます。
root
として、次のコマンドを実行して、新しいユーザーをsudoグループに追加します(強調表示された単語を新しいユーザーに置き換えます)。
usermod -aG sudo sammy
これで、ユーザーはスーパーユーザー権限でコマンドを実行できます! これがどのように機能するかについての詳細は、this sudoers tutorialをチェックしてください。
サーバーのセキュリティを強化する場合は、このチュートリアルの残りの手順に従ってください。
[[step-four --- add-public-key-authentication-recommended]] ==ステップ4—公開鍵認証を追加する(推奨)
サーバーを保護するための次の手順は、新しいユーザーの公開キー認証を設定することです。 これを設定すると、ログインにプライベートSSHキーが必要になるため、サーバーのセキュリティが向上します。
キーペアを生成する
公開キーと秘密キーで構成されるSSHキーペアがまだない場合は、生成する必要があります。 使用するキーがすでにある場合は、Copy the Public Keyステップにスキップしてください。
新しいキーペアを生成するには、local machineの端末で次のコマンドを入力します(つまり、 コンピューター):
ssh-keygen
ローカルユーザーの名前が「localuser」であると仮定すると、次のような出力が表示されます。
ssh-keygen outputGenerating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
Returnキーを押して、このファイル名とパスを受け入れます(または新しい名前を入力します)。
次に、キーを保護するためのパスフレーズの入力を求められます。 パスフレーズを入力するか、パスフレーズを空白のままにすることができます。
Note:パスフレーズを空白のままにすると、パスフレーズを入力しなくても、認証に秘密鍵を使用できるようになります。 パスフレーズを入力する場合、ログインするにはパスフレーズの秘密鍵andの両方が必要になります。 パスフレーズを使用してキーを保護する方が安全ですが、どちらの方法にも用途があり、基本的なパスワード認証よりも安全です。
これにより、localuserのホームディレクトリの.ssh
ディレクトリに秘密鍵id_rsa
と公開鍵id_rsa.pub
が生成されます。 秘密鍵は、サーバーにアクセスするべきではない人と共有しないでください。
公開鍵をコピーする
SSHキーペアを生成したら、公開キーを新しいサーバーにコピーします。 これを行う2つの簡単な方法について説明します。
[。注意]##
Note:Dropletの作成中にSSHキーが選択された場合、ssh-copy-id
メソッドはDigitalOceanでは機能しません。 これは、SSHキーが存在する場合、DigitalOceanがパスワード認証を無効にし、ssh-copy-id
がパスワード認証に依存してキーをコピーするためです。
DigitalOceanを使用していて、ドロップレットの作成中にSSHキーを選択した場合は、代わりにoption 2を使用してください。
オプション1:ssh-copy-idを使用する
ローカルマシンにssh-copy-id
スクリプトがインストールされている場合は、それを使用して、ログイン資格情報を持っているすべてのユーザーに公開鍵をインストールできます。
次のように、キーをインストールするサーバーのユーザーとIPアドレスを指定して、ssh-copy-id
スクリプトを実行します。
ssh-copy-id sammy@your_server_ip
プロンプトでパスワードを入力すると、公開鍵がリモートユーザーの.ssh/authorized_keys
ファイルに追加されます。 これで、対応する秘密鍵を使用してサーバーにログインできます。
オプション2:キーを手動でインストールする
前の手順を使用してSSHキーペアを生成したとすると、local machineの端末で次のコマンドを使用して、公開キー(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キーを使用して新しいリモートユーザーとして認証できるようにするには、ユーザーのホームディレクトリにある特別なファイルに公開キーを追加する必要があります。
On the serverは、rootユーザーとして、次のコマンドを入力して、一時的に新しいユーザーに切り替えます(独自のユーザー名に置き換えます)。
su - sammy
これで、新しいユーザーのホームディレクトリに移動します。
次のコマンドを使用して、.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鍵を使用してユーザーとしてログインできます。
キー認証の仕組みの詳細については、次のチュートリアルをお読みください:How To Configure SSH Key-Based Authentication on a Linux Server。
次に、パスワード認証を無効にしてサーバーのセキュリティを強化する方法を示します。
[[step-five -—- disable-password-authentication-recommended]] ==ステップ5—パスワード認証を無効にする(推奨)
新しいユーザーがSSHキーを使用してログインできるようになったので、パスワードのみの認証を無効にしてサーバーのセキュリティを強化できます。 これにより、サーバーへのSSHアクセスが公開キー認証のみに制限されます。 つまり、コンソールに加えてサーバーにログインする唯一の方法は、インストールされた公開キーとペアになる秘密キーを所有することです。
[.note]#Note:前のセクションのステップ4で推奨されているように、ユーザーに公開鍵をインストールした場合にのみ、パスワード認証を無効にします。 そうしないと、サーバーから自分自身をロックアウトします!
#
サーバーでパスワード認証を無効にするには、次の手順を実行します。
rootまたはyour new sudo userとして、SSHデーモン構成を開きます。
sudo nano /etc/ssh/sshd_config
PasswordAuthentication
を指定する行を見つけ、前の#
を削除してコメントを解除し、その値を「no」に変更します。 変更後、次のようになります。
sshd_config —パスワード認証を無効にする
PasswordAuthentication no
キーのみの認証に重要であり、デフォルトで設定される他の2つの設定を次に示します。 このファイルを以前に変更したことがない場合は、do notで次の設定を変更する必要があります。
sshd_config —重要なデフォルト
PubkeyAuthentication yes
ChallengeResponseAuthentication no
変更が完了したら、前に説明した方法(CTRL-X
、Y
、ENTER
)を使用して、ファイルを保存して閉じます。
これを入力して、SSHデーモンをリロードします。
sudo systemctl reload sshd
パスワード認証が無効になりました。 サーバーはSSHキー認証でのみアクセス可能になりました。
[[step-six -—- test-log-in]] ==ステップ6—テストログイン
ここで、サーバーからログアウトする前に、新しい構成をテストする必要があります。 SSHを介して正常にログインできることを確認するまで、切断しないでください。
local machineの新しいターミナルで、作成した新しいアカウントを使用してサーバーにログインします。 これを行うには、次のコマンドを使用します(ユーザー名とサーバーIPアドレスを置き換えます)。
ssh sammy@your_server_ip
手順4および5で説明したように、ユーザーに公開キー認証を追加した場合、秘密キーが認証として使用されます。 それ以外の場合は、ユーザーのパスワードの入力を求められます。
[.note]#Note about key authentication:パスフレーズを使用してキーペアを作成した場合は、キーのパスフレーズを入力するように求められます。 それ以外の場合、キーペアにパスフレーズがない場合は、パスワードなしでサーバーにログインする必要があります。
#
サーバーに認証が提供されると、新しいユーザーとしてログインします。
ルート権限でコマンドを実行する必要がある場合は、次のように「sudo」と入力することを忘れないでください。
sudo command_to_run
[[step-seven -—- set-up-a-basic-firewall]] ==ステップ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)
追加のサービスをインストールして構成する場合は、ファイアウォールの設定を調整して、受け入れ可能なトラフィックを許可する必要があります。 this guideでいくつかの一般的なUFW操作を学ぶことができます。
ここからどこへ行く?
この時点で、サーバーの強固な基盤ができました。 必要なソフトウェアを今すぐサーバーにインストールできます。