Raspberry Pi セットアップ
Raspberry Pi OS Trixie
Webサーバー用 セキュリティ設定
Raspberry Pi OS Trixie
Webサーバー用 セキュリティ設定
Raspberry Pi 「Trixie」をWebサーバーとして、インターネットに公開・運用するに必要な「SSHのセキュリティ強化」 と「ファイアウォールの設定」を行う。
以下、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 51158/tcp # SSH(変更後のポート番号)
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 51158/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. 不正アクセス対策「Fail2ban」について
🛡️ fail2ban とは?
ログを監視して、怪しいIPを自動でBAN(遮断)する仕組みで、
• ログ(nginx / ssh / mail など)を監視
• 一定回数以上の異常アクセスを検知
• IPアドレスをファイアウォールでブロック
という流れで動作し、SSH やウェブへのブルートフォース攻撃を自動的にブロックしてくれる。
ログを監視して、怪しいIPを自動でBAN(遮断)する仕組みで、
• ログ(nginx / ssh / mail など)を監視
• 一定回数以上の異常アクセスを検知
• IPアドレスをファイアウォールでブロック
という流れで動作し、SSH やウェブへのブルートフォース攻撃を自動的にブロックしてくれる。
🧰 「Fail2ban」の導入には、nginx の設定と連携させることが必要。
以上。
(2026.03.26)
(2026.03.26)
スポンサー リンク










