前書き

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

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

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

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

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

ルートについて

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

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

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

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

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

adduser

次に、新しいユーザーにパスワードを割り当てます(ここでも、作成したユーザーを「デモ」に置き換えます)。

passwd

強力なパスワードを入力し、確認のためにもう一度繰り返します。

ステップ3-ルート権限

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

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

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

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

gpasswd -a  wheel

これで、ユーザーはスーパーユーザー権限でコマンドを実行できます! この仕組みの詳細については、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

次に、テキストエディタで_.ssh_にある「+ authorized_keys +」というファイルを開きます。 _vi_を使用してファイルを編集します。

vi .ssh/authorized_keys

`+ i `を押して挿入モードに入り、エディターに貼り付けて公開キー(クリップボードにあるはずです)を入力します。 挿入モードを終了するには、「 ESC +」を押します。

ファイルを保存して終了するには、「:x +」、次に「 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 *アカウントへのリモートSSHアクセスを禁止できます。

ルートとしてテキストエディタで設定ファイルを開くことから始めます。

vi /etc/ssh/sshd_config

ここでは、SSHを介したルートログインを無効にするオプションがあります。 これは、通常のユーザーアカウントを介してサーバーにアクセスし、必要に応じて特権を昇格できるようになったため、通常はより安全な設定です。

リモートルートログインを無効にするには、次のような行を見つける必要があります。

/ etc / ssh / sshd_config(前)

#PermitRootLogin yes

ヒント:この行を検索するには、「+ / Permit Root」と入力してから「+ ENTER」を押します。 これにより、カーソルがその行の「P」文字に移動します。

「#」記号を削除して行のコメントを解除します( `+ Shift-x +`を押します)。

次に、 `+ c +`を押してカーソルを「はい」に移動します。

「+ cw 」を押して「yes」を置き換え、「no」と入力します。 編集が完了したら、「 Escape +」を押します。 これは次のようになります。

/ etc / ssh / sshd_config(後)

PermitRootLogin no

すべてのサーバーでリモートルートログインを無効にすることを強くお勧めします。

ファイルを保存して終了するには、「:x +」、次に「 ENTER +」を入力します。

SSHをリロードする

変更を行ったので、新しい構成を使用するためにSSHサービスを再起動する必要があります。

これを入力してSSHを再起動します。

systemctl reload sshd

サーバーからログアウトする前に、新しい構成を*テスト*する必要があります。 新しい接続が正常に確立できることを確認できるまで、接続を切断したくありません。

*新しい*ターミナルウィンドウを開きます。 新しいウィンドウで、サーバーへの新しい接続を開始する必要があります。 今回は、ルートアカウントを使用する代わりに、作成した新しいアカウントを使用します。

上記で構成したサーバーの場合、このコマンドを使用して接続します。 適切な場合は、独自の情報に置き換えてください。

ssh @

注: PuTTYを使用してサーバーに接続している場合は、サーバーの現在の構成に合わせてセッションの_port_番号を更新してください。

設定した新しいユーザーのパスワードの入力を求められます。 その後、新しいユーザーとしてログインします。

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

sudo

すべて順調であれば、次のように入力してセッションを終了できます。

exit

ここからどこへ行く?

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

サーバーで何をしたいかわからない場合は、このシリーズの次のチュートリアルでhttps://www.digitalocean.com/community/tutorials/additional-recommended-steps-for-new-centos-7を確認してください。 -servers [新しいCentOS 7サーバーの追加の推奨手順]。 これは、ブルートフォース攻撃、基本的なファイアウォール設定、NTP、およびスワップファイルの有効性を減らすために「+ fail2ban +」を有効にすることなどをカバーします。 また、一般的なWebアプリケーションのセットアップ方法を示すチュートリアルへのリンクも提供します。

探索したい場合は、https://digitalocean.com/community/articles [community]の残りの部分をご覧になり、さらにチュートリアルを見つけてください。 いくつかの一般的なアイデアは、https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-centos-7 [LAMP stack]またはhttps ://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-centos-7 [LEMPスタック]。これにより、Webサイトをホストできます。