RaspberryPiってなんなんよ?
RaspberryPi...ご存じの方も多いはず。
イギリスのRaspberry財団が開発した、ARMプロセッサ搭載のシングルボードコンピュータです。
USB,HDMI,3.5mmプラグ,GPIO,Ethernetなど入出力が豊富で、Linuxが動き価格もお手頃。
もともとは教育用に開発されたRaspberryPiでしたが、その汎用性と手ごろさ故に組み込みコンピュータとして利用されたり、マイコンを使った電子工作やIoT、サーバーとして使う方も多いかもしれません。
しかし、そのネットワーク機能が仇となり、DoS攻撃などの踏み台にされてしまうこともあるそうです。
ラズパイ利用の第一歩として、今回はRaspberryPiにRaspberry財団公式OS、Raspbianをインストールし、個人的に正しいと思っている最低限のセキュリティー対策をしてみます!
...もっとも、ここを見に来る方にとってはOSインストールやCLIなんてお手の物でしょうから、余分な説明を省いたバリカタな説明をGitHubに上げておきます!もしダメなところがあったらご教授いただけますとありがたいです!
Raspbianのダウンロード/インストール
まずはRaspbianをインストールしたSDカードを用意しなければ何も始まりません!
先日 "Raspberry Pi Imager"というOSダウンロードからSDカードへの書き込みまでこなしてくれるソフトウェアが公開されましたのでこれを利用し、RaspbianをインストールしたSDカードを作ります!
ちなみにSDカードは16GB以上のものがおすすめです。8GBでは後々ソフトウェアをインストールしているうちに容量不足になることがあります...
-
Raspberry財団のダウンロードページにアクセスし、Win/Mac/UbuntuいずれかのRaspberry Pi Imagerをダウンロード。
-
MicroSDカードをPCにセットし、インストールしたRaspberry Pi Imagerを起動します!
-
こんな画面が表示されるので、"CHOOSE OS"をクリックし一番上の"Raspbian"、"CHOOSE SD CARD"をクリックしセットしたSDカードを選択。
この時、SDカードの選択を誤ると、確認なく書き込みが始まってしまうためそのSDカードのデータは消えるので要注意です!(経験者は語る...)
-
設定が完了したら、WRITEをクリック!
後はこのソフトがRaspbianOSのダウンロードからSDカードへの書き込みまで自動で行ってくれます。いやはや、便利になったものです...
20~30分程度で書き込みが終わり、OSがインストールされたSDカードが用意できました!
起動と初期設定
早速RaspberryPiにOS入りMicroSDカードを差し込みます!
今回用意したのはRaspberryPi 3Bですが、3B+や4でも同じ手順のはずです。
...グサッと。
HDMIケーブルやUSBマウス・キーボードを接続し、MicroUSBケーブルで電源供給すれば勝手に電源が入ります。RaspberryPiに電源スイッチはありません。
...起動しました!
セットアップウィザード
画面に何か表示されていますね。
「RaspberryPi Desktopへようこそ!」「利用前にいくつか設定することがあるぜ!"NEXT"を押して設定を始めよう!!」
...だそうです。従いましょう。
Set Country
"NEXT"をクリックすると、こんな画面が現れます。とどのつまりは利用する国を設定するのです。
"Country"リストの中から"Japan"を選びます。
するとあとの二つは勝手に入力されるので、"NEXT"を押して進めましょう。
Change Password
ここではアカウントのパスワードを変更します。
...というのも、現状のままではユーザーネーム"pi"、パスワード"raspberry"の超貧弱状態。
過去このようなウィザードは存在しておらず、初期パスワードのまま利用していたRaspberryPiが第三者から勝手ログインされることがありました。
クラッカーにとっては初期パスワードでログイン出来たら万々歳、管理者権限も使い放題で思うがまま。まさに地獄です。
ということで、推測されにくいパスワードに変更してしまいましょう!
Set Up Screen
もしあなたが見ている画面の四隅に黒い空白(ベゼルではありません!表示範囲いっぱいに表示されていない場合です!)はチェックを入れて"NEXT"。
大抵画面いっぱいに表示されているので、わからなくてもそのまま"NEXT"で進んで問題ありません。
Select WiFi Network
無線LANに接続します!
SSIDを選択し,パスワード入力してください。
Update Software
Raspbianをアップデートします。
...が、ここでアップデートしようとするとエラーが出るので、ここでは"SKIP"をクリックします。
Setup Complete
これにてセットアップウィザードは完了です!
再起動を促されますが、まだやることが残っていますのでここでは"Later"をクリックします。
初期ユーザー"pi"の変更
先ほど、ユーザーネームやパスワードを初期設定のまま利用すると第三者から勝手ログインされる可能性があったりしてまずいというお話をしましたね。
パスワードはセットアップウィザードで変更しましたが、今回はユーザーネームも変更してみます!
terminalの起動
デスクトップ画面左上に、黒板のようなアイコンがあると思います。これがLXTerminalです。コンピューターに対する操作は大抵ここから行うことができてしまいます。
クリックして起動してみましょう!
こんなウィンドウが現れましたか?
ここに様々なコマンドを入力することでコンピューターを操作します!
作業用仮ユーザーの作成
piの名前を変えるには、pi以外のアカウントで操作する必要があります。ここでは仮設アカウント"tmp"を作成し作業します。
そうしたら、次のコマンドを一行ずつ入力・エンターキーで実行してください!
この際 "#"という記号は「コメントアウト」と言って、プログラムとして実行されないようにメッセージを残すものです。
つまり、"#"のない行を入力し、"#"のある行は私からの説明だと思って読んでください!
#仮のユーザー"tmp"を作成します!
#もしパスワードを求められたら、セットアップウィザードで変更した後のパスワードを入力してください!
sudo useradd tmp
#tmpに管理者権限を与えます!
sudo gpasswd -a tmp sudo
#tmpにパスワードを設定します!
#実行するとパスワード入力画面が現れます。
#さっき設定したパスワードと同じで良いので、2回入力します!
sudo passwd tmp
#GUIを無効化します!
#実行するとブルーバックの画面に変わります。番号を参考に、下に記載した項目を選択してください!
sudo raspi-config
#上下キーを使い 3 Boot Options にカーソルを置きエンターキーで選択
#上下キーを使い B1 Desktop/CLI にカーソルを置きエンターキーで選択
#上下キーを使い B1 Console Text console, requiring user to login にカーソルを置きエンターキーで選択
#左右キーを使い Finish にカーソルを置きエンターキーで選択
#そのままエンターキーを押し再起動する。
慣れましたか?今回の場合、入力したコマンドは4つのはずです!
"pi"を"kuma"に変更する
さて、再起動が終わるとこんな画面が表示されるはずです。
これはCLI、コマンドラインインターフェースと言い、キーボードを使い文字でコンピューターを操作する方式です。
対して、私たちが慣れ親しんでいるマウスでクリックしたり画面に表示された画像を見たりしてコンピューターを操作する方式をGUI、グラフィカルユーザインタフェースと言います。
ここでは、先ほどのLXTerminalと同じようにコマンドを入力して操作することになります。
これはログイン画面ですので、早仮設アカウント"tmp"でログインしてみましょう!
こうなったらログイン完了です!
ここでは例として、ユーザー"pi"を"kuma"に変えてしまいます。皆さんは"kuma"の部分を好きな名前に置き換えて進めてください!
...なんで「くま」かって?好きだからです!クマ~!!
#"pi"を"kuma"に変更します!
sudo usermod -l kuma pi
#この際文字化けだらけの何かが表示されますが、Sudo初回実行時に表示される警告メッセージです。
#tmpのパスワードを入力すれば大丈夫です!
#ホームディレクトリを変更します!
sudo usermod -d /home/kuma -m kuma
#グループを変更します!
sudo groupmod -n kuma pi
#再起動!
sudo reboot
お片付け
再起動が完了すると、きっとさっきと同じCLI画面になります。
"kuma"でログインしましょう!(パスワードは"pi"のパスワードが引き継がれています。)
そうしたら、一連の作業の後始末をしましょう。
#仮ユーザー"tmp"はお役御免。削除します!
sudo userdel tmp
#無効化してあったGUIを有効化します!
#上下左右キーでカーソル移動、エンターキーで決定です。
sudo raspi-config
3 Boot Options を選択
B1 Desktop/CLI を選択
B4 Desktop Autologin Desktop GUI, automatically logged in as 'pi' user を選択
#ついでにSDカードの容量を開放しておきます。
7 Advanced Options を選択
A1 Expand Filesysten を選択
再起動
CLI、おしまい!再起動が完了すると、元のデスクトップ画面が表示されるはずです。
儀式
儀式を執り行います。
...何をするのかというと、ソフトのアップデートやインストール、機能の有効化をします。ちょっと時間がかかるのでお気をつけて。
terminalを起動して、次のように入力していってください。
途中で「Y/n」(yes/no)やパスワードを問われますので、「Y」やアカウントのパスワードを入力してください。
#「パッケージリスト」と呼ばれる、ソフトのカタログのようなものをアップデートします!
sudo apt-get update
#Google製日本語フォント"Noto"をインストールします!
sudo apt-get install fonts-noto
#Google製日本語入力パッケージ"mozc"をインストールします!
sudo apt-get install fcitx-mozc
#「パッケージ」と呼ばれるソフトそのものをアップデートします!
sudo apt-get upgrade
"apt-get upgrade"ではかなり時間がかかるので、ニコニコで球磨見て気長に待ちましょう。
SSHとVNC
次にSSHとVNCを有効化します。
実はRaspberryPiはスマホやPCから遠隔操作できるんです!だから、実家や畑にラズパイを設置しても操作は楽々。
SSHはCLI、VNCはGUIの操作を遠隔から行えるようになります。そんな便利機能を有効化します!
PCやスマートフォンにはそれぞれのクライアントソフトが必要です。
SSHはTeraTerm、VNCはReal VNC®Viewer がおススメ。
使い方はここでは省きます。Google先生に聞いてください...(今後追記するかも。)
sudo raspi-config
5 Interfacing Options を選択
P2 SSH を選択
「はい」をエンターで有効化
5 Interfacing Options を選択
P3 VNC を選択
「はい」をエンターで有効化
Finish・再起動
で、このSSHとVNCは先述の通り遠隔操作を可能にする機能。第三者に攻撃されればこれまた遠隔操作されかねないという代物です。
SSHやVNCを利用するためには窓口まず窓口番号のようなもの、「ポート番号」 を指定する必要があります。
SSHは22番、VNCは5900番があらかじめ割り当てられており、この番号に対して攻撃される場合があるわけです。
ユーザーネームもパスワードも変えているのでそう簡単にはアクセスされないでしょうが、ポート番号も変更してしまいましょう。
SSH用ポート番号の変更
sudo nano /etc/ssh/sshd_config
さて、このコマンドを入力するとおそらくウィンドウいっぱいに英語が表示されます。
今入力したのは 「"nano"というエディターで"/etc/ssh/sshd_config"を開く」 という意味のコマンドでした。
"nano"では、カーソル移動は左右上下キーで、終了はCtrl+xキーで、と少々慣れが必要かもしれません。
RaspberryPiの操作では、こういったファイル内の文字を書き換えることが多々あります。
今回は13行目の内容を変更します。コメントアウトの"#"を削除し、"22"の番号を 49152~65535の任意の値に変更します。
/etc/ssh/sshd_config
#Port 22
↓
Port 59090
今回は59090番にしてみました。くまくま~。
Ctrl+xで終了、保存するか聞かれるので"Y"を入力、最後にファイル名を聞かれますが、今回は存在しているファイルに上書きするためそのままエンターを押し終了します。
ちなみに、どうして"49152~65535"かというと、その番号はユーザーが自由に使ってよいと決められているからです。
ポート番号は重複させてはいけません。しかし、SSHの22やVNCの5900あらかじめ使われているポートも存在します。
そこで、"49152~65535"はあらかじめ使ったりしないからユーザーはそこを使ってね、となっているわけです。
VNC用ポート番号の変更
VNCのポート番号の変更はGUIで行います。画面右上に画像のようなアイコンが表示されていると思うのでっクリックし...
出てきたウィンドウの右上にある三本線ボタンをクリックしてメニューを表示。
上から二つ目の"Options"をクリックするとパスワード入力を求められるので入力。
開いたウィンドウのメニュー欄より"Conections"を選択すると右側に"Port:5900"という欄が見つかります。
この"5900"を 49152~65535の任意の番号に変更しましょう。私は"59091"にしてみました。
入力が終わったら、"OK"をクリックして完了です。
以上で完了です。
クライアントソフトでの接続時、Port番号を入力する欄があります。そこで、今回変更したポート番号を入力して接続することになります。
ファイヤーウォールの設定
ファイアウォールは不正アクセスを防ぐバリアのようなもの。
指定したポート以外での通信を禁止してしまうことで、意図しない通信を防ごうというわけです。
今回は"ufw"というツールを使ってお手軽に設定します!
まずufwをインストール。
sudo apt-get install ufw
ポートを開放するには以下のコマンドを使います。
#sudo ufw allow xxxxx(ポート番号)
今回は、SSHに指定した"59090"を開放してみます。
sudo ufw allow 59090
ファイヤーウォールを有効化します。
sudo ufw enable
これで、RaspberryPiはポート59090以外での通信を受け付けなくなりました。
開放するポートを追加するときには以下のようにします。
#sudo ufw allow xxxxx(ポート番号)
#sudo ufw reload
ここではVNCに指定した"59091"を開放してみます。
sudo ufw allow 59091
sudo ufw reload
以下のコマンドで解放されているポートを確認することができます。
sudo ufw status
おしまいっ!
お疲れ様でございやした!!疲れた!!!よ!!!!
以上はあくまで私が個人的に良いと思っている設定です!基本は「儀式」で行った"apt-get update"と"apt-get upgrade"です。一か月に一回は行っておきましょう!
今後は、RaspberryPiの最大の特徴であるGPIOを使った(このサイト名の由来であろう)「Lチカ」やサーボモーターの制御、さらには部活動で作っているRasPiドローン船のお話も投稿したいです!!
免責事項
本記事はあくまで私が個人的に良いと思っている設定であり、必ずしも正しい内容であることは保証されないほか、すべてバージョンのRaspbianOSに対応するものでもございません。
本記事による損害等について、当方は一切責任を負いませんのでご了承ください。ご自身の責任においてご利用いただきますようお願いいたします。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
(メッセージ: 初版)
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/23
に
編集
をしました。
-
Kuma
さんが
2020/03/24
に
編集
をしました。
-
Kuma
さんが
2020/03/29
に
編集
をしました。
-
Kuma
さんが
2020/03/29
に
編集
をしました。
-
Kuma
さんが
2020/03/29
に
編集
をしました。
-
Kuma
さんが
2020/03/30
に
編集
をしました。
-
Kuma
さんが
2020/04/01
に
編集
をしました。
-
Kuma
さんが
2020/04/20
に
編集
をしました。
ログインしてコメントを投稿する