初心者向！Raspberry Pi 最低限のセキュリティ設定【所要時間 30分】

Raspberry Piはどこからでもアクセスできる便利な端末だが、
ネットワークへの侵入口になるなどのセキュリティホールになってしまう恐れがある。

不正アクセスされると自宅のサーバや家電を自由に制御されたり、パスワードを盗まれたり、知らない間にウィルスをばら撒かれる可能性がある。
Raspberry Piにはセキュアブートの機能がないので、設定が必要。

# 最低限のセキュリティ設定をしよう！

## 作業概要
1. ラズパイを最新版にする
2. rootのパスワードを設定する
3. 新しいユーザーを追加する
4. 「pi」ユーザーを削除する
5. SSHのポート番号を変更する
6. rootユーザーで直接ログイン出来なくする

【所要時間】30分

参照させていただいた記事
[5ステップで完了！ラズベリーパイ(B+)のセキュリティ設定まとめ！](http://masatolan.com/raspberry-pi/raspberry-pi-security/)
[Raspberry Piを攻撃から守るための手順](http://makezine.jp/blog/2017/09/secure-your-raspberry-pi-against-attackers.html)


# 1. ラズパイを最新版にする

```shell-session
$ sudo rpi-update
```

完了したら再起動

```shell-session
$ sudo reboot
```

# 2. rootのパスワードを設定する
初期状態のラズベリーパイは、何でも可能な「root」にパスワードが設定されていません。
このままだと、誰でもrootへアクセス出来るので「パスワード」を設定する。

`password`などは使用せず、推測されづらいパスワードにしましょう。

以下を実行

```shell-session
$ sudo passwd root
```
新しいパスワードを2回入力し、

```shell-session
passwd: パスワードは正しく更新されました
```

と表示されればOK

# 3. 新しいユーザーを追加する
ラズパイは、最初から「pi」ユーザーが設定されているのですが、「ユーザー名」も「パスワード」も公開されているので、使わない方が良いです。
新しいユーザーを追加して使用しましょう。

以下は、新規ユーザー名を「newuser」にする場合です。

ラズパイのコマンドラインから、以下を実行。

```shell-session
$ sudo adduser newuser
```

「pi」ユーザーと同じ権限にするため、まず「pi」ユーザーのgroupを確認

```shell-session
$ groups pi
```

表示を確認したら、
新規ユーザーに全部このgroupを追加。sudo権限も追加しています。

```shell-session
$ sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,netdev,input,spi,gpio newuser
```

※ 最後の「newuser」は、新規ユーザー名

groupが追加されたことを確認！

```shell-session
$ groups newuser
```

先ほどの「pi」ユーザーのようにグループ一覧が表示されたらOK。
何も表示されなかったら、前のコマンドを確認してください。

「pi」ユーザー内のファイルを、新規ユーザーにコピー

```shell-session
$ sudo cp -r /home/pi/* /home/newuser
```

「pi」ユーザーのオートログインを無効化

```shell-session
$ sudo nano /etc/lightdm/lightdm.conf`
```

真ん中らへんにあるこの行をコメントアウトする
`autologin-user=pi
 # autologin-user=pi`

```shell-session
$ sudo nano /etc/systemd/system/autologin@.service
```

新しいユーザー名を指定
`ExecStart=-/sbin/agetty --autologin pi --noclear %I $TERM`
`ExecStart=-/sbin/agetty --autologin [newuser] --noclear %I $TERM`


参照：
[Raspberry Pi3(ラズパイ)でpiユーザーの自動ログインを外す方法](https://qiita.com/t0yohei/items/f5355f8c456d9cf64679)

一旦ラズパイを終了させて、新規ユーザーでログインできるか確認

```shell-session
$ ssh newuser@raspberrypi
```

新しいユーザーでログイン後、ファイルがコピーできているか一応確認

```shell-session
$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos  python_games  workspace
```

オートログインの確認
piユーザーがいなければok

```shell-session
$ who
newuser    tty1         2018-05-22 14:53
newuser   pts/0        2018-05-22 14:54 
```


# 4.「pi」ユーザーを削除する

※ 削除せず、piのユーザー名を変更する、pi ユーザをロックする、という方法もあります。今回は削除する方法です。

新規ユーザーでログイン出来たら、もう「pi」ユーザーは使うことが無いので以下のコマンドで削除

```shell-session
$ sudo userdel -r pi
```

削除できたか確認

```shell-session
$ id -a pi
```

以下のように表示されたら削除できました

```shell-session
id: pi: no such user
```


# 5. SSHのポート番号を変更する

ラズパイの初期設定では、SSHのポート番号がデフォルトの「22」となっています。
このままだと攻撃されやすいので、自分の好きなポート番号に変更しましょう。

```shell-session
$ sudo nano /etc/ssh/sshd_config
```

5行目くらいにあるポートの設定を変更して保存。
`Port 22 ⇒  Port 12345`
ポート番号は、「49152〜65535」の中から好きに設定できます。
12345は例です。推測されづらいものにしましょう。

SSHを再起動

```shell-session
$ sudo /etc/init.d/ssh restart
```
[OK]が表示されたら完了です。

一度、ログアウトしてから

```shell-session
$ sudo reboot
```

以下のようにSSH接続

```shell-session
$ ssh newuser@raspberrypi -p 12345
```
「新しいユーザー」「新しいポート番号」で、SSH接続できるようになりました！

# 6. rootユーザーで直接ログイン出来なくする

```shell-session
$ sudo nano /etc/ssh/sshd_config
```
真ん中あたり、# Authentication:の下部にある

`PermitRootLogin yes`を
`PermitRootLogin no`　に変更。

ちなみに
`PermitRootLogin without-password`だと、パスワードを使用したrootユーザのログインを拒否。

PermintRootLogin の各種パラメータについて→
[ご存じですか? sshd_config の PermintRootLogin の各種パラメータについて](https://qiita.com/ine1127/items/b50b9a8f831736cf14ea)



お疲れ様でした！


## 課題
設定のバックアップを取る。SDカードは壊れることがある。なので、データまたはSDカードの中身全体を、暗号化したパッケージ、ファイル、またはファイルシステムとしてUSBメモリーにバックアップしておく。