😊

Raspberry pi の初期セットアップ

2024/04/09に公開

備忘録として、Raspberry Piの初期セットアップ内容をここに記します。

前提条件

  • Raspberry OS Lite (GUIなし)
  • 有線LAN接続
  • SSH を用いて操作を行う

SDカードにイメージの書き込み

Raspberry Pi Imager を用いてSDカードに OS を書き込みます。
直感的な GUI のため、操作に迷うことはないはずです。

[!error] 注意
OS イメージを書き込む時に SSH を有効にすることを忘れずに

初期設定

SSH から接続する際に、毎回パスワード入力しないで済むように ssh-copy-id コマンドを設定する

ssh-copy-id username@192.168.X.X

OS とファームウェアを最新化

sudo apt update && sudo apt upgrade -y && sudo apt full-upgrade -y && sudo apt autoremove -y && sudo apt autoclean -y

sudo rpi-eeprom-update

OS を自動的に最新化

sudo apt install unattended-upgrades

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
## すべてのファイルを更新対象にします
Unattended-Upgrade::Origins-Pattern {
	"o=*,a=*";
};

// 自動的にインストールされた未使用のカーネル関連パッケージの削除する
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";

// アップグレード後、新たに使用されなくなった依存関係を自動削除する。
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";

// アップグレード後に未使用のパッケージを自動削除する。
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// アップグレード時にリブートが必要な場合にリブートする
Unattended-Upgrade::Automatic-Reboot "true";

// 自動リブート有効時にユーザーがログイン中であってもリブートする
Unattended-Upgrade::Automatic-Reboot-WithUsers "true";

// 自動リブート有効時にいつリブートするか
Unattended-Upgrade::Automatic-Reboot-Time "02:00";

IPアドレスの固定

sudo nano /etc/dhcpcd.conf

## 自分の環境に合わせて修正
interface eth0
static ip_address=192.168.1.26/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

SDカード長命化&省電力化

SDカードの寿命を伸ばす対策

  • Swap機能を無効化(SDカードSwap書き込みを停止)
sudo apt autoremove -y dphys-swapfile
  • RAMDISK(tmpfs)機能を有効化(メモリ上にファイルを書き込む)
sudo nano /etc/fstab
## 3行を末尾に追加
tmpfs /tmp tmpfs defaults,size=256m,noatime,mode=1777 0 0 
tmpfs /var/tmp tmpfs defaults,size=256m,noatime,mode=1777 0 0 
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0

sudo reboot
  • Bluetooth と WiFi の無効化
sudo nano /boot/config.txt
or
sudo nano /boot/firmware/config.txt

## 以下を追加
dtoverlay=disable-bt
dtoverlay=disable-wifi

sudo reboot

セキュリティ対策

外部から不正にアクセスがあったときに自動でBANするアプリfail2banを入れます。

sudo apt -y install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
sudo nano /etc/fail2ban/jail.local

[DEFAULT]
# BAN除外
ignoreip = 127.0.0.1/8 192.168.0.0/24 10.20.30.1/24

# BANする時間
bantime = 24h

# 監視スパン(600秒)
findtime = 600

# 最大パスワード失敗回数
maxretry = 3

# SSHD のBANを有効化
[sshd]
enabled = true
backend = systemd

# 再発した場合は動作を重くする
[recidive]
enabled = true

新しい Ubuntu および Debian システムでの syslog から systemd ベースのログへの移行に関連しています。 Fail2ban は、デフォルトでは systemd ジャーナルと連携するように適切に構成されていません。
そのため、空のログファイルを作成します。

sudo touch /var/log/fail2ban.log
sudo chmod 640 /var/log/fail2ban.log
sudo systemctl restart fail2ban

実際に BAN されたIPアドレスを確認する方法

sudo fail2ban-client status sshd

Written-By-Human-Not-By-AI-Badge-white

Discussion