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

前提条件

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

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

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

注意

OS イメージを書き込む時に SSH を有効にすることを忘れずに

初期設定

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

ssh-copy-id [email protected]

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