How to Secure Your SSH Connection in CentOS 7

SSH は、Linux サーバーに接続し管理するために使用される主要なプロトコルです。 このため、悪意ある人物がサーバーへのアクセスを試みる際に、最も頻繁に攻撃されるポートの 1 つとなっています。 この記事では、SSH 接続をより安全にするために使用できるいくつかの方法について説明します。

注意: OVHcloud で使用している製品によっては、これらの手順の一部がすでに実行されている場合があります。 この場合は、単に次のステップに進みます。 さらに、この記事の手順は、SSHキーを使用してサーバーに認証することを前提としています。 代わりにパスワードを使用する場合、この記事の一部の手順は動作しません。

前提条件

  • SSHキーの使用方法
  • サーバーは CentOS 7

トピック

  • 新しいSutoユーザーの作成
  • SSHデーモンを変更する。 設定

Creating New Sudo User

SSH で root 認証を無効にすることは常にベストプラクティスです。 したがって、サーバーを保護するために最初に行いたいことは、SSH 用の新しい sudo ユーザーを作成することです。 これを行うには、以下のコマンドを入力し、赤いユーザー名をお好みのユーザー名に置き換えてください。

# adduser username

次に、このユーザーのパスワードを設定します:

# passwd username

プロンプトに従って、パスワードを作成し、確認します。 ここで、新しいユーザーに sudo 権限を与えて、root になって管理者権限を必要とするコマンドを実行できるようにしたいと思います。 これは、次のコマンドを入力することで行えます。

# usermod -aG wheel username

最後に、新しいユーザーが、すでにルート・ユーザーに提供した SSH 公開鍵を使用して認証できるようにしたいと思います。 単純な rsync コマンドを使用して、公開鍵を新しいユーザーの authorized_keys ファイルにコピーできます。

# rsync --archive --chown=username:username ~/.ssh /home/username

次のステップに進む前に、ログアウトして、新しいユーザーとして SSH を使用してサーバーに認証できることを確認します。 すべてのコマンドが正しく入力されていることを確認し、新しいユーザーとして再度ログインしてみてください。

Changing the SSH Daemon Configuration

サーバーへの認証に SSH 鍵と新しいユーザーを使用しているため、パスワードまたは root ユーザー名を使用して誰も認証させたくないということです。 これを実現するために、まず、OpenSSH デーモンの設定ファイルに移動したいと思います。 これを行うには、次のコマンドを使用して、お好みのテキストエディタでファイルを開きます:

$ sudo vi /etc/ssh/sshd_config

このファイルに対して行いたい変更は3つあります。 まず、OpenSSH がリクエストをリッスンするポートを変更したいのです。 もし、ファイアウォールを使っているのなら、選んだポートを通るトラフィックを許可する必要があります。 もし、サーバからロックアウトされた場合、IPMI または KVM を使ってアクセスを回復することができます。 詳細は、Getting Started with IPMIの記事をご覧ください。

ファイルの上部に、デフォルトでは次のようなセクションがあります。 この例では、ポート12345を使用しています。

Port 12345#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::

次に、ファイルの# Authentication:部分までスクロールダウンしてください。

#LoginGraceTime 2m#PermitRootLogin yes
PermitRootLogin yes#StrictModes#MaxAuthTries 6#MaxSessions 10

ここで、「PermitRootLogin」の隣にある「yes」を「no」に変更します。 次のように表示されます:

#LoginGraceTime 2m
#PermitRootLogin yesPermitRootLogin no#StrictModes#MaxAuthTries 6#MaxSessions 10

ここで、sshd_config ファイルをもう少し下にスクロールして、最後の変更であるパスワード認証を無効にします。 デフォルトでは、次のようなセクションが表示されます:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication yes

「PasswordAuthentication」の隣にある「yes」を「no」に変更します。 以下のように表示されます:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication no

ファイルを保存して終了します。 最後に、変更を有効にするために、OpenSSH を再起動する必要があります。 次のコマンドを入力して、これを行います:

$ sudo systemctl restart sshd.service

ここで行ったことを少し復習してみましょう。 SSH リクエストのリッスンに使用するポート番号を変更しました。 そして、root ユーザーやパスワードで認証しようとするユーザーからの SSH アクセスを無効にしました。

$ ssh [email protected]

今ログインするには、SSH リクエストを受け付けるポート番号を指定する必要があります。 つまり、これからは次のコマンドを使用する必要があります。「-p」の隣の数字を、先ほど選択したポート番号に置き換えてください:

$ ssh -p 12345 [email protected]

このコマンドが動作し、前のコマンドが動作しないことを確認してください。

おわりに

インターネットを使用する多くの悪質業者がいるため、サーバーへの潜在的な侵入口を保護することがこれほど重要なことはありません。 このガイドに従うことで、Linux サーバーで最も一般的なエントリポイントのセキュリティを支援することができました。

コメントを残す

メールアドレスが公開されることはありません。