🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CDN

CDNは、Webコンテンツをインターネット経由で配信するのに最適化されたネットワークを指します。Webサイトにある静的コンテンツをWebサイトが管理されているサーバーとは異なるサーバーにキャッシュし代わりに配信することで、負荷が分散し速度を向上する仕組みです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

2668閲覧

cloudflare オリジンサーバIPの隠蔽について

退会済みユーザー

退会済みユーザー

総合スコア0

CDN

CDNは、Webコンテンツをインターネット経由で配信するのに最適化されたネットワークを指します。Webサイトにある静的コンテンツをWebサイトが管理されているサーバーとは異なるサーバーにキャッシュし代わりに配信することで、負荷が分散し速度を向上する仕組みです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

1クリップ

投稿2019/12/14 21:39

編集2019/12/14 21:45

やりたいこと

nginxでcloudflare向き先のオリジンサーバのIPを直叩きを拒否したい

ドメイン: example.com
オリジンサーバIP: XX.XX.XX.XX

|クライアント||cloudflare||オリジンサーバ|
|:--|:--:|:--|:--|
|ブラウザ|←→|example.com|←→|XX.XX.XX.XX|

http://XX.XX.XX.XX → 444(nginx)
https://XX.XX.XX.XX → 444(nginx)

試したこと

こちらを参考に下記のように設定

nginx

1eo $realip_remote_addr $cf { 2 default 0; 3 # IPv4 4 173.245.48.0/20 1; 5 103.21.244.0/22 1; 6 103.22.200.0/22 1; 7 103.31.4.0/22 1; 8 141.101.64.0/18 1; 9 108.162.192.0/18 1; 10 190.93.240.0/20 1; 11 188.114.96.0/20 1; 12 197.234.240.0/22 1; 13 198.41.128.0/17 1; 14 162.158.0.0/15 1; 15 104.16.0.0/12 1; 16 172.64.0.0/13 1; 17 131.0.72.0/22 1; 18 # IPv6 19 2400:cb00::/32 1; 20 2606:4700::/32 1; 21 2803:f800::/32 1; 22 2405:b500::/32 1; 23 2405:8100::/32 1; 24 2a06:98c0::/29 1; 25 2c0f:f248::/32 1; 26} 27server { 28 if ($cf = 0){ 29 return 444; 30 } 31}

結果

443で接続すると下記のようにオリジンサーバであることがバレてしまいます。

http://XX.XX.XX.XX → 444(nginx)
https://XX.XX.XX.XX → ブラウザエラー

Chrome

1この接続ではプライバシーが保護されません 2XX.XX.XX.XX では、悪意のあるユーザーによって、パスワード、メッセージ、クレジット カードなどの情報が盗まれる可能性があります。詳細 3NET::ERR_CERT_COMMON_NAME_INVALID 4このサーバーが example.com であることを確認できませんでした。このサーバーのセキュリティ証明書は example.com から発行されています。原因としては、不適切な設定や、悪意のあるユーザーによる接続妨害が考えられます。

サーバ設定以前の問題な気がしますが、
オリジンのIPを直叩きした場合にオリジンサーバとわからなくする方法はないのでしょうか?
(そもそもなぜIPから証明書が逆引き?できてしまうのかよくわかっておらず。。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

いまいちわかってないのであてずっぽうですが Name Virtualhostで、FQDN のバーチャルホストをデフォルトサーバーから外してみるとどうですかね。

そうすると IPの場合はデフォルトサーバーの方に接続されるので上手くいく気がします。

証明書が逆引き?されるののは、Nginxに example.com の証明書を設定してるからだと思います。クライアントのURL欄は、IPなのに、証明書に記載されてるコモンネームが example.com なので、証明書のバリデーションエラーになってる。

なので適当な自己証明書を用意して、example.com と デフォルトサーバーそれぞれで、インストールする証明書を分ければ、懸念してるドメインがバレることは回避できるのかなと。

# バーチャルホスト:example.com server { listen 443; server_name example.com; ssl on; ssl_certificate /path/to/example.com.cert # example.comの証明書 ssl_certificate_key /pth/to/key :::: } # バーチャルホスト:localhost (デフォルトサーバー) server { listen 443 default_server; server_name localhost; #←デフォルトサーバーなので名前は何でも良い ssl on; ssl_certificate /path/to/self.cert # 適当な自己証明書 ssl_certificate_key /pth/to/key :::: }

投稿2019/12/15 03:50

take88

総合スコア1467

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/15 11:46

とてもよくわかりました。 無事解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問