Raspberry Piのセキュリティを向上させる

Raspberry Piは安価で手に入れることができ、カメラや他のハードウェアを接続して好きな物を作ったり、ネットワークに接続してサーバ用途で使用したりと便利な小型コンピュータです。しかし、セキュリティが初期のままだとIDとPASSWORDが脆弱なため不正アクセスのリスクがあります。実際にRaspberry Piが侵入口となり機密データが盗まれる事件も発生しています。

セキュリティはPASSWORDを変えるだけでも向上させることができるのでRaspberry Piを購入しOSをインストールしたら必ず行いましょう。また他にもセキュリティを向上させる方法があるので説明したいと思います。

なお、この記事はRaspberry Pi Advent Calendar 2019の15日目の記事です。

1 PASSWORD変更

PASSWORD変更はpasswdコマンドで変更できます。 簡単なので必ず行いましょう。

pi@raspberrypi:~ $ passwd
Changing password for pi. # piユーザのPASSWORDを変更
Current password: # 現在のPASSWORDを入力
New password: # 新しいパスワードを入力
Retype new password: # 新しいパスワードを再入力
passwd: password updated successfully

2 SSH接続

SSHはID&PASSWORD認証よりも公開鍵認証で接続した方が安全です。 設定はRaspberry Piだけでなく接続用PCでも作業を行います。

2.1 接続用PCの作業

2.1.1 鍵の生成

ターミナルを起動し次のコマンドを入力します。

$ ssh-keygen -t rsa -b 4096

認証に使用する公開鍵と秘密鍵が生成されます。

Generating public/private rsa key pair.

ファイル名を何にするか聞かれるので、デフォルトで良い人はエンターキーを入力します。 僕は区別しやすいようにいつもファイル名は変更しています。

Enter file in which to save the key (/Path/to/home/directory/.ssh/id_rsa):

パスフレーズをどうするか聞かれるので入力します。

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

公開鍵と秘密鍵がディレクトリに追加されていたら成功です。

2.1.2 公開鍵を転送

生成した公開鍵をRaspberry Piに転送します。

$ scp /Path/to/home/directory/.ssh/id_rsa.pub pi@XXX.XXX.XX.XX:

鍵のファイル名を変更した場合はid_rsaの部分を変えてください。 またXXX.XXX.XX.XXにはRaspberry PiのIPアドレスを入力してください。 IPアドレスがわからない場合はarpコマンドを使用して調べます。 Raspberry Piを起動する前と起動後にターミナルでarp -aと入力し、出力結果を比べてIPアドレスの表示が増えていたらそれがRaspberry PiのIPアドレスと判断します。

2.2 Raspberry Piの作業

2.2.1 公開鍵の登録

Raspberry Piでは接続用PCで転送した公開鍵の登録作業を行います。 初めに登録を行うためのディレクトリを生成します。

pi@raspberrypi:~ $ mkdir .ssh

なお.sshのようにドットが初めにつくと隠しディレクトリになるため、lsと入力しても確認することができません。 確認したい場合はls -aと入力します。 次に転送した公開鍵をauthorized_keysというファイルに追加します。

pi@raspberrypi:~ $ cat id_rsa.pub >> ~/.ssh/authorized_keys

catコマンドはファイルの中身をターミナル上に表示し、>>は表示内容を指定したファイルに追記します。 ここで、>>ではなく>と入力すると上書きになりファイルの中身が消えてしまうので注意が必要です。

2.2.2 鍵認証の有効化&PASSWORD認証の無効化

鍵認証を有効化するためにsshの設定ファイルを変更します。加えてPASSWORD認証の無効化も行います。 テキストエディタを使用して設定ファイルを開きます。

pi@raspberrypi:~ $ sudo vi /etc/ssh/sshd_config

設定項目を探して書き換えます。

# 鍵認証の有効化
#PubkeyAuthentication yes
PubkeyAuthentication yes # コメントアウトを外す

# パスワード認証の無効化
#PasswordAuthentication yes
PasswordAuthentication no # コメントアウトを外してnoに書き換える

書き換えが終了したらRaspberry Piを再起動してください。

$ sudo reboot

これで設定は終了です。Raspberry Piにログインするときは

$ ssh -i ~/.ssh/id_rsa pi@XXX.XXX.XX.XX

と入力してください。