ラズパイ道具を買って、線をつないで、電源の入れ方と消し方が分かったら、なにはともあれセキュリティー。
新しいデバイスを買ったらマカフィーに追加しておけば安心なwindows環境とは違い、何していいかわからないので、とりあえず公式サイトをのぞいたら、なんかいっぱい書いてあった。
- デフォルトパスワードを変える
- ユーザー名を変える
- 「sudo」(=SuperUserDo)命令にパスワードを要求する
- 最新のセキュリティー修正版をしっかり入れる
- SSH (=Secure Shell)のパスワードとユーザー名を改善する
- SSHを鍵認証にする
- ファイアウォール(iptablesまたはUFW)を有効化する
- (サーバー化している場合は)fail2banをインストールする
参考:Raspberry Pi Org「Securing your Raspberry Pi」
とりあえず、上から順番に進めていきましたw
初期ユーザ名とパスワード、全員同じ!?
Raspberry Pi OSの初期ユーザ名はみんな「pi」で、パスワードは全て「Raspberry」らしいです。
この初期ユーザ「pi」さんは、root userという最強の権限をもっているので、新しく自分のアカウントをユーザ登録して「pi」さんを無力化したり、削除した方がいいらしいです。
※パスワードの方は初期設定の時にウィンドウが出てきて変更した気がします。
windowsユーザが慣れ親しんだメニュー画面からも設定できるんですが、英語のマニュアルを読みながら、対応する日本語のメニューを探すのが大変だったので、ドキドキしながら初めての黒画面(=ターミナル)で設定を行いました。
画面左上部のラズベリーアイコンの隣がインターネットで、その隣がターミナルです。
この黒画面(=ターミナル)を開くと、「pi@raspberrypi:~ $」の横にチカチカしているカーソルがあり、そこに上記のマニュアルに書いているコードをコピペして行きます。
このとき「pi@」の部分が現在「pi」というユーザアカウントで操作していますという意味らしいです。自分のアカウントを使っている時は「アカウント名@」に変わっていました。
「~」は、ユーザのHomeにいますという意味で、「$」は、一般ユーザらしい。こういうちっちゃいこともボチボチ学習中。
以下、調べた事の自分用メモ
パスワードを変える
sudo raspi-config
sudoは、SuperUserDo、管理者権限で実行しますって意味らしい。
新しいユーザの追加
sudo adduser alice
「sudo + adduser + 新ユーザ名」で、ユーザの追加。これは分かりやすい。
新しいユーザに権限をつける
新しいユーザに「pi」さんと同じ権限をつけるにあたって、「pi」さんが持っている権限を調べたいときは、
sudo groups pi
piの部分がユーザ名だから、他のユーザの権限も同じように調べられる。
新ユーザに権限を付与するコマンドは、
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi alice
念のためgroupsコマンドで調べた「pi」さんの権限と照らし合わせたけど、マニュアルと一緒だったので、丸っとコピペ。
「sudo + usermod + option + group + user」という作りになっていて、
- 「usermod」は、user modify、つまりユーザ情報の変更
- 「-a」オプションは、appendで、「追加」
- 「-G」オプションは、groupで、「グループ」
- piさんが権限を持っているグループをコンマでつなぎながら羅列
- 最後に自分のユーザ名
新ユーザで権限を試す
sudo su - alice
「sudo + su + option + user」という構成で、
- 「su」は、swich user
- 「-」オプションは、log-in
- ログイン先のユーザ名
これで、「新ユーザ名@raspberrypi: ~ $」の新しい黒画面が開いて、コマンドをいろいろ試せました。
「pi」さんのプロセスを終了する
sudo pkill -u pi
「sudo + pkill + options + target」みたいな作りで、
- 「pkill」は、process killで、プロセスを終了する
- 「-u」オプションは、対象が「ユーザ」であるっていみ
- 「pi」はプロセス終了の対象となった具体的なユーザ名
「pi」さんを削除するか、悩む
削除するコマンドは、
sudo deluser pi
しかし、「Please note that with the current Raspberry Pi OS distribution, there are some aspects that require the pi user to be present.」と書いてあって、消してしまっていいものか、よくわからないので、一旦保留。
いくつかラズパイのセキュリティー関係のネット情報を読んでみたところ、削除しているケースが殆どだったので、そのうち削除するかも。
「sudo」命令にパスワードを要求する
新ユーザを登録すると、スーパーユーザ命令の際にパスワードを要求されるようになっていたのですが、元々いた「pi」さんはフリーパス。
visudoファイルへ行って、パスワードを要求状況を書きかえる。
「pi」さんは、パスワードを入れないとスーパーユーザ命令を出せないようにするのは、
pi ALL=(ALL) PASSWD: ALL
新ユーザーにパスワードを求めない様にするには、
新ユーザ名 ALL=(ALL) NOPASSWD: ALL
visudoファイルやsudoerについては、公式の「Linux users」に詳しく書いてありました。
私はラズパイでファイルを扱うのが初めてだったので、保存の仕方が分かんなくて、windowsの感覚で「ctrl + s」を押したら上書きされたので、結果オーライってことにします。
最新のセキュリティー修正版をしっかり入れる
ラズパイのアップデートはターミナル(=黒画面)で、APT (= Advanced Packaging Tool)というツールを使って、2.5ステップで行いました。
まずは、システムのパッケージリストのアップデート
sudo apt update
次に、ラズパイの空き容量を確認するだけの0.5ステップを経て、
df -h
- 「df」ディスクスペースの空き容量やファイルシステムごとの占有量などを表示するコマンド
- 「-h」は、human-readableで人間が読める形式で表示()
最後に自分がインストールしている全てのパッケージのアップグレードを行います。
sudo apt full-upgrade
一応、「df -h」で確認した空き容量とアップグレードに必要なデータ容量を確認してから、「Y/n」を選択するようにした方がいいかな?
参考: Updating and upgrading Raspberry Pi OS
この後、ラズパイを遠隔操作する際に利用する「SSH」(=Secure Shell)周りの、「SSHにセキュリティーチェックの定時サイクルジョブを設定する」、「SSHのパスワードとユーザー名を改善する」、「SSHを鍵認証にする」などが続きますが、利用しない場合はdefaultでSSHが無効となっている設定とのことなので、使う時に再度見直します(別記事)。
ファイアウォール(iptablesまたはUFW)を有効化する
公式ページでは、UFW(=Uncomplicated FireWall)の使い方が説明してあったので、それに従いました。日本語にすると「複雑じゃないファイアウォール」って、なんか笑っちゃうネーミング。
sudo apt install ufw
先ほども登場した「APT (= Advanced Packaging Tool)」をインストールですね。なんかシンプルな英語で好き。
インストールした「ufw」(=複雑じゃないファイアフォール)を有効化。
sudo ufw enable
こちらもシンプルな英語で好き。
一応、ステータス確認方法もメモ。
sudo ufw status
何のアクセスも許可していないので「activated」って出ているだけでした。
この後、「(サーバー化している場合は)fail2banをインストールする」が続きますが、今のところ「サーバー化」は、個人的なやってみたいプロジェクトに入っていないので、スルーしました。