RaspberryPi OSをインストールするときの一連のやるべきこと

## Raspberry Pi OSインストールすると時って色々やりますよね？
最初にOSインストールする時ってそれ以外にも色々設定するじゃないですかぁ。でも毎回何やったかちゃんと覚えていなかったので、どんな設定をしたかを備忘録的に書いていこうと思います。
## 前提
### 用途
* 基本的にCUIのみで使う予定
* Raspberry Pi4 B+以上で使う想定
* ～サーバとかで使う予定
### どんな感じにしたい？
* 無駄な機能は止めたい
* セキュアな感じのはしたい
* とりあえずどんなサーバにするにしても、共通な設定をここに記録したい
## OSインストール
### Imager使ってイメージ書き込み
1. Raspberry Pi Imagerを起動する
1. デバイスとOSとストレージを選択して「次へ」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/004054e9-83ab-2b5d-f807-95d39a61ee7f.png)
3. 「設定を編集する」をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/85d68d99-4e0d-4d93-b19b-2817ea034829.png)
4. ホスト名とユーザ名・パスワード、ロケールを設定して「保存」。そして書き込み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/8de4ac12-1c40-edc6-7b1f-36338d29f3c1.png)
### 無線LANとBluetooth機能をOFF
windowsから見えるパーティションに入っている**config.txt**の末尾に以下の内容を追記する。
```config.txt
dtoverlay=disable-wifi
dtoverlay=disable-bt
```
終わったら、Raspberry PiにmicroSDカードを挿して電源ON(自分はここからteraterm使って作業)

## 初期設定
### エイリアスの設定
`ls -l`を`ll`で実施したいので、その設定
```bash
vi /etc/profile.d/command_alias.sh
# 以下の内容を記載
alias ll='ls $LS_OPTIONS -l'

# 以下で反映
source /etc/profile.d/command_alias.sh
```
### sshへのrootアクセスを禁止
イメージ書き込むときにユーザ作ってるし、rootはパスワード設定していないけど念のため。
```bash
sudo vi /etc/ssh/sshd_config

# PermitRootLoginの部分の#を取り、以下のように書き換えます。
PermitRootLogin no
:wq
```

### リポジトリを編集
今入っているリポジトリは遅い感じがするので、国内のリポジトリとBackportsリポジトリを入れます。
```bash
sudo vi /etc/apt/sources.list

#以下の用にコメントアウト
#deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
#deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware

#以下の行を追加
deb https://ftp.kddilabs.jp/Linux/packages/Debian/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb http://ftp.riken.jp/Linux/debian/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb https://ftp.tsukuba.wide.ad.jp/debian/ bookworm-backports main non-free-firmware
deb https://ftp.riken.jp/Linux/debian/debian/ bookworm-backports main non-free-firmware
deb https://ftp.kddilabs.jp/Linux/packages/Debian/debian/ bookworm-backports main non-free-firmware
deb http://ftp.nara.wide.ad.jp/pub/Linux/debian/ bookworm-backports main non-free-firmware
deb https://ftp.tsukuba.wide.ad.jp/debian/ bookworm main contrib non-free non-free-firmware
deb https://ftp.riken.jp/Linux/debian/debian/ bookworm main contrib non-free non-free-firmware
deb https://ftp.kddilabs.jp/Linux/packages/Debian/debian/ bookworm main contrib non-free non-free-firmware
deb http://ftp.nara.wide.ad.jp/pub/Linux/debian/ bookworm main contrib non-free non-free-firmware
deb https://ftp.tsukuba.wide.ad.jp/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://ftp.riken.jp/Linux/debian/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://ftp.kddilabs.jp/Linux/packages/Debian/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://ftp.nara.wide.ad.jp/pub/Linux/debian/ bookworm-updates main contrib non-free non-free-firmware
:wq
```
追加したら、一度`sudo apt update`しておきます。

### apt-fastのインストール
apt-fastを入れるためのリポジトリを追加します。
```bash
sudo vi /etc/apt/sources.list

# 以下の行を追加
deb [signed-by=/etc/apt/keyrings/apt-fast.gpg] http://ppa.launchpad.net/apt-fast/stable/ubuntu focal main
:wq

# 以下のコマンドを実行
sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xBC5934FD3DEBD4DAEA544F791E2824A7F22B44BD" | sudo gpg --dearmor -o /etc/apt/keyrings/apt-fast.gpg
sudo apt update
sudo apt install apt-fast
```
「apt」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/a4d9e7b9-49bc-4774-c9d5-9f4f1c452c2a.png)
「10」に設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/4c896316-8358-94fb-98aa-2fc22a0da660.png)
「No」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232121/7e99539e-b61e-b721-37b6-62ae78b3e91a.png)
終わったら`sudo apt upgrade`で最新化します。

