CentOS7を使用したサーバーの初期セットアップ
序章
新しいサーバーを最初に作成するときは、基本的なセットアップの一部として、早い段階で実行する必要のあるいくつかの構成手順があります。 これにより、サーバーのセキュリティと使いやすさが向上し、後続のアクションの強固な基盤が提供されます。
ステップ1—ルートログイン
サーバーにログインするには、サーバーのパブリックIPアドレスと「root」ユーザーのアカウントのパスワードを知っている必要があります。 サーバーにまだログインしていない場合は、このシリーズの最初のチュートリアルである SSHを使用してドロップレットに接続する方法に従ってください。このチュートリアルでは、このプロセスについて詳しく説明しています。
サーバーにまだ接続していない場合は、次のコマンドを使用してroot
ユーザーとしてログインします(強調表示された単語をサーバーのパブリックIPアドレスに置き換えます)。
- ssh root@SERVER_IP_ADDRESS
ホストの信頼性に関する警告が表示された場合はそれを受け入れ、ルート認証(パスワードまたは秘密鍵)を提供して、ログインプロセスを完了します。 パスワードを使用してサーバーに初めてログインする場合は、rootパスワードを変更するように求められます。
ルートについて
rootユーザーは、非常に幅広い特権を持つLinux環境の管理ユーザーです。 rootアカウントの特権が強化されているため、実際には、定期的に使用することを推奨されていません。 これは、rootアカウントに固有の能力の一部が、偶然であっても非常に破壊的な変更を加える能力であるためです。
次のステップは、日常業務への影響範囲を減らした代替ユーザーアカウントを設定することです。 必要なときに特権を増やす方法を説明します。
ステップ2—新しいユーザーを作成する
root
としてログインすると、今後ログインに使用する新しいユーザーアカウントを追加する準備が整います。
この例では、「デモ」という新しいユーザーを作成しますが、次のようなユーザー名に置き換える必要があります。
- adduser demo
次に、新しいユーザーにパスワードを割り当てます(ここでも、「デモ」を作成したばかりのユーザーに置き換えます)。
- passwd demo
強力なパスワードを入力し、もう一度繰り返して確認します。
ステップ3—ルート権限
これで、通常のアカウント権限を持つ新しいユーザーアカウントができました。 ただし、管理タスクを実行する必要がある場合があります。
通常のユーザーからログアウトしてrootアカウントとして再度ログインする必要がないように、通常のアカウントに「スーパーユーザー」またはroot権限と呼ばれるものを設定できます。 これにより、通常のユーザーは、各コマンドの前にsudo
という単語を置くことで、管理者権限でコマンドを実行できるようになります。
これらの特権を新しいユーザーに追加するには、新しいユーザーを「wheel」グループに追加する必要があります。 デフォルトでは、CentOS 7では、「wheel」グループに属するユーザーはsudo
コマンドを使用できます。
root
として、次のコマンドを実行して、新しいユーザーを Wheel グループに追加します(強調表示された単語を新しいユーザーに置き換えます)。
- gpasswd -a demo wheel
これで、ユーザーはスーパーユーザー権限でコマンドを実行できます。 これがどのように機能するかの詳細については、sudoersチュートリアルを確認してください。
ステップ4—公開鍵認証を追加する(推奨)
サーバーを保護するための次のステップは、新しいユーザーの公開鍵認証を設定することです。 これを設定すると、ログインに秘密のSSHキーが必要になるため、サーバーのセキュリティが向上します。
キーペアを生成する
公開鍵と秘密鍵で構成されるSSH鍵ペアをまだ持っていない場合は、生成する必要があります。 使用する鍵がすでにある場合は、公開鍵のコピーの手順に進んでください。
新しいキーペアを生成するには、ローカルマシンの端末で次のコマンドを入力します。
- 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キーを押して、このファイル名とパスを受け入れます(または新しい名前を入力します)。
次に、キーを保護するためのパスフレーズの入力を求められます。 パスフレーズを入力するか、パスフレーズを空白のままにすることができます。
注:パスフレーズを空白のままにすると、パスフレーズを入力しなくても、認証に秘密鍵を使用できるようになります。 パスフレーズを入力する場合、ログインするには秘密鍵との両方のパスフレーズが必要になります。 パスフレーズを使用してキーを保護する方が安全ですが、どちらの方法にも用途があり、基本的なパスワード認証よりも安全です。
これにより、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
スクリプトを実行します。
- ssh-copy-id demo@SERVER_IP_ADDRESS
プロンプトでパスワードを入力すると、公開鍵がリモートユーザーの.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 - demo
これで、新しいユーザーのホームディレクトリに移動します。
.ssh
という名前の新しいディレクトリを作成し、次のコマンドを使用してそのアクセス許可を制限します。
- mkdir .ssh
- chmod 700 .ssh
次に、.sshでauthorized_keys
というファイルをテキストエディタで開きます。 viを使用してファイルを編集します。
- vi .ssh/authorized_keys
i
を押して挿入モードに入り、エディターに貼り付けて公開鍵(クリップボードにあるはずです)を入力します。 次に、ESC
を押して、挿入モードを終了します。
:x
、ENTER
の順に入力して、ファイルを保存して終了します。
次に、次のコマンドを使用して、authorized_keysファイルのアクセス許可を制限します。
- chmod 600 .ssh/authorized_keys
次のコマンドonceを入力して、root
ユーザーに戻ります。
- exit
これで、認証として秘密鍵を使用して、新しいユーザーとしてSSHログインできます。
キー認証の仕組みの詳細については、次のチュートリアルをお読みください:LinuxサーバーでSSHキーベースの認証を構成する方法。
ステップ5—SSHデーモンを構成する
新しいアカウントができたので、SSHデーモン構成(リモートログインを可能にするプログラム)を変更して、 root アカウントへのリモートSSHアクセスを禁止することにより、サーバーを少し保護できます。
ルートとしてテキストエディタを使用して構成ファイルを開くことから始めます。
- vi /etc/ssh/sshd_config
ここでは、SSHを介したrootログインを無効にするオプションがあります。 通常のユーザーアカウントを介してサーバーにアクセスし、必要に応じて権限を昇格できるようになったため、これは通常、より安全な設定です。
リモートルートログインを無効にするには、次のような行を見つける必要があります。
#PermitRootLogin yes
ヒント:この行を検索するには、/PermitRoot
と入力し、ENTER
を押します。 これにより、カーソルがその行の「P」文字に移動します。
「#」記号を削除して、行のコメントを解除します(Shift-x
を押します)。
次に、c
を押して、カーソルを「はい」に移動します。
次に、cw
を押してから「いいえ」と入力して、「はい」を置き換えます。 編集が終わったらEscape
を押します。 次のようになります。
PermitRootLogin no
すべてのサーバーでリモートルートログインを無効にすることを強くお勧めします。
:x
、ENTER
の順に入力して、ファイルを保存して終了します。
SSHをリロード
変更を加えたので、SSHサービスを再起動して、新しい構成を使用できるようにする必要があります。
SSHを再起動するには、次のように入力します。
- systemctl reload sshd
ここで、サーバーからログアウトする前に、新しい構成をテストする必要があります。 新しい接続が正常に確立できることを確認できるまで、切断したくありません。
newターミナルウィンドウを開きます。 新しいウィンドウで、サーバーへの新しい接続を開始する必要があります。 今回は、rootアカウントを使用する代わりに、作成した新しいアカウントを使用します。
上記で構成したサーバーの場合、このコマンドを使用して接続します。 適切な場合は、独自の情報に置き換えてください。
- ssh demo@SERVER_IP_ADDRESS
注: PuTTYを使用してサーバーに接続している場合は、サーバーの現在の構成に一致するようにセッションのポート番号を更新してください。
構成した新しいユーザーのパスワードの入力を求められます。 その後、新しいユーザーとしてログインします。
root権限でコマンドを実行する必要がある場合は、次のようにその前に「sudo」と入力することを忘れないでください。
- sudo command_to_run
すべてが順調な場合は、次のように入力してセッションを終了できます。
- exit
ここからどこへ行くの?
この時点で、サーバーの強固な基盤ができています。 今すぐサーバーに必要なソフトウェアをインストールできます。
サーバーで何をしたいかわからない場合は、このシリーズの次のチュートリアルで新しいCentOS7サーバーの追加の推奨手順を確認してください。 fail2ban
を有効にして、ブルートフォース攻撃、基本的なファイアウォール設定、NTP、およびスワップファイルの効果を減らすなどのことをカバーしています。 また、一般的なWebアプリケーションのセットアップ方法を示すチュートリアルへのリンクも提供します。
探索したいだけの場合は、コミュニティの残りの部分を見て、他のチュートリアルを見つけてください。 人気のあるアイデアのいくつかは、LAMPスタックまたはLEMPスタックを構成することです。これにより、Webサイトをホストできるようになります。