RaspberryPi

RaspberryPi(ラズベリーパイ)の初期設定・購入したらやること

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" を選択

RaspberryPiのconfig画面

"S5 Boot / Auto Login" を選択

RaspberryPiのconfig画面

"B1 Console" を選択

(下記の画像では、B3 Desktopを選択していますが、後の"pi"ユーザー削除がうまくいかないことがあるので、B1を選ぶようにしてください)

RaspberryPiのconfig画面

選択が完了すると、システムが再起動します。

なお、設定ファイルの書き換えでも変更できます。

その場合は、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
RaspberryPi IPアドレス確認方法
RaspberryPi IPアドレス確認方法

無線であれば、"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
RaspberryPi IPアドレス確認方法

応答時間等が表示されており、このIPアドレスが使用されていることがわかります。

$ ping 192.168.11.12
RaspberryPi IPアドレス確認方法

ホストに信号が到達しておらず、このIPアドレスが使用されていないことがわかります。

pingコマンドでの確認結果から、192.168.11.12 が使用されていないことが分かったので、このIPアドレスを固定IPとして使用することにします。

固定IP設定の際に、デフォルトゲートウェイとDNSサーバーのIPアドレスも必要になるため、先に調べておきます。

筆者はRaspberryPiとWindowsを同じWifiに接続しているので、Windowsのコマンドプロンプトに下記コマンドを打ち込み調べました。

ipconfig /all
RaspberryPi ゲートウェイ確認方法

デフォルトゲートウェイは、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サーバー

RaspberryPi固定IPの設定方法
固定IPの設定方法

「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を有効にします。

RaspberryPiのSSH通信有効化
RaspberryPiの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 SSH秘密鍵生成
認証鍵生成

■公開鍵ファイルを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」です。

RaspberryPiのSSH設定
PC側のSSH config設定

PCのコマンドプロントから、下記の記述だけで、ラズパイに接続できるようになれば成功です。

ssh raspi

ここまでで、ラズパイ購入時に初めにやっておくべき設定は終了です。

かなり手間がかかったと思いますが、ここまでできてしまえば、あとはラズパイを楽しむだけです。

あとはみなさんの工夫でいろいろできるので、思う存分にラズパイを楽しみましょう!

スポンサーリンク

まとめ

ラズパイを購入した際に、はじめにやっておくべきセキュリティ対策、初期設定について紹介していきました。

ラズパイ初期設定の流れ

  • パッケージのアップデート
  • rootのパスワード設定
  • 新規ユーザー作成
  • 自動ログイン設定の解除
  • デフォルトユーザー"pi"の削除
  • 固定IPアドレス設定
  • SSH設定

めんどくさいセキュリティ対策、初期設定が終われば、あとはラズパイを楽しむだけです。

思う存分ラズパイライフを楽しんじゃいましょう!!

スポンサーリンク

-RaspberryPi
-