ネットワーク
アドレスとポート
ネットワーク設定を理解することは、セキュリティの基礎です。
| コンポーネント | 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
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 で反映し、再度確認コマンドを実行して、意図しない公開がないかチェックしてください。