Kuma が 2020年03月30日00時08分36秒 に編集
コメント無し
本文の変更
# RaspberryPiってなんなんよ? **RaspberryPi**...ご存じの方も多いはず。 イギリスのRaspberry財団が開発した、**ARMプロセッサ搭載のシングルボードコンピュータ**です。 USB,HDMI,3.5mmプラグ,GPIO,Ethernetなど**入出力が豊富**で、**Linuxが動き価格もお手頃**。 **もともとは教育用**に開発されたRaspberryPiでしたが、その汎用性と手ごろさ故に組み込みコンピュータとして利用されたり、マイコンを使った電子工作やIoT、サーバーとして使う方も多いかもしれません。 しかし、そのネットワーク機能が仇となり、**DoS攻撃などの踏み台にされてしまう**こともあるそうです。 ラズパイ利用の第一歩として、今回はRaspberryPiにRaspberry財団公式OS、**Raspbian**をインストールし、個人的に正しいと思っている**最低限のセキュリティー対策**をしてみます! ...もっとも、ここを見に来る方にとってはOSインストールやCLIなんてお手の物でしょうから、[余分な説明を省いたバリカタな説明をGitHubに上げておきます!](https://github.com/Kuma-JLA/RaspberryPi-Setup)もしダメなところがあったらご教授いただけますとありがたいです! # Raspbianのダウンロード/インストール まずはRaspbianをインストールしたSDカードを用意しなければ何も始まりません! 先日 "Raspberry Pi Imager"というOSダウンロードからSDカードへの書き込みまでこなしてくれるソフトウェアが公開されましたのでこれを利用し、RaspbianをインストールしたSDカードを作ります! ちなみにSDカードは16GB以上のものがおすすめです。8GBでは後々ソフトウェアをインストールしているうちに容量不足になることがあります... 1. [Raspberry財団のダウンロードページ](https://www.raspberrypi.org/downloads/)にアクセスし、Win/Mac/UbuntuいずれかのRaspberry Pi Imagerをダウンロード。  1. MicroSDカードをPCにセットし、インストールしたRaspberry Pi Imagerを起動します! 1. こんな画面が表示されるので、"CHOOSE OS"をクリックし一番上の"Raspbian"、"CHOOSE SD CARD"をクリックしセットしたSDカードを選択。 この時、**SDカードの選択を誤ると、確認なく書き込みが始まってしまうためそのSDカードのデータは消えるので要注意です!**(経験者は語る...)  1. 設定が完了したら、WRITRをクリック! 後はこのソフトが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"を作成**し作業します。 そうしたら、次のコマンドを一行ずつ入力・エンターキーで実行してください! この際 **"#"という記号は「コメントアウト」と言って、プログラムとして実行されないようにメッセージを残す**ものです。 つまり、**"#"のない行を入力し、"#"のある行は私からの説明だと思って読んで**ください! ```Shell #仮のユーザー"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"の部分を好きな名前に置き換えて**進めてください! **...なんで「くま」かって?好きだからです!クマ~!!** ```Shell #"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"のパスワードが引き継がれています。)  そうしたら、一連の作業の後始末をしましょう。 ```shell #仮ユーザー"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」やアカウントのパスワードを入力してください。 ```Shell #「パッケージリスト」と呼ばれる、ソフトのカタログのようなものをアップデートします! 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"ではかなり時間がかかるので、[ニコニコで球磨見て](https://www.nicovideo.jp/tag/%E7%90%83%E7%A3%A8(%E8%89%A6%E3%81%93%E3%82%8C))気長に待ちましょう。 # SSHとVNC 次に**SSH**と**VNC**を有効化します。 実はRaspberry**PiはスマホやPCから遠隔操作できる**んです!だから、実家や畑にラズパイを設置しても操作は楽々。 SSHはCLI、VNCはGUIの操作を遠隔から行えるようになります。そんな便利機能を有効化します! PCやスマートフォンにはそれぞれのクライアントソフトが必要です。 SSHは[TeraTerm](https://osdn.net/projects/ttssh2/releases/)、VNCは[Real VNC®Viewer](https://www.realvnc.com/en/connect/download/viewer/) がおススメ。 使い方はここでは省きます。Google先生に聞いてください...(今後追記するかも。) ```shell sudo raspi-config 5 Interfacing Options を選択 P2 SSH を選択 「はい」をエンターで有効化 5 Interfacing Options を選択 P3 VNC を選択 「はい」をエンターで有効化 Finish・再起動 ``` で、このSSHとVNCは先述の通り遠隔操作を可能にする機能。**第三者に攻撃されればこれまた遠隔操作されかねない**という代物です。 SSHやVNCを利用するためには窓口まず窓口番号のようなもの、**「ポート番号」** を指定する必要があります。 SSHは22番、VNCは5900番があらかじめ割り当てられており、この番号に対して攻撃される場合があるわけです。 ユーザーネームもパスワードも変えているのでそう簡単にはアクセスされないでしょうが、ポート番号も変更してしまいましょう。 ### SSH用ポート番号の変更 ```shell sudo nano /etc/ssh/sshd_config ``` さて、このコマンドを入力するとおそらくウィンドウいっぱいに英語が表示されます。 今入力したのは **「"nano"というエディターで"/etc/ssh/sshd_config"を開く」** という意味のコマンドでした。 "nano"では、カーソル移動は左右上下キーで、終了はCtrl+xキーで、と少々慣れが必要かもしれません。 RaspberryPiの操作では、こういったファイル内の文字を書き換えることが多々あります。 今回は13行目の内容を変更します。コメントアウトの"#"を削除し、"22"の番号を 49152~65535の任意の値に変更します。 ```Shell:/etc/ssh/sshd_config #Port 22 ↓ Port 59090 ```
今回は49090番にしてみました。くまくま~。
今回は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をインストール。 ```Shell sudo apt-get install ufw ``` ポートを開放するには以下のコマンドを使います。 ```Shell #sudo ufw allow xxxxx(ポート番号) ``` 今回は、SSHに指定した"59090"を開放してみます。 ```Shell sudo ufw allow 59090 ``` ファイヤーウォールを有効化します。 ```Shell sudo ufw enable ``` これで、RaspberryPiは**ポート59090以外での通信を受け付けなくなりました**。 開放するポートを追加するときには以下のようにします。 ```Shell #sudo ufw allow xxxxx(ポート番号) #sudo ufw reload ``` ここではVNCに指定した"59091"を開放してみます。 ```Shell sudo ufw allow 59091 sudo ufw reload ``` 以下のコマンドで解放されているポートを確認することができます。 ```Shell sudo ufw status ``` # おしまいっ! **お疲れ様でございやした!!疲れた!!!よ!!!!** 以上はあくまで私が個人的に良いと思っている設定です!**基本は「儀式」で行った"apt-get update"と"apt-get upgrade"です**。一か月に一回は行っておきましょう! 今後は、RaspberryPiの最大の特徴であるGPIOを使った(このサイト名の由来であろう)「Lチカ」やサーボモーターの制御、さらには部活動で作っているRasPiドローン船のお話も投稿したいです!!