#1. はじめに
IBM CIS(Cloud Internet Services)ではエラーページはデフォルトで準備されています。例えば以下はIP Blockをされた時のエラーページです。
でも、エラーページを個別に用意したいということもありますよね?最近、CISにエラーページをカスタムで作成する機能が実装されたので、この記事でご紹介いたします。なお、
- この機能はStandard/Enterpriseの両方のプランで利用可能です。
- ドキュメント(コマンド解説?)はこちらです。
#2. ibmcloudコマンドラインの導入・更新
CISのPluginとしてv1.4.0で動作確認しています。
(本機能はv1.4.0から実装された機能です)
# ibmcloud update
# ibmcloud plugin install cis
# ibmcloud plugin list
インストール済みプラグインをリストしています...
プラグイン名 バージョン 状況
cloud-internet-services 1.4.0
# ibmcloud cis |grep custom
custom-page-update Update a specific custom page.
custom-page Retrieve a specific custom page.
custom-pages Retrieve a list of currently existing custom pages.
# ibmcloud cis custom-page-update -help
名前:
cloud-internet-services custom-page-update - Update a specific custom page.
使用法:
ibmcloud cis custom-page-update PAGE_ID PAGE_URL [-d --domain DNS_DOMAIN_ID] [-i, --instance INSTANCE_NAME] [--output FORMAT]
引数:
PAGE_ID The name of the Custom Page type. 有効な値: "basic_challenge", "country_challenge", "ip_block", "ratelimit_block", "serve_stale_content", "under_attack", "waf_block", "waf_challenge", "1000_errors", "500_errors".
PAGE_URL A URL that is associated with the Custom Page. E.g. "http://www.example.com/example.html". Value "default" means to use the default page.
オプション:
-d value, --domain value DNS ドメイン ID。
-i value, --instance value インスタンス名。 設定しない場合、'ibmcloud cis instance-set INSTANCE' によって指定されるコンテキスト・インスタンスが使用されます。
--output value 出力フォーマットを指定します。現時点では JSON のみがサポートされます。
#3. エラーページの作成
エラー発生時に表示するエラーページを作成しておきます。今回は以下を利用することにします。
http://<My CIS Domain>/ipblock.html
#4. カスタムエラーページの設定
カスタムエラーページを作成するためには、Instance名やドメインIDが必要です。以下のコマンドで確認してください。
# ibmcloud cis instances
サービス 'internet-svcs' のサービス・インスタンスを検索中...
OK
名前 ID ロケーション 状態 サービス名
CIS-Enterprise-Usage1 crn:v1:bluemix:public:internet-svcs:global:a/039dbe6794084c7cb514a276dd2345da:cf4d8b04-b49e-4bf0-a99d-9303bba2cd90:: global active internet-svcs
# ibmcloud cis instance-set "CIS-Enterprise-Usage1"
コンテキスト・インスタンスを 'CIS-Enterprise-Usage1' に設定中...
OK
コンテキスト・サービス・インスタンスは正常に設定されました。
# ibmcloud cis domains
サービス・インスタンス 'CIS-Enterprise-Usage1' のドメインをリスト中...
OK
ID 名前 状況 一時停止
a4135402d38fff24e32ef13c82c1ab4a <My CIS Domain> アクティブ false
上記の情報を元に、カスタムエラーページを設定します。
# ibmcloud cis custom-page-update "ip_block" http://<My CIS Domain>/ipblock.html -d a4135402d38fff24e32ef13c82c1ab4a
Updating custom-page '{{.PageId}}' for domain '{{.Domain}}' ...
OK
ID ip_block
状態 customized
説明 IP or IP range block
URL http://<My CIS Domain>/ipblock.html
Preview Default Page http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens 該当なし
作成日 2019-04-18T01:39:33.766116Z
変更日 2019-04-18T01:39:33.766116Z
以下のコマンドでも、状態
がdefault
からcustomized
に変更され、URLとして指定したアドレスが定義されていることがわかります。
# ibmcloud cis custom-pages
(途中抜粋)
ID country_challenge
状態 default
説明 Country Challenge
URL 該当なし
Preview Default Page http://cloudflarepreview.com/preview-cpage?act=preview&target=block:country-captcha
Required Tokens ::CAPTCHA_BOX::
作成日 該当なし
変更日 該当なし
ID ip_block
状態 customized
説明 IP or IP range block
URL http://<My CIS Domain>/ipblock.html
Preview Default Page http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens 該当なし
作成日 2019-04-18T01:39:33.766116Z
変更日 2019-04-18T01:39:33.766116Z
(途中抜粋)
#5. エラーページの確認
わざとIP Firewallで引っかかるようにしてアクセスしてみると・・・ちゃんと表示されました。
元に戻す方法
エラーページのURLの代わりに、default
というキーワードを使えば元に戻せます。
# ibmcloud cis custom-page-update "ip_block" default -d a4135402d38fff24e32ef13c82c1ab4a
Updating custom-page '{{.PageId}}' for domain '{{.Domain}}' ...
OK
ID ip_block
状態 default
説明 IP or IP range block
URL 該当なし
Preview Default Page http://cloudflarepreview.com/preview-cpage?act=preview&target=block:ip-ban
Required Tokens 該当なし
作成日 2019-04-18T01:39:33.766116Z
変更日 2019-04-18T01:57:54.303901Z