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