序章

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

ステップ1—ルートとしてログインする

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

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

  1. ssh root@your_server_ip

ホストの信頼性に関する警告が表示された場合は、それを受け入れます。 パスワード認証を使用している場合は、rootパスワードを入力してログインします。 パスフレーズで保護されたSSHキーを使用している場合、セッションごとに初めてキーを使用するときにパスフレーズの入力を求められる場合があります。 パスワードを使用してサーバーに初めてログインする場合は、rootパスワードを変更するように求められることもあります。

ルートについて

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

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

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

root としてログインすると、今後ログインに使用する新しいユーザーアカウントを作成できます。

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

  1. adduser sammy

次に、強力なパスワードを設定します sammy ユーザー:

  1. passwd sammy

パスワードを2回入力するように求められます。 そうすると、ユーザーは使用できるようになりますが、最初に、このユーザーに使用するための追加の権限を付与します。 sudo 指図。 これにより、必要に応じてrootとしてコマンドを実行できるようになります。

ステップ3—管理者権限を付与する

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

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

これらの特権を新しいユーザーに追加するには、新しいユーザーをWheelグループに追加する必要があります。 デフォルトでは、CentOS 8では、Wheelグループに属するユーザーは sudo 指図。

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

  1. usermod -aG wheel sammy

これで、通常のユーザーとしてログインすると、次のように入力できます。 sudo スーパーユーザー権限でアクションを実行するコマンドの前。

ステップ4—基本的なファイアウォールの設定

ファイアウォールは、サーバーに基本レベルのセキュリティを提供します。 これらのアプリケーションは、明示的に承認したポート/サービスを除いて、サーバー上のすべてのポートへのトラフィックを拒否する責任があります。 CentOSにはというサービスがあります firewalld この機能を実行します。 と呼ばれるツール firewall-cmd 構成に使用されます firewalld ファイアウォールポリシー。

注:サーバーがDigitalOceanで実行されている場合は、オプションで DigitalOcean CloudFirewallsの代わりに使用できます。 firewalld. デバッグが困難な可能性のあるルールの競合を回避するために、一度に1つのファイアウォールのみを使用することをお勧めします。

最初のインストール firewalld:

  1. dnf install firewalld -y

デフォルト firewalld 構成により可能 ssh 接続しているので、ファイアウォールをすぐにオンにできます。

  1. systemctl start firewalld

サービスのステータスをチェックして、サービスが開始されたことを確認します。

  1. systemctl status firewalld
Output
● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-02-06 16:39:40 UTC; 3s ago Docs: man:firewalld(1) Main PID: 13180 (firewalld) Tasks: 2 (limit: 5059) Memory: 22.4M CGroup: /system.slice/firewalld.service └─13180 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid

両方であることに注意してください activeenabled、サーバーを再起動するとデフォルトで起動することを意味します。

サービスが稼働しているので、次を使用できます firewall-cmd ファイアウォールのポリシー情報を取得および設定するためのユーティリティ。

まず、すでに許可されているサービスをリストしましょう。

  1. firewall-cmd --permanent --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

名前で有効にできる追加のサービスを表示するには、次のように入力します。

  1. firewall-cmd --get-services

許可する必要のあるサービスを追加するには、 --add-service 国旗:

  1. firewall-cmd --permanent --add-service=http

これにより、 http サービスを提供し、着信TCPトラフィックをポートに許可します 80. ファイアウォールをリロードすると、構成が更新されます。

  1. firewall-cmd --reload

後で構成する可能性のある追加のサービスについては、ファイアウォールを(サービスまたはポートを使用して)明示的に開く必要があることに注意してください。

ステップ5—通常のユーザーの外部アクセスを有効にする

root 以外の通常のユーザーが日常的に使用できるようになったので、それを使用してサーバーにSSHで接続できることを確認する必要があります。

注:ログインして使用できることを確認するまで sudo 新しいユーザーの場合は、rootとしてログインしたままにすることをお勧めします。 このように、問題が発生した場合は、トラブルシューティングを行い、rootとして必要な変更を加えることができます。 DigitalOcean Dropletを使用していて、 root SSH接続で問題が発生した場合は、DigitalOceanConsoleを使用してDropletにログインできます。

新しいユーザーのSSHアクセスを構成するプロセスは、サーバーのrootアカウントが認証にパスワードまたはSSHキーのどちらを使用するかによって異なります。

ルートアカウントがパスワード認証を使用する場合

パスワードを使用してrootアカウントにログインした場合、SSHに対してパスワード認証が有効になります。 新しいターミナルセッションを開き、新しいユーザー名でSSHを使用することにより、新しいユーザーアカウントにSSHで接続できます。

  1. ssh sammy@your_server_ip

通常のユーザーのパスワードを入力すると、ログインします。 管理者権限でコマンドを実行する必要がある場合は、次のように入力してください。 sudo このようになる前に:

  1. sudo command_to_run

使用時に通常のユーザーパスワードの入力を求められます sudo 各セッションで初めて(そしてその後定期的に)。

サーバーのセキュリティを強化するために、パスワード認証を使用する代わりにSSHキーを設定することを強くお勧めします。 キーベースの認証を構成する方法については、 CentOS8でのSSHキーの設定に関するガイドに従ってください。

ルートアカウントがSSHキー認証を使用する場合

SSHキーを使用してrootアカウントにログインした場合、SSHのパスワード認証は無効になります。 公開鍵のコピーを新しいユーザーのに追加する必要があります ~/.ssh/authorized_keys 正常にログインするためのファイル。

公開鍵はすでにrootアカウントにあるため ~/.ssh/authorized_keys サーバー上のファイルの場合、そのファイルとディレクトリ構造を新しいユーザーアカウントにコピーできます。

正しい所有権と権限でファイルをコピーする最も簡単な方法は、 rsync 指図。 これにより、rootユーザーの .ssh ディレクトリ、権限の保持、ファイル所有者の変更をすべて1つのコマンドで実行できます。 以下のコマンドの強調表示された部分を、通常のユーザーの名前と一致するように変更してください。

注: rsync コマンドは、末尾のスラッシュで終わるソースと宛先を、末尾のスラッシュがないものとは異なる方法で処理します。 使用する場合 rsync 以下では、ソースディレクトリ(~/.sshには末尾のスラッシュが含まれていませんを使用していないことを確認してください ~/.ssh/).

誤って末尾のスラッシュをコマンドに追加した場合は、 rsync ルートアカウントのコンテンツをコピーします ~/.ssh ディレクトリへの sudo 全体をコピーするのではなく、ユーザーのホームディレクトリ ~/.ssh ディレクトリ構造。 ファイルは間違った場所にあり、SSHはそれらを見つけて使用することができません。

  1. rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy

ここで、ローカルマシンの新しい端末に戻り、root以外のユーザーとの新しいSSHセッションを開きます。

  1. ssh sammy@your_server_ip

パスワードを使用せずに、新しいユーザーアカウントにログインする必要があります。 管理者権限でコマンドを実行する必要がある場合は、次のように入力してください。 sudo このようになる前に:

  1. sudo command_to_run

使用時に通常のユーザーパスワードの入力を求められます sudo 各セッションで初めて(そしてその後定期的に)。

結論

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