← アーキテクチャ なぜセキュリティが必要か →

ネットワーク

アドレスとポート

ネットワーク設定を理解することは、セキュリティの基礎です。

コンポーネント IP/インターフェース ポート 公開範囲 備考
Caddy HTTP 0.0.0.0 80/tcp 全体公開 HTTPSへリダイレクト
Caddy HTTPS 0.0.0.0 443/tcp 全体公開 TLS終端 + BasicAuth
SSH(レート制限付き) 0.0.0.0 22/tcp 制限付き 信頼できるIPのみ許可
OpenClaw Gateway 127.0.0.1 18789/tcp 内部のみ Caddyのみアクセス可能

ポートの「公開範囲」って?

graph TD subgraph "公開ポート" P80["Port 80
HTTP → HTTPSリダイレクト"] P443["Port 443
HTTPS(TLS終端)"] end subgraph "内部のみ" G18789["Port 18789
Gateway(ループバックのみ)"] end P80 -->|"リダイレクト"| P443 P443 -->|"プロキシ"| G18789

トラフィック経路

公開ルート(インターネットからのアクセス)

インターネット → Caddy(80/443) → Gateway(ループバック)

SSHトンネル(管理用)

# ローカルPCからVPSのGatewayに直接アクセスする方法
ssh -L 18789:127.0.0.1:18789 user@<YOUR_VPS_IP>
curl http://localhost:18789/status

SSHトンネルを使うと、Gatewayポートを開放せずにローカルPCから直接確認できます。

UFW ファイアウォール

UFW(Uncomplicated Firewall)は、Ubuntu標準のファイアウォールです。

ルール設定

# デフォルトですべての受信を拒否
sudo ufw default deny incoming

# 必要なポートだけ開ける
sudo ufw allow 80/tcp      # HTTP(Caddy用)
sudo ufw allow 443/tcp     # HTTPS(Caddy用)
sudo ufw limit 22/tcp      # SSH(レート制限付きで brute-force 対策)
sudo ufw deny 18789        # Gateway ポート(明示的拒否)

# 有効化
sudo ufw enable

limit とは?

limit は「短時間に何度も接続してきたIPを自動ブロックする」設定です。SSHへの総当たり攻撃(ブルートフォース攻撃)を防ぎます。

確認コマンド

# DNSが正しく向いているか
dig +short example.com

# Gateway が外部から見えないことを確認
sudo nmap -p 18789 <YOUR_VPS_IP>     # → filtered/closed のはず

# Gateway が内部からは見えることを確認
sudo nmap -p 18789 127.0.0.1         # → open のはず

# UFWのルール一覧
sudo ufw status numbered

注意: ファイアウォールルールを変更した後は sudo ufw reload で反映し、再度確認コマンドを実行して、意図しない公開がないかチェックしてください。