はじめに
Cloudflare社とのパートナーシップにより、IBM CloudからCloudflareのインターネット関連サービス(DNS/DDoS防御/WAF/グローバルロードバランシング等)をオーダーし、利用できるようになりました。IBM Cloud Internet Services (CIS)というサービス名での提供となります。
Free Early Accessとして、2018年5月末までCISの機能を無料で利用可能でしたので、試してみました。
2018/8追記 Free Early Access期間は終了しましたが、30日間無料トライアルが機能制限なしで利用可能です。
オーダー
下記のStep 1の手順となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started
IBM Cloudカタログのネットワークカテゴリに、Internet Servicesがあるので、ここからオーダーします。
2018年5月末まで、Early AccessとしてCISの機能を無料で利用可能です!
2018/8追記 Free Early Access期間は終了しましたが、30日間無料トライアルが機能制限なしで利用可能です。
作成を押下すると、数分のうちに、ダッシュボード上でInternet Servicesが利用可能になります。(無料のEarly Accessでは、1アカウントにつき、1つのみオーダーできます)
ドメイン追加
まず、CISに自身が保有するドメインを追加します。追加するドメインは事前にレジストラに登録して、保有しておく必要があります。
ドメイン追加の手順は下記のStep 2の内容となります。(無料のEarly Accessでは、1つのドメインのみ追加できます)
https://cloud.ibm.com/docs/cis?topic=cis-getting-started
Step 4が終わるまで、ドメインはpendingの状態となります。
CISのDNSに自ドメインを設定
CISのDNSに、自身のドメインのレコードを登録します。下記のStep 3(Optional)の内容となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started
このステップは必須ではありませんが、次のStep 4でNSレコードを書き換え、ドメインの名前解決を行うDNSがCISのDNSになった際に、スムーズに引き継げるようにあらかじめCIS側のDNSにレコードを書いておく、という目的があります。
今回、オリジンは、別の記事で作成したIBM Cloud Load Balancer(と、その配下の実際のウェブサーバー)としたので、CNAMEとして、ロードバランサーのFQDNを設定しました。もちろんIBM Cloud Load Balancerを使わない構成も可能で、その場合は、普通にウェブサーバーのグローバルIPをAレコードとして登録します。
CISのセキュリティ機能を使うためには、DNSレコードのPROXY設定を有効にしてください。
レジストラのNSレコードをCISのものに変更
ドメインを登録すると、CISで使うためのNSレコードが提供されますので、自身のドメインのNSレコードとして登録します。下記のStep 4の内容となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started
この作業は、自身のドメインを登録しているレジストラ(またはDNSプロバイダ)の管理画面での作業となります。
今回は、IBM Cloud IaaSを通して取得したドメインのため、管理ポータル画面でNSレコードを変更します。(もし外部レジストラでドメイン取得している場合は、そちらの管理画面での作業となります。)
2023年6月に、IBM Cloudを通して取得したドメインの管理がHoverに変更(移管)されています。
IBM Cloudを通して取得したドメインのNSレコード変更は、Hoverの管理画面でHoverの操作手順に従ってください。
ご参考
https://cloud.ibm.com/docs/dns?topic=dns-domain-name-registration-domain-transfer
https://qiita.com/6onoda/items/3b6703bf6314025eeff5
IBM Cloudの管理画面でNSレコードの変更を行う下記の画面ショットは古いですが、記録のために残しておきます。
NSレコードの変更が反映されると、CIS側のドメインのステータスがPendingからActiveに変わります。
最大で24時間程度かかると書いてありましたが、今回は1時間程度で反映されました。
この時点で、自ドメインの名前解決先はCISのIPアドレスになります。
$ nslookup www.tama0921.com
Server: x.x.x.x
Address: x.x.x.x#53
Non-authoritative answer:
Name: www.tama0921.com
Address: 104.20.30.221
Name: www.tama0921.com
Address: 104.20.29.221
$
上記IPアドレスのwhois情報を見ると、CloudflareのIPアドレスとして登録されています。
ブラウザからアクセスしてみる
ブラウザからアクセスすると、特にこれまでと変わらず表示されます。
ウェブサーバーのログでX-Forwarded-Forを記録するよう設定することで、下記の様に、エンドユーザーから、Cloudflare、IBM Cloud Load Balancerを経由してアクセスが来ていることが確認できます。
219.xx.xx.147, 103.xx.xx.239 10.xx.xx.86 - - [14/Apr/2018:13:13:44 -0500] "GET / HTTP/1.1" 304 - "http://www.tama0921.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Firefox/52.0"
ちなみに、オリジンサーバー側の設定をミスってエラーになった時は、下記のような画面となりました。CIS(Cloudflare)までは問題なく、オリジンに問題があることが分かります。
以上で、自身のドメインにCIS経由でアクセスできるようになりました。
これまで、DDoS防御やWAFの機能を自前で用意しようとすると、技術的な難易度も高く、機器のコストや設定のための工数も、高額になっていたと思います。このように非常に簡単に、自身のウェブサーバーのセキュリティを高められるのはクラウドサービスの魅力の1つと思います。
下記に、CISのTLSオプションについて書きました。
https://qiita.com/y_tama/items/f6bddda9630052902e25