Raspberry Pi セットアップ
Raspberry Pi OS Trixie
Webサーバー用 セキュリティ設定
Raspberry Pi OS Trixie
Webサーバー用 セキュリティ設定
Raspberry Pi 「Trixie」をWebサーバーにして、インターネットに公開して運用するに必要な「SSHのセキュリティ強化」 と「ファイアウォールの設定」を行う。
📌 Trixie では Bookworm より、セキュリティが厳格化されている点があり、注意が必要。
📌 Trixie では Bookworm より、セキュリティが厳格化されている点があり、注意が必要。
以下、Webサーバー用「セキュリティ設定」の手順を記録。
スポンサー リンク
目 次
以下の作業は、「パスワード認証」のSSH接続で行うが、全ての作業がうまくゆくまでこの接続を閉じないことが肝要。
1. SSHのセキュリティ強化
🔹 ssh設定ファイルのバックアップ。
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
🔹 ssh設定ファイルの編集。
sudo nano /etc/ssh/sshd_config
sudo nano /etc/ssh/sshd_config
編集内容。
14行目:Port 22 → nnnnn ← # ポート番号をデフォルト22から変更
32行目:LoginGraceTime 20 ← # クライアントが接続してから認証を完了するまでの制限時間 秒
33行目:PermitRootLogin no ← # root でのログインを禁止
35行目:MaxAuthTries 3 ← # 認証試行回数の上限を「3回」に設定
38行目:PubkeyAuthentication yes ← # 公開鍵認証を有効にする
41行目:AuthorizedKeysFile %h/.ssh/authorized_keys ← # 公開鍵の場所を指定する
57行目:PasswordAuthentication no ← # パスワード認証を無効化(鍵認証のみにする)
92行目:X11Forwarding no ← # リモートサーバー上のGUIアプリケーション画面を、ローカルPCへ転送(表示)する機能(X11転送)を無効化
- - - - - 最下行に下記を追記
125行目:AllowUsers xxxxx ← # 特定ユーザーのみ許可🔹 sshサーバを再起動する。
sudo systemctl restart ssh
sudo systemctl restart ssh
2. SSH接続の公開鍵の配置
パスワード認証のままだと毎回パスワード入力を求められるが、SSH公開鍵認証を設定すれば、パスワードなしでログインできるようになる。
公開鍵の保存場所。
• id_rsa (秘密鍵:PCに保存)
• id_rsa.pub (公開鍵:ラズパイへ転送)
• id_rsa (秘密鍵:PCに保存)
• id_rsa.pub (公開鍵:ラズパイへ転送)
🔹 ラズパイに【id_rsa.pub】を作成:
ユーザ名のフォルダに、「id_rsa.pub」ファイルを作成し、元の【id_rsa.pub】の内容を貼り付ける。
sudo nano /home/xxxxx/id_rsa.pub
ユーザ名のフォルダに、「id_rsa.pub」ファイルを作成し、元の【id_rsa.pub】の内容を貼り付ける。
sudo nano /home/xxxxx/id_rsa.pub
🔹 /.sshディレクトリーに公開鍵を配置する。
mkdir -p ~/.ssh
cat id_id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm id_rsa.pub.pub
mkdir -p ~/.ssh
cat id_id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
rm id_rsa.pub.pub
🔹 SSH サービスを再起動する。
sudo systemctl restart ssh
sudo systemctl restart ssh
📌 ここで、SSHを公開鍵でログインして、接続できるか確認する。
3. ファイヤーウォールの設定
🔹 UFW(Uncomplicated Firewall):ファイアウォール管理ツールの導入。
sudo apt install ufw -y
sudo apt install ufw -y
🔹 外部からの接続を全て拒否(incoming)。
sudo ufw default deny incoming
sudo ufw default deny incoming
🔹 内部からの通信は全て許可(outgoing)。
sudo ufw default allow outgoing
sudo ufw default allow outgoing
🔹 必要なポートのみ開放。
sudo ufw allow nnnnn/tcp # SSH(変更後のポート番号)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow nnnnn/tcp # SSH(変更後のポート番号)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
🔹 ルールを適用してファイアウォールを有効化。
sudo ufw enable
sudo ufw enable
🔹 状態を表示(ポリシー含む)。
sudo ufw status verbose
sudo ufw status verbose
🔹 UFWで IPv6 を無効にする。
sudo nano /etc/default/ufw
sudo nano /etc/default/ufw
🔹 7行目を IPV6=no に変更する。
🔹 一時的に無効化。
sudo ufw disable
sudo ufw disable
🔹 ルールを適用してファイアウォールを有効化。
sudo ufw enable
sudo ufw enable
🔹 状態を再確認。
sudo ufw status verbose
sudo ufw status verbose
4. PasswordAuthentication yes に上書きされる
🔹 インクルードされる /etc/ssh/sshd_config.d/*.conf の内容を見ると、
👉 ”最近のSSH” には、
PasswordAuthentication yes
が記述されている。(以前は、空だった。)
👉 ”最近のSSH” には、
PasswordAuthentication yes
が記述されている。(以前は、空だった。)
🔹 sshd_config 本体より、sshd_config.d の方が優先される場合がある。
👉 これにより、sshd_config が上書きされる。
→ この結果、「公開鍵認証」だけに設定したつもりでも、「パスワード認証」もOKとなる。
👉 これにより、sshd_config が上書きされる。
→ この結果、「公開鍵認証」だけに設定したつもりでも、「パスワード認証」もOKとなる。
✅ 対策:
sudo nano /etc/ssh/sshd_config.d/*.conf
sudo nano /etc/ssh/sshd_config.d/*.conf
🔹 sshサーバを再起動する。
sudo systemctl restart ssh
sudo systemctl restart ssh
5. Trixie では古い ssh-rsa は拒否される
Trixie(新しいOpenSSH)では、古い ssh-rsa は拒否される。
rsa が含まれているか確認するコマンド
sudo sshd -T | grep pubkeyacceptedalgorithms
sudo sshd -T | grep pubkeyacceptedalgorithms
pubkeyacceptedalgorithms ssh-ed25519-cert-v01@openssh.com,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,sk-ssh-ed25519-cert-v01@openssh.com,sk-ecdsa-sha2-nistp256-cert-v01@openssh.com,rsa-sha2-512-cert-v01@openssh.com,rsa-sha2-256-cert-v01@openssh.com,ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256ssh-rsaは含まれていない。
ssh-rsaは古いSHA-1を使用しており、セキュリティ脆弱性のリスクから非推奨・廃止が進んでいる。
ssh-rsaは古いSHA-1を使用しており、セキュリティ脆弱性のリスクから非推奨・廃止が進んでいる。
✅ 対策:「ed25519鍵」を使うのが、望ましい。
🔹 ed25519鍵の作成。
ssh-keygen -t ed25519 -a 100 -C "mint@client"
ssh-keygen -t ed25519 -a 100 -C "mint@client"
• -a 100:ブルートフォース耐性強化
🔹 サーバーへ登録。
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p ppppp uuuuu@192.168.11.109
• ppppp:ポート番号
• uuuuu:ユーザー名
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p ppppp uuuuu@192.168.11.109
• ppppp:ポート番号
• uuuuu:ユーザー名
🧰 この ssh-copy-id コマンドは、「一度パスワードで入って鍵を書き込む」仕組みなので、パスワードログインが許可されている必要がある。
PasswordAuthentication yes
PasswordAuthentication yes
✅ パスワードログインに戻したくない場合は、
cat ~/.ssh/id_ed25519.pub
で、鍵の内容をコピーし、
nano /home/uuuuu/.ssh/authorized_keys
で、鍵の内容を貼り付けてもOK。
cat ~/.ssh/id_ed25519.pub
で、鍵の内容をコピーし、
nano /home/uuuuu/.ssh/authorized_keys
で、鍵の内容を貼り付けてもOK。
💎 古いキーの後に、新しいキーの内容を貼り付けた例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... old-key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... new-key
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... old-key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... new-key
6. 不正アクセス対策「Fail2ban」について
🛡️ fail2ban とは?
ログを監視して、怪しいIPを自動でBAN(遮断)する仕組みで、
• ログ(nginx / ssh / mail など)を監視
• 一定回数以上の異常アクセスを検知
• IPアドレスをファイアウォールでブロック
という流れで動作し、SSH やウェブへのブルートフォース攻撃を自動的にブロックしてくれる。
ログを監視して、怪しいIPを自動でBAN(遮断)する仕組みで、
• ログ(nginx / ssh / mail など)を監視
• 一定回数以上の異常アクセスを検知
• IPアドレスをファイアウォールでブロック
という流れで動作し、SSH やウェブへのブルートフォース攻撃を自動的にブロックしてくれる。
🧰 「Fail2ban」の導入には、nginx の設定と連携させることが必要。
以上。
(2026.03.26)
(2026.03.26)
スポンサー リンク














