Start typing to search across invoices, services, domains, tickets, and more...
サイトを Cloudflare 経由にすると、訪問者や攻撃者に見えるのは Cloudflare のエッジ IP で、サーバー本来の IP ではなくなります。しかし、実 IP がすでに漏れていたり、サーバーがどこからでも 80/443 番ポートへの接続を受け付けていたりすると、攻撃者は CDN を迂回してオリジンを直接攻撃できます。本記事では、Cloudflare の導入から漏えい経路の確認、ファイアウォールの制限まで、オリジンを本当に「隠す」ための手順を順番に解説します。
Cloudflare ダッシュボードの DNS ページで、サイトの A/AAAA レコードのプロキシステータスを「プロキシ済み」(オレンジの雲)にします。この状態で dig +short example.com を実行すると、サーバーの IP ではなく Cloudflare の IP が返るはずです。
SSL/TLS 設定で Full (strict) を選択します。オリジン側の証明書には Let's Encrypt を使うか、Cloudflare ダッシュボードで無料の Origin CA 証明書を発行できます(Cloudflare からのみ信頼され、有効期間は最長 15 年)。Flexible モードは使わないでください。Cloudflare とオリジン間が平文通信になるうえ、リダイレクトループも起こりやすくなります。
CDN 導入前に、ドメインがすでにサーバーの IP を直接指していた可能性があります。よくある漏えい経路は次のとおりです。
mail、ftp、dev などのサブドメインがグレーの雲のまま、同じサーバーを直接指している。IP がすでに漏れていると確認できた場合、Cloudflare だけでは完全には対処できないため、サーバー IP の変更をおすすめします。IMIDC をご利用の方は、クライアントセンターからチケットを送信し、IP の変更や追加についてご相談いただけます。
Cloudflare の IP レンジは https://www.cloudflare.com/ips-v4 と https://www.cloudflare.com/ips-v6 で公式に公開されています。以下のコマンドは最新のリストを直接読み込みます。
Ubuntu / Debian(UFW):
sudo ufw allow OpenSSH # If you changed the SSH port, use: sudo ufw allow <port>/tcp
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4) $(curl -fsS https://www.cloudflare.com/ips-v6); do
sudo ufw allow proto tcp from "$ip" to any port 80,443 comment 'Cloudflare'
done
# Remove earlier rules that opened 80/443 to everyone (delete whichever actually exist)
sudo ufw delete allow 'Nginx Full'
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw enable
sudo ufw status numbered
ルール削除時に「Could not delete non-existent rule」と表示された場合は無視してかまいません。
Rocky / Alma 9(firewalld + ipset):
sudo firewall-cmd --permanent --new-ipset=cf4 --type=hash:net
sudo firewall-cmd --permanent --new-ipset=cf6 --type=hash:net --option=family=inet6
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4); do
sudo firewall-cmd --permanent --ipset=cf4 --add-entry="$ip"
done
for ip in $(curl -fsS https://www.cloudflare.com/ips-v6); do
sudo firewall-cmd --permanent --ipset=cf6 --add-entry="$ip"
done
for svc in http https; do
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source ipset=cf4 service name=$svc accept"
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv6 source ipset=cf6 service name=$svc accept"
done
# Remove the http/https services that were open to all sources
sudo firewall-cmd --permanent --remove-service=http --remove-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Cloudflare の IP レンジはときどき更新されるため、数か月ごとに公式リストと照合することをおすすめします。
注意:Docker で公開したポートは UFW のルールを迂回します。サイトを Docker で動かしている場合は、コンテナのポートを
127.0.0.1にバインドし、ホスト側の Nginx から外部に公開してください。
Nginx にデフォルトサイトを追加し、IP や未知のホスト名で直接アクセスされた場合は接続を切断して、証明書からドメインが漏れないようにします。
sudo tee /etc/nginx/conf.d/00-default.conf > /dev/null <<'EOF'
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
EOF
ssl_reject_handshake には Nginx 1.19.4 以降が必要です。Ubuntu 24.04、Debian 12、Rocky/Alma 9 の標準バージョンはいずれも対応していますが、Ubuntu 22.04 標準の 1.18 は非対応のため、nginx.org の公式リポジトリからアップグレードしてください。Ubuntu/Debian では、default_server の競合を避けるため、同梱のデフォルトサイトも削除します。
sudo rm -f /etc/nginx/sites-enabled/default
Cloudflare 経由になると、Nginx のログに記録される送信元 IP は Cloudflare のエッジ IP になります。realip モジュールで本来の IP を復元しましょう。
{
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4) $(curl -fsS https://www.cloudflare.com/ips-v6); do
echo "set_real_ip_from $ip;"
done
echo "real_ip_header CF-Connecting-IP;"
} | sudo tee /etc/nginx/conf.d/cloudflare-realip.conf > /dev/null
sudo nginx -t && sudo systemctl reload nginx
別のマシンから次のコマンドを実行します。1 行目は接続失敗またはタイムアウトになり、ドメイン経由のアクセスは正常に通るはずです。
curl -m 10 -I http://YOUR_SERVER_IP
curl -I https://example.com
Cloudflare がオリジンに接続できていない状態です。ファイアウォールにすべての Cloudflare IP レンジ(IPv6 を含む)が登録されているか、Nginx が正常に動いているか、SSL モードとオリジン証明書が合っているかを確認してください。
無料プランがプロキシするのは HTTP/HTTPS トラフィックのみで、対応ポートも限られています。SSH、データベース、ゲームサーバーなどの TCP/UDP サービスは Cloudflare を経由しないため、サーバー自身のファイアウォールとデータセンターレベルの DDoS 対策に頼ることになります。
あります。Cloudflare で Authenticated Origin Pulls(mTLS)を有効にすると、オリジンの Nginx は Cloudflare のクライアント証明書を持つリクエストだけを受け付けるようになります。第三者が自分の Cloudflare アカウントからあなたの IP にトラフィックを向けることも防げます。
まず攻撃の種類とトラフィック規模を把握し、そのうえで IP を変更して上記の防御設定を完了させます。大規模な攻撃は上流の帯域そのものを埋め尽くすため、その段階では事業者が提供する高防御(DDoS 対策)プランとの併用が必要です。
オリジン IP を隠すポイントは 3 つです。すべてのトラフィックを Cloudflare のプロキシ経由にすること、過去の漏えいを洗い出して解消すること、そしてオリジンのファイアウォールで Cloudflare からの接続のみを許可することです。HTTP 以外のサービスや超大規模な攻撃には、CDN だけでは対応しきれません。IMIDC では DDoS 対策付きの VPS と専用サーバーを提供しており、複数 IP の構成にも対応しているため、オリジンの土台となる防御として活用できます。IP の変更や防御プランの検討は、クライアントセンターから 24 時間 365 日受付のチケットでお気軽にご相談ください。