### Vimインストール
入っていないので入れます。
```bash
sudo apt install -y vim
```

### RKHunterインストール	
RKHunterをインストールして、ルートキットを検出出来るようにします。
```bash
sudo apt -y install rkhunter curl
sudo vi /etc/default/rkhunter

# 以下の箇所を書き換えます。
# trueに修正(デイリー走査)
CRON_DAILY_RUN="true"
# trueに修正(週刊DBアップデート)
CRON_DB_UPDATE="true"
# 自分のメールアドレスを入力
REPORT_EMAIL="lovely@yukarin.lovelove"
:wq

sudo vi /etc/rkhunter.conf

# 以下の箇所を書き換えます。
# 107行目
UPDATE_MIRRORS=1
# 122行目
MIRRORS_MODE=0
# 1190行目
WEB_CMD=""
:wq

rkhunterのDBアップデート
sudo rkhunter --update
# 以下のように出力されます。
[ Rootkit Hunter version 1.4.6 ]

Checking rkhunter data files...
  Checking file mirrors.dat                                  [ Updated ]
  Checking file programs_bad.dat                             [ No update ]
  Checking file backdoorports.dat                            [ No update ]
  Checking file suspscan.dat                                 [ No update ]
  Checking file i18n/cn                                      [ Skipped ]
  Checking file i18n/de                                      [ Skipped ]
  Checking file i18n/en                                      [ No update ]
  Checking file i18n/tr                                      [ Skipped ]
  Checking file i18n/tr.utf8                                 [ Skipped ]
  Checking file i18n/zh                                      [ Skipped ]
  Checking file i18n/zh.utf8                                 [ Skipped ]
  Checking file i18n/ja                                      [ Skipped ]

  # システムファイル情報のアップデート
  sudo rkhunter --propupd
  # 以下のように出力されます。
  [ Rootkit Hunter version 1.4.6 ]
File updated: searched for 179 files, found 139

# チェック実行
sudo rkhunter --check --sk
```
これで異常が出ずに終わることを確認します。

### ClamAVインストール
ClamAVを入れて、ウイルスなどを検出出来るようにします。
```bash
sudo apt -y install clamav
sudo sed -i -e "s/^NotifyClamd/#NotifyClamd/g" /etc/clamav/freshclam.conf
sudo systemctl stop clamav-freshclam
sudo freshclam
sudo systemctl start clamav-freshclam

# 動作確認
sudo clamscan --infected --remove --recursive /home
# 以下のように検出されなければOK
----------- SCAN SUMMARY -----------
Known viruses: 8703662
Engine version: 1.0.7
Scanned directories: 2
Scanned files: 4
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 54.950 sec (0 m 54 s)
Start Date: 2025:01:07 14:09:54
End Date:   2025:01:07 14:10:49
```

### sshのログイン相手を限定
ログイン出来るIPアドレスを限定して、それ以外の端末からはログイン出来ないようにします。
```bash
sudo vi /etc/hosts.deny
# 末行に以下を追記（一律アク禁）
sshd: ALL
:wq

sudo vi /etc/hosts.allow
# 末行に以下を追記（許可するIPゾーン）
sshd: 192.168.111.0/24 127.0.0.0/8
:wq
```
teratermを新しく立ち上げて、入れるか試してみる。

### ufwインストール
ファイアウォールは入れておかないとですよね。
```bash
sudo apt -y install ufw
sudo systemctl enable ufw

# 状態確認
sudo ufw status
Status: inactive

# IPv6は設定しない
sudo vi /etc/default/ufw
# IPv6の箇所を「no」に修正
IPv6=no
:wq

# 有効化
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
sudo ufw status
Status: active

# ルール設定(とりあえず基本全部禁止)
sudo ufw default deny
# SSHだけ通す
sudo ufw allow openssh
# 以下のような表示がされる
Rule added

sudo ufw status
# 以下のような表示がされる
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere

# 反映
sudo ufw reload
# 以下のような表示がされる
Firewall reloaded
```

### NTPクライアントの設定
`ntp.nict.jp`を参照するように設定します。
```bash
sudo vi /etc/systemd/timesyncd.conf

# 16行目をコメントアウトして、以下のように値を追記
NTP=ntp.nict.jp
:wq

# サービスをリスタート&動作確認
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status
# 以下のように出力される
       Server: 133.243.238.244 (ntp.nict.jp)
Poll interval: 1min 4s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 1
    Reference: NICT
    Precision: 1us (-20)
Root distance: 0 (max: 5s)
       Offset: -7.117ms
        Delay: 5.945ms
       Jitter: 0
 Packet count: 1
    Frequency: -80.588ppm
```