Raspberry Pi のセキュリティ - SSH プロトコルのセキュリティ

胡金庫 2022年4月14日
Raspberry Pi のセキュリティ - SSH プロトコルのセキュリティ

この記事では、Raspberry Pi への SSH リモート接続を一般的なセキュリティ上の欠陥から保護するためのいくつかの方法を紹介します。

Raspberry Pi で SSH 構成を強化してのリモートアクセスを保護する

SSH は、システム管理やその他のタスクのためにリモートホストにアクセスするための一般的な方法です。

これは、ローカルネットワーク上の Raspberry Pi デバイスにリモートでアクセスするためによく使用されます。そのため、攻撃者がデバイスにアクセスしないように、SSH 認証方式とその構成パラメーターの一部を保護することが不可欠です。

SSH リモートアクセスプロトコルについて聞いたばかりの場合は、最初にこのトピックに関するはじめにの記事を確認してから、次の手順に進むことをお勧めします。

SSH 接続は、デフォルトでユーザー名/パスワード認証スキームを使用します。これは、攻撃者がブルートフォース攻撃する可能性があります。したがって、公開鍵認証に変更し、すべてのセッションで必須にすることをお勧めします。

SSH を使用して Raspberry Pi にアクセスするホストマシン用の公開鍵ペアがない場合は、最初に公開鍵ペアを生成する必要があります。後者は、OpenSSH ツールキットの一部としてほとんどの Linux / BSD システムに含まれている ssh-keygen コマンドラインユーティリティを使用して実行できます。

次のコマンドは ed25519 キーペアを生成し、当面は安全なアルゴリズムの 1つと見なされます。

ssh-keygen -o -a 256 -t ed25519 -C "$(hostname)-$(date +'%d-%m-%Y')"

前のコマンドでは、キーファイル名を指定するように求められますが、初めて公開キーを生成する場合は、Enter キーを押してデフォルト名を使用できます。

パスフレーズの入力を求めるプロンプトが表示されます。これは、攻撃者の仕事を難しくしたい場合に強くお勧めします。指定されたパスフレーズは、新しいリモートアクセスセッションごとに ID を確認するために使用されます。

このパスフレーズはファイルに自動的に保存されないことに注意してください。したがって、将来生成された公開鍵ペアを使用する必要がある場合は、それを覚えておく必要があります。

デフォルトでは、生成された 2つのキーファイルは~/.ssh/ディレクトリにあり、id_ed25519 および id_ed25519.pub という名前が付けられています。id_ed25519 の内容を他の人と共有してはなりませんが、通常、SSH 接続を確立する必要がある任意のマシン(Raspberry Pi など)に id_ed25519.pub の内容をコピーします。

次に、Raspberry Pi コンソールにログインして、SSH サーバーのパラメーターを構成できます。以下の手順は、Pi で SSH サーバーを以前に有効にしたことを前提としていることに注意してください。

まず、id_ed25519.pub. の内容をコピーする必要があります。Raspberry Pi の/home/pi/.ssh/authorized_keys ファイルに移動します。後者のファイルは Pi に存在しない可能性があるため、手動で作成する必要がある場合があります。

または、Pi への SSH アクセスがあるホストマシンで scp コマンドを使用してファイルをコピーすることもできます。

ssh-keygen コマンドプロンプトでカスタムキーファイル名を指定した場合は、次のコマンドで Pi の IP アドレスを変更し、ソースファイル名を変更する必要があることに注意してください。

scp ~/.ssh/id_ed25519.pub pi@192.168.0.12:/home/pi/.ssh/authorized_keys

正常にコピーされたら、Raspberry Pi OS で/etc/ssh/sshd_config ファイルの編集に進むことができます。この手順では、コマンドごとに sudo 権限が必要です。

使い慣れたテキストエディタ(sudo を使用)を使用して sshd_config ファイルを開き、図のように次の行のコメントを外して挿入し、変更を保存します。

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

PubkeyAuthentication yes
AuthorizedKeysFile    .ssh/authorized_keys .ssh/authorized_keys2

PasswordAuthentication no
ChallengeResponseAuthentication no

構成ファイルの変更後、次のコマンドを使用して sshd サービスを再起動し、変更を有効にすることができます。

sudo systemctl restart sshd.service

これで、SSH を使用して Pi に再接続でき、システムに自動的にログインするはずです。ただし、ssh-keygen コマンドで公開鍵パスフレーズを指定した場合は、それでも公開鍵パスフレーズの入力を求められます。

Raspberry Pi OS の SSH サーバーのデフォルトポートを変更する

もう 1つの便利なセキュリティ対策は、SSH のデフォルトのサービスポート 22 を変更することです。前の手順で編集した/etc/ssh/sshd_config ファイルでデフォルトのポートを変更できます。

今回は、コメントを外して次の行を変更します。

Port 60001

ポート番号は、49152〜65535 の範囲のプライベートサービスポートから選択できます。システムで実行されている他のサービスと競合する可能性はほとんどありません。

前の行は通常、sshd_config ファイルにすでに含まれていますが、プレフィックスとして # 文字を使用してコメント化されていることに注意してください。このプレフィックスを削除することで、コメントを解除できます。

また、前の手順で示したように、ファイルへの変更を保存し、systemctl restart コマンドを使用して SSH サービスを再起動することを忘れないでください。さらに、次のように、他のホストから Raspberry Pi にアクセスするために、ssh コマンドにポート番号を追加する必要があります。

ssh pi@192.168.0.12 -p 600001
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - Raspberry Pi