Raspberry PiをSSHで運用する際のセットアップ方法
OSイメージをmicroSDカードへ書き込む
Raspberry Pi のOSはRaspbian
SSHで運用するのでLite版を使う。
書き込む方法は、いくつかあるが通常の方法がおすすめ。今回は通常の方法
- OSをmicroSDカードへ書き込めるソフトを使い書き込む通常の方法
- PiBakeryを使いWi-Fiなどネットーワーク設定を先にセットアップし書き込む方法
書き込みソフト
- balenaEtcher
- Rufus
- Win32 Disk Imager
SSHを有効にする
初期状態ではSSHが無効になっているのでSSHを有効にするためにbootボリュームの直下にWindowsなどで、ファイル名「ssh」のファイルを作成する。
wpa_supplicant.conf ファイルを作成
SSHで操作するためには、ネットーワークに繋がっている必要があるため、WiFiを使う場合は、WiFiの設定をあらかじめ設定する。
ファイル名「wpa_supplicant.conf」のファイルを作成しWiFiの設定をする。
wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="yourwifi_ssid"
psk="wifipassword"
}
WiFiネットワークを追加するコマンド
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
SSHクライアント
SSHで操作するためには、SSHクライアントが必要。好きなSSHクライアント選ぶ。Windows Terminalがおすすめ。
今回はTeraTerm
- TeraTerm
- Windows Terminal
- PuTTY
Raspberry Piのデフォルト設定
Raspbianにログインする初期のユーザー、パスワードは下記
- ユーザー:pi
- パスワード:raspberry
パスワードは最初に変える
# Terminalからのログイン方法
# -p がポート番号
ssh [email protected] -p 22
電源
電源をオフ、再起動するコマンド。
電源をオフにする
sudo shutdown -h now
# or
sudo halt
再起動
sudo reboot
言語設定
言語、タイムゾーンが日本になっていないので日本設定にする。
sudo raspi-config
4 Localisation Options
Change Locale
スペースキーで項目を選択する。Tabキーでokに移動。
- ja_JP.EUC-JP EUC-JP
- ja_JP.UTF-8 UTF-8
- en_US.UTF-8 UTF-8
Change Timezone
タイムゾーン
tokyo
ユーザーの設定
初期ユーザーのpiを変更、新しいユーザーを追加する。
いずれか選ぶ
- 新しいユーザーを追加してpiユーザーを無効(推奨)
- pi ユーザー名とパスワードを変更
- pi ユーザーのパスワードを変更
新しいユーザーを追加する
新しいユーザー(alice)を追加するには、次のコマンドを入力
sudo adduser alice
新しいユーザーのホームディレクトリが作られる
/home/alice/
新しいユーザー(alice)に pi ユーザー相当の権限を与える
sudo usermod -a -G adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,gpio,i2c,spi alice
新しいユーザーが動作していることを確認
sudo su - alice
piユーザーを無効、削除する
piユーザーを無効化
# sudoグループから削除
sudo gpasswd -d pi sudo
#sudo権限を無効化
sudo nano /etc/sudoers.d/010_pi-nopasswd
#pi ALL=(ALL) NOPASSWD: ALL
alice ALL=(ALL) PASSWD: ALL
sudo passwd pi
piユーザーを削除する
sudo deluser pi
sudo userdel -r pi
sudoにパスワードを要求させる
強制的にsudoパスワードを要求するように、次のコマンドを入力
sudo nano /etc/sudoers.d/010_pi-nopasswd
ユーザー(またはスーパーユーザー権限を持つユーザー)を次のように変更。
alice ALL=(ALL) PASSWD: ALL
root ユーザーについて
デフォルトでは root にパスワードが設定されていなければログインも su も出来ないようになっている。suは、Switch Userの略
更新
ファームウェアの更新(任意)不要
https://www.raspberrypi.org/documentation/raspbian/applications/rpi-update.md
sudo apt-get install rpi-update
sudo rpi-update
sudo reboot
パッケージの更新
sudo apt-get update
sudo apt-get upgrade
# or
sudo apt-get dist-upgrade
# 下記のコマンドがおすすめ
sudo apt-get update && sudo apt-get upgrade -y
[未完成]設定
sudo raspi-config
https://www.raspberrypi.org/documentation/configuration/security.md
セキュリティ設定
https://www.raspberrypi.org/documentation/configuration/security.md
[未完成]SSHのセキュリティを改善
SSHの初期22ポートは攻撃対象なのでポート番号を変更する
sshの待ち受けポート番号変更
sudo nano /etc/ssh/sshd_config
systemctl restart ssh
# or
sudo /etc/init.d/ssh restart
# Terminalからのログイン方法
# -p がポート番号
ssh [email protected] -p 22
SSH鍵生成
鍵ペア認証を使用
Tera TermでSSH鍵生成
公開鍵と秘密鍵の作り方
Tera TermのSCP機能を利用
最初のTera Term新しい接続ウインドウを閉じ、Tera Termのメニューから設定 > SSH鍵生成を選ぶ。
秘密鍵
id_rsa
公開鍵
id_rsa.pub
~/.ssh/id_rsa.pub
mkdir .ssh
cd ~
sudo mkdir .ssh
cat id_rsa.pub >> .ssh/authorized_keys
sudo chmod 700 .ssh
sudo chmod 600 .ssh/authorized_keys
rm id_rsa.pub
sudo nano /etc/ssh/sshd_config
ファイアウォールをインストール
UFW
sudo apt install ufw
UFWの設定
UFWを有効にする前に、SSHが使用しているポートのアクセスを許可する
# SSHが使用しているポートのアクセスを許可する
sudo ufw allow ssh
特定のポート(22)のアクセスを許可
sudo ufw allow 22
UFWの現在の設定
sudo ufw status
UFWを有効にする
sudo ufw enable
UFWを無効にする
sudo ufw disable
指定できるアプリケーションを見る
sudo ufw app list
設定を削除
sudo ufw status numbered
sudo ufw delete 番号
fail2ban
sudo apt install fail2ban
設定ファイル(jail.conf)をコピーしてjail.localを使う。
jail.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
指定したJAILルールのステータスとBAN状況を表示
sudo fail2ban-client status sshd
Fail2banのステータスを表示
sudo fail2ban-client status
Fail2ban再起動
sudo systemctl restart fail2ban
対象のIPからのパケットを REJECT(拒否)ではなくDROP(破棄) する。
sudo nano /etc/fail2ban/action.d/iptables-common.conf
blocktype = DROP
systemctl start fail2ban
systemctl stop fail2ban