nyabot’s diary

電気猫の夢を見るお話

Raspberry pi のセキュリティ関連設定

前回のユーザー名変更に引き続き、セキュリティ関連のやったことの覚え書き。

sudoコマンド実行時のパスワード必須化について

ユーザー名を変更すると、sudoコマンド実行時にパスワードを求められるようになる。 /etc/sudoers.d/010_pi-nopasswdにユーザーpiはパスワード不要、という記述がされているため、必要に応じて削除したり変更したりする。

$ sudo nano /etc/sudoers.d/010_pi-nopasswd

SSH接続のポート番号変更

SSH接続のポート番号を広く知られる初期設定の22番から変更することで、悪意のあるロボットなどから攻撃を受けにくくする。
ポート番号は0~65535まであり、以下のように三つにわけられる。

ポート番号 名称 説明
0~1023 ウェルノウンポート 何に使用するか決められているポート。使用できないものが多い。
1024~49512 登録ポート 色々なソフトウェアによって割り当てられるポート。使用できるものもあるが、重複する可能性がある。
49513~65535 ダイナミック/プライベートポート 自由に使えるポート。

設定ファイルの記述「Port 22」のコメントアウトを外し、「Port 56789」など、49513~65535の任意のポート番号を指定。

$ sudo nano /etc/ssh/sshd_config

sshを再起動して、問題なく起動することを確認。

$ sudo /etc/init.d/ssh restart

ログアウトしてから、
指定外のポート番号では接続できないことをチェック。
ポート番号を指定して接続できることを確認。

$ exit

# 接続できない
$ ssh usr@198.xxx.xx.xx

# 接続できない
$ ssh usr@198.xxx.xx.xx -p 22

# 接続できる
$ ssh usr@198.xxx.xx.xx -p 56789

公開鍵認証の作成と設定

RSA鍵のペアを作成。

$ ssh-keygen -t rsa

鍵ファイルの保存場所を聞かれるので、/Users/tool-lab/.ssh/id_rsa_raspi に指定。(そのままにする場合は入力せずにEnterでok) パスフレーズも任意の値を設定。設定しない場合はそのままEnter。

ポート番号、送信ファイル、ユーザー名、IPアドレスを指定してscpコマンドで公開鍵ファイルを転送する。

$ scp -P 56789 .ssh/id_rsa_raspi.pub user@192.168.xx.xx

ラズパイにログイン後、.sshディレクトリを作成し、その中のauthorized_keysファイルに公開鍵情報を書き出し、パーミッションを変更して、ホームディレクトリの公開鍵ファイルは削除する。

$ mkdir .ssh
$ cat id_rsa_raspi.pub >> .ssh/authorized_keys
$ chmod 700 .ssh
$ chmod 600 .ssh/authorized_keys
$ rm id_rsa_raspi.pub

ポート番号を指定したときの設定ファイルをまた開いて、

$ sudo nano /etc/ssh/sshd_config

以下の記述を一番下に追加。

RSAAuthentication    yes
PubkeyAuthentication yes
AuthorizedKeysFile   %h/.ssh/authorized_keys
PasswordAuthentication no

保存して、sshサーバーを再起動。

$ sudo /etc/init.d/ssh restart

ログアウト。

$ exit

PCのssh設定を変更。

$ nano .ssh/config

以下の記述を追加して保存。IPアドレス、ユーザー名、ポート番号はそれぞれ設定した値を入れる。

Host raspi
    HostName IPアドレス
    User ユーザー名
    Port ポート番号
    IdentityFile ~/.ssh/id_rsa_raspi

以下のコマンドでログインできるようになれば成功!

$ ssh raspi

つづく。