RaspberryPi(ラズベリーパイ)は、デフォルトのユーザー名が"pi"、パスワード名が"raspberry"で固定されているため、
そのままインターネットに接続してしまうと、第三者に不正ログインされ攻撃されてしまう恐れがあります。
(OSインストール手順によっては、パスワードは独自設定したものになっている場合もあります)
不正アクセスされてしまうと、RaspberryPiを介して、自宅のサーバやPC家電を自由に制御されたり、ウィルスをばら撒かれる危険があります。
本記事では、RasberryPiを購入した際に、初期設定として実施すべきセキュリティ対策をまとめました。
わかりやすく紹介したつもりなので、どうぞ参考にしてみてください。
ラズパイ初期設定の流れ
- パッケージのアップデート
- rootのパスワード設定
- 新規ユーザー作成
- 自動ログイン設定の解除
- デフォルトユーザー"pi"の削除
- 固定IPアドレス設定
- SSH設定
スポンサーリンク
パッケージのアップデート
まず初めに、ラズパイのパッケージを最新版にアップデートします。
下記のコマンドをターミナルに入力します。
$ sudo apt-get update
$ sudo apt-get upgrade
また初期設定として、様々なサイトで、
$ sudo rpi-update コマンドでのファームウェアアップデートが紹介されていますが、
これは、推奨されていないアップデートなので、注意してください。
詳細は、GITHUBのrpi-updateの説明ページに記載されていますが、
充分に検証されていない最新バージョンにアップデートされるため、バグに悩まされる可能性があります。
rootのパスワード設定
OSとしてRaspbianを使用している場合、セキュリティ上の理由から、rootアカウントに初期パスワードが設定されていません
以降の操作で設定がおかしくなった場合の復帰用として、root権限を使用するためにパスワードを設定します。
勘違いされがちですが、rootにパスワードを設定することは、むしろセキュリティホールをつくる行為になります。
初期状態ではパスワードが設定されていないので、そもそも誰もroot権限でログインできません。
そのため、セキュリティを強めるためにも、パスワードは複雑で予測が困難なものに設定しましょう。
下記のコマンドで、rootに新しいパスワードを設定します。
$ sudo passwd root
「パスワードは正しく更新されました」と、表示されればOKです。
スポンサーリンク
新規ユーザー作成
新規ユーザー追加
デフォルトのユーザー名"pi"はセキュリティ上強いとは言えないため、"pi"ユーザー同等の権限をもつ新規ユーザーを作成します。
下記のコマンドで、新規ユーザーを追加します。 "新規ユーザー名"の箇所に新規ユーザー名を入力してください。(なお、" " は不要)
$ sudo adduser "新規ユーザー名"
パスワードの入力が完了すると、以下の内容を聞かれますが、空欄でも問題ないです。
セキュリティ上のリスクが増えるだけなので、特に不都合がなければ空欄のまま、 Enter を押します。
フルネーム []:
部屋番号 []:
職場電話番号 []:
自宅電話番号 []:
その他 []
以上で正しいですか? [Y/n]
と聞かれたらキーボードから "Y" を入力します。
新規ユーザーに権限をコピー
新規ユーザーに、"pi"ユーザーと同じ権限を設定します。
まずは、下記コマンドで"pi"ユーザーの権限(group)を確認します。
$ groups pi
上記のコマンドで出てきた権限を、新ユーザにも追加します。
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio "新規ユーザー名"
新規ユーザーに同じ権限が追加されたことを確認します。
$ groups "新規ユーザー名"
新規ユーザーに、"pi"ユーザーのフォルダをコピー
新規ユーザーに、"pi"ユーザーのフォルダをコピーします。
$ sudo cp -r /home/pi/* /home/"新規ユーザー名"
cpコマンドに、"-r"オプションをつけることで、フォルダを再帰的にコピーすることができます。
再帰的というのは、コピーするディレクトリの中に入っているディレクトリもコピーし、さらにそのディレクトリに入っているファイルやディレクトリーもコピーする操作のことを言います。
自動ログイン設定の解除
この後の作業で、デフォルトユーザー"pi"を消去しますが、このままの設定だと、電源を入れると自動で"pi"ユーザにログインしようとしてしまいます。
そのため、"pi"ユーザー削除前に、自動ログイン設定を解除します。
下記のコマンドで、config画面を表示します。
$ sudo raspi-config
"1 System Options" を選択
"S5 Boot / Auto Login" を選択
"B1 Console" を選択
(下記の画像では、B3 Desktopを選択していますが、後の"pi"ユーザー削除がうまくいかないことがあるので、B1を選ぶようにしてください)
選択が完了すると、システムが再起動します。
なお、設定ファイルの書き換えでも変更できます。
その場合は、root権限でログインして、
/etc/lightdm/lightdm.conf
上記ファイルの、autologin-user=pi の行をコメントアウトします。
#autologin-user=pi
デフォルトユーザー"pi"の削除
"pi"ユーザーを削除する前に、"新規ユーザー"でログインできるか確認します。
"pi"ユーザーからログアウトします。
「ラズベリーのマーク」⇒「Shutdown」⇒「Logout」
"新規ユーザー" からログインします。
"新規ユーザー"でログインできることを確認したら、"pi"ユーザーを削除します。
$ sudo userdel -r pi
下記の怖いコメントが出てきますが、パスワードを入力して消去します。
あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:
#1)他人のプライバシーを尊重すること。
#2)タイプする前に考えること。
#3)大いなる力には大いなる責任が伴うこと。
"pi"ユーザーが削除されたか確認します。
$ id -a pi
id: 'pi': no such user
と表示されれば、"pi"ユーザーが削除されています。
スポンサーリンク
SSH設定
PCからRaspberryPiに安全にアクセスできるようにするために、SSHの設定をします。
SSHとは、Secure Shellの略で、情報を暗号化したうえでPCとRaspberryPiの間で通信を行えるようにします。
SSHについて知りたい方は、こちらのページにて詳しく紹介されていましたので、参考にしてみてください。
SSHの認証方式のうち、安全性の高い「公開鍵認証方式」の設定を進めていきます。
SSHの設定を進める前に、先にIPアドレスを固定しておきます。
固定IPアドレスの設定
SSH接続する際に、IPアドレスの入力が必要になるのですが、
IPアドレスが変わってしまうと調べるのが面倒なので、IPアドレスを固定しておきます。
はじめに、RaspberryPiの現在のIPアドレスを確認してみます。下記のコマンドを入力します。
$ ifconfig
無線であれば、"wlan0"の場所にIPアドレスが書かれています。
ここの、inet以降の 192.168.11.11 がIPアドレスになります。
固定IPアドレスに使いたいIPアドレスが使用されていないか調べます。
IPアドレスが使用されていないか調べるには、pingコマンドを使います。
pingコマンドで IP アドレスからの応答の有り無しと、その応答時間等を表示できます。
コマンドを送り続けてしまうので、何回か応答の有無を確認したら「ctrl + C」で止めてください。
192.168.11.11と、192.168.11.12を調べてみます。(192.168.11.11は今回RaspberryPiが使用していますね)
$ ping 192.168.11.11
応答時間等が表示されており、このIPアドレスが使用されていることがわかります。
$ ping 192.168.11.12
ホストに信号が到達しておらず、このIPアドレスが使用されていないことがわかります。
pingコマンドでの確認結果から、192.168.11.12 が使用されていないことが分かったので、このIPアドレスを固定IPとして使用することにします。
固定IP設定の際に、デフォルトゲートウェイとDNSサーバーのIPアドレスも必要になるため、先に調べておきます。
筆者はRaspberryPiとWindowsを同じWifiに接続しているので、Windowsのコマンドプロンプトに下記コマンドを打ち込み調べました。
ipconfig /all
デフォルトゲートウェイは、192.168.11.1
DNSサーバーは、192.168.11.1
であることがわかりました。
設定ファイルを編集し、固定IPアドレスを設定します。
以下のコマンドで、RaspberryPiの標準エディタであるnanoで、設定ファイルを開きます。
$ sudo nano /etc/dhcpcd.conf
ファイルを開いたら、一番下までスクロールし、下記の項目を追加します。
"static ip_address":固定IPアドレス
"static routers":デフォルトゲートウェイ
"static domain_name_servers":DNSサーバー
「ctrl + O」 → Enter で書き込み
「ctrl + X」で終了
設定を反映させるために再起動します。
$ reboot
設定した、固定IPアドレスに変更されているか確認します。
$ ifconfig
スポンサーリンク
SSH設定
さて、ここまでで、SSH設定の事前準備である、固定IPの設定が終わりました。
ここから、SSHの設定を進めていくのですが、SSH設定だけでも作業が多いので、初めに全体の流れをまとめておきます。
SSH設定の手順
- SSH通信を有効化
- bootフォルダ内にsshフォルダ作成
- 一旦再起動(この時点で、パスワード認証のssh接続が可能になります)
- SSH接続のポート番号変更
- パスワード認証でSSH接続できるか確認
- パスワード認証から公開鍵認証に変更する
■SSH通信を有効化
はじめに、SSHでの通信を有効にします。
「デスクトップのラズベリーアイコン」 →「設定」 → 「Raspberry Piの設定」→ [インターフェイス] と進み、
SSHを有効にします。
■bootフォルダ内にsshフォルダ作成
下記のコマンドを実行して、bootフォルダ内に、sshという名前のフォルダを作成します。
$ cd /boot
$ sudo mkdir ssh
この時点で、一旦再起動します。これでパスワード認証のSSHが有効となります
$ reboot
■SSH接続のポート番号変更
SSHのポートはデフォルトでは22番が使われているため、外部からの攻撃はまず22番のポートから狙われることになります。
そのため、ポート番号をデフォルトの22番から変更することで、セキュリティを高めることができます。
ポート番号は、49152 ~ 65535番から任意で選ぶことをオススメします。
49151以前の番号が良い方は、こちらのサイトが参考になりますので確認してみてください。
ポート番号を62418番にする場合を例に説明します。
設定ファイルをエディタで開きます。
$ sudo nano /etc/ssh/sshd_config
デフォルトのポート番号22がコメントアウトされている箇所があるので、
その下に、今回設定するポート番号を記入します。
#Port 22
Port 62418
設定ファイルを、「ctrl + O」書き込み、「ctrl + X」でいったん閉じます。
変更した設定を反映させるためのコメントを入力します。
$ sudo /etc/init.d/ssh restart
■ここまでの設定で、パスワード認証のSSH接続できるか確認
今までの設定が反映されているか、PC側からSSH接続して確認してみます。
なお、この時点ではまだパスワード認証になっています。
PCのコマンドプロンプトに下記のコマンドを入力します。
ssh "新規ユーザー名"@"固定IP"-p "新ポート番号"
SSH接続できることが確認できたら、下記のコマンドでSSH接続を終了します。
exit
■パスワード認証から公開鍵認証に変更する
公開鍵認証への変更も手順が見えにくいと思うので、先に流れを紹介しておきます。
下記の流れで作業を進めます。あと一息なので頑張りましょう!
公開鍵認証への変更手順
- PCで、認証ファイル(公開鍵と秘密鍵)を作成
- 公開鍵ファイルをRaspberryPiに送信
- RaspberryPiへの公開鍵の登録、パーミッション設定
- RaspberryPiのSSH設定ファイルを変更
- 短いコマンドでSSH接続できるようにする
■PCで、認証ファイル(公開鍵と秘密鍵)を作成
初めに、PC上で、認証ファイル(公開鍵と秘密鍵)を作成します。
下記コマンドを、コマンドプロンプトに打ち込みます。
ssh-keygen -t rsa
その後、下記内容を聞いてきますが、すべてEnterで飛ばして大丈夫です。
C:\Users\info>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\info/.ssh/id_rsa):
鍵の保存場所を聞いてきます。
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
パスフレーズを聞いてきます。Enterで大丈夫です。
■公開鍵ファイルをRaspberryPiに送信
PCで作成した公開鍵を、RaspberryPiに保存します。
RaspberryPiへ公開鍵を送る方法は複数ありますが(SDカード等)、今回は”scp”コマンドを使用します。
"scp"はsecure copyの略で、sshを使用してコンピュータ間のファイル転送をセキュアな状態で行うことができます。
コマンドは下記になります。最後の : も必要なので注意してください。
scp -P "ポート番号" "送信ファイル" "送付先" :
公開鍵は、.sshフォルダに保存された「id_rsa.pub」というファイルですので、コマンドは下記のようになります。
scp -P 62418 .ssh/id_rsa.pub "新規ユーザー"@192.168.11.12 :
例として、今回設定したポート番号、固定アドレスを入力しています。
また、送付先として、"新規ユーザー"@192.168.11.12 を入力しているので、“新規ユーザ"のホームフォルダに送付されます。
■RaspberryPiへの公開鍵の登録、パーミッション設定
ここからは、RaspberryPiでの操作になります。
まず、下記のコマンドで、ホームディレクトリに.sshフォルダを作成します。
$ mkdir ~/.ssh
UNIX系では、ファイルの前に.(ドット)をつけると、隠しファイルになります。
ホームディレクトリを見ても、フォルダが作られていないように見えるので注意してください。
先ほどPCから送信した公開鍵を、.sshフォルダに移動します。
移動は下記コマンドになります。
$mv ~/id_rsa.pub ~/.ssh/id_rsa.pub
.sshフォルダでは、下記のようなファイルを管理します。こちらの記事を参考にさせていただきました。
- authorized_keys:接続を許可する公開鍵を登録するファイル。
- config:SSH接続の情報が記載されるファイル。
- known_hosts:過去に接続したことがあるサーバーが記載されるファイル。
- id_rsa.pub:ssh-keygenで生成した公開鍵。
公開鍵"id_rsa.pub” の情報を、authorized_keysファイルに書き出します。下記のコマンドになります。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
次に、chmodコマンドで、.sshフォルダ、authorized_keysにパーミッション(アクセス権)を設定します。
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
600、700はアクセス権の範囲を表しています。興味のある方はこちらを参照してみてください。
authorized_keysに公開鍵情報を書き込んだので、不要となった公開鍵を削除します。
$ rm ~/.ssh/id_rsa.pub
■RaspberryPiのSSH設定ファイルを変更
最後に、SSHの設定ファイルを変更するのですが、
その前に、公開鍵認証でのSSH接続ができるかテストします。PCで下記のコマンドを入力します。
ssh -i "秘密鍵のパス" -p "ポート番号" "新規ユーザー"@"IPアドレス"
今回の設定例の場合は下記になります。
秘密鍵なので、PC側のパスになります。
ssh -i \.ssh\id_rsa -p 62418 "新規ユーザー"@192.168.11.12
接続できたら、SSH設定ファイルの変更を行います。
ここからは、RaspberryPiでの作業になります。
SSH設定ファイルを下記のコマンドで開きます。
ちなみに、このファイルはポート番号の変更で1度開いていますね。
$ sudo nano /etc/ssh/sshd_config
下記のとおり、config内の記述を変更していきます。
・ルートのログインを禁止
PermitRootLogin no
・公開鍵での認証を許可
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
・パスワード認証を無効にする。
PasswordAuthentication no
この設定をするために、公開鍵で認証できることを確認しました。
・空パスワードを無効にする。
PermitEmptyPasswords no
コメントアウトを外します。
修正した設定を反映させるため、SSHサーバーを再起動します。
sudo /etc/init.d/ssh restart
もう一度、PC側からSSH接続してみます。
ssh -i "秘密鍵のパス" -p "ポート番号" "新規ユーザー"@"IPアドレス"
パスワードも聞かれずSSH接続出来たら成功です。
■短いコマンドでSSH接続できるようにする設定
SSH接続するのに、いちいち今までのような長いコマンドを打つのは面倒です。
そこで、下記のような簡単なコマンドで、SSH接続できるように設定します。
ssh raspi
PCのメモ帳に下記のように記載し、「config」という名前で、\.sshフォルダに保存します。
なお、.sshフォルダの場所は、デフォルトで「C:\Users\"ユーザ名"\.ssh」です。
PCのコマンドプロントから、下記の記述だけで、ラズパイに接続できるようになれば成功です。
ssh raspi
ここまでで、ラズパイ購入時に初めにやっておくべき設定は終了です。
かなり手間がかかったと思いますが、ここまでできてしまえば、あとはラズパイを楽しむだけです。
あとはみなさんの工夫でいろいろできるので、思う存分にラズパイを楽しみましょう!
スポンサーリンク
まとめ
ラズパイを購入した際に、はじめにやっておくべきセキュリティ対策、初期設定について紹介していきました。
ラズパイ初期設定の流れ
- パッケージのアップデート
- rootのパスワード設定
- 新規ユーザー作成
- 自動ログイン設定の解除
- デフォルトユーザー"pi"の削除
- 固定IPアドレス設定
- SSH設定
めんどくさいセキュリティ対策、初期設定が終われば、あとはラズパイを楽しむだけです。
思う存分ラズパイライフを楽しんじゃいましょう!!
スポンサーリンク