Raspberry Pi Trixie Webサーバー用 セキュリティ設定

Raspberry Pi セットアップ
Raspberry Pi OS Trixie
Webサーバー用 セキュリティ設定
 
Raspberry Pi 「Trixie」をWebサーバーにして、インターネットに公開して運用するに必要な「SSHのセキュリティ強化」 と「ファイアウォールの設定」を行う。
📌 Trixie では Bookworm より、セキュリティが厳格化されている点があり、注意が必要。
 
SSHのセキュリティ強化
 
以下、Webサーバー用「セキュリティ設定」の手順を記録。
 
 

 

スポンサー リンク

 

 
 
 
 
以下の作業は、「パスワード認証」のSSH接続で行うが、全ての作業がうまくゆくまでこの接続を閉じないことが肝要。
 
 
1. SSHのセキュリティ強化
 
🔹 ssh設定ファイルのバックアップ。
 sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org
 
🔹 ssh設定ファイルの編集。
 sudo nano /etc/ssh/sshd_config
 
ssh設定ファイルのバックアップと編集
 
編集内容。
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設定ファイルの編集
ssh設定ファイルの編集
 
🔹 sshサーバを再起動する。
 sudo systemctl restart ssh
 
sshサーバを再起動する
 
 
 
2. SSH接続の公開鍵の配置
 
パスワード認証のままだと毎回パスワード入力を求められるが、SSH公開鍵認証を設定すれば、パスワードなしでログインできるようになる。
 
公開鍵の保存場所。
 • 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】の内容を貼り付ける
 
🔹 /.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
 
/.sshディレクトリーに公開鍵を配置する
 
🔹 SSH サービスを再起動する。
sudo systemctl restart ssh
 
sshサーバを再起動する
 
📌 ここで、SSHを公開鍵でログインして、接続できるか確認する。
 
 
 
3. ファイヤーウォールの設定
 
🔹 UFW(Uncomplicated Firewall):ファイアウォール管理ツールの導入。
 sudo apt install ufw -y
 
ファイアウォール管理ツールの導入
 
🔹 外部からの接続を全て拒否(incoming)。
 sudo ufw default deny incoming
 
🔹 内部からの通信は全て許可(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 enable
 
🔹 状態を表示(ポリシー含む)。
 sudo ufw status verbose
 
ファイヤーウォールの設定
 
🔹 UFWで IPv6 を無効にする。
 sudo nano /etc/default/ufw
 
🔹 7行目を IPV6=no に変更する。
 
7行目を IPV6=no に変更する
 
🔹 一時的に無効化。
 sudo ufw disable
 
🔹 ルールを適用してファイアウォールを有効化。
 sudo ufw enable
 
🔹 状態を再確認。
 sudo ufw status verbose
 
UFWで IPv6 を無効にする
 
 
 
4. PasswordAuthentication yes に上書きされる
 
🔹 /etc/ssh/sshd_config の 12行目に、
 Include /etc/ssh/sshd_config.d/*.conf
がある。
🔹 /etc/ssh/sshd_config の 12行目に、 Include /etc/ssh/sshd_config.d/*.conf がある。
 
🔹 インクルードされる /etc/ssh/sshd_config.d/*.conf の内容を見ると、
👉 ”最近のSSH” には、
 PasswordAuthentication yes
が記述されている。(以前は、空だった。)
 
🔹 sshd_config 本体より、sshd_config.d の方が優先される場合がある。
👉 これにより、sshd_config が上書きされる。
 → この結果、「公開鍵認証」だけに設定したつもりでも、「パスワード認証」もOKとなる。
 
✅ 対策:
 sudo nano /etc/ssh/sshd_config.d/*.conf
 
🔹 行ごとコメントアウトする。
 # PasswordAuthentication yes
行ごとコメントアウトする
 
🔹 sshサーバを再起動する。
 sudo systemctl restart ssh
 
 
 
5. Trixie では古い ssh-rsa は拒否される
 
Trixie(新しいOpenSSH)では、古い ssh-rsa は拒否される。
 
rsa が含まれているか確認するコマンド
 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-256
ssh-rsaは含まれていない。
ssh-rsaは古いSHA-1を使用しており、セキュリティ脆弱性のリスクから非推奨・廃止が進んでいる。
 
✅ 対策:「ed25519鍵」を使うのが、望ましい。
 
🔹 ed25519鍵の作成。
 ssh-keygen -t ed25519 -a 100 -C "mint@client"
 • -a 100:ブルートフォース耐性強化
 
ed25519鍵の作成
 
🔹 サーバーへ登録。
 ssh-copy-id -i ~/.ssh/id_ed25519.pub -p ppppp uuuuu@192.168.11.109
 • ppppp:ポート番号
 • uuuuu:ユーザー名
 
サーバーへ登録
 
🧰 この ssh-copy-id コマンドは、「一度パスワードで入って鍵を書き込む」仕組みなので、パスワードログインが許可されている必要がある。
 PasswordAuthentication yes
 
✅ パスワードログインに戻したくない場合は、
 cat ~/.ssh/id_ed25519.pub
で、鍵の内容をコピーし、
 nano /home/uuuuu/.ssh/authorized_keys
で、鍵の内容を貼り付けてもOK。
 
💎 古いキーの後に、新しいキーの内容を貼り付けた例:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... old-key
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... new-key
 
 
6. 不正アクセス対策「Fail2ban」について
 
🛡️ fail2ban とは?
ログを監視して、怪しいIPを自動でBAN(遮断)する仕組みで、
 • ログ(nginx / ssh / mail など)を監視
 • 一定回数以上の異常アクセスを検知
 • IPアドレスをファイアウォールでブロック
という流れで動作し、SSH やウェブへのブルートフォース攻撃を自動的にブロックしてくれる。
 
🧰 「Fail2ban」の導入には、nginx の設定と連携させることが必要。
 
 
以上。
(2026.03.26)
 

 

スポンサー リンク

 

             

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください