1.目的
CISのWAFはIBM Cloud PortalのGUI画面を見れば明らかなようにRuleID/グループ単位にAction(Block,Simulate,Challenge,OFF)の設定を行います。
ただURL毎にセキュリティ要件が異なる場合に、URL単位にこの設定を行う必要が出てくることがあります。
ドメイン全体またはサブドメイン全体ではなく、ドメインの特定のURLに対してWAFのAction設定することもできます。ただしエンタープライズプランのみの機能になります。
またIBM Cloud PortalのGUI画面ではできなくてCLI/APIを利用することになります。当ガイドはこのCLIの手順説明及び確認テストを記述しています。
ibmcloud cis waf-override-createコマンド
[参考]
特定のURLに対してWAFの全てのRuleIDのチェックを無効化することはIBM Cloud PortalのGUI画面のPageRule設定により行います。
[ページ・ルールの使用-セキュリティ-WAF]
(https://cloud.ibm.com/docs/cis?topic=cis-use-page-rules#page-rules-security)
2.手順及び確認
現状下記のCIS GUI画面の通り100008Eルールは無効化に設定されています。
念のためブラウザーよりテスト対象URLの後に"?id=admin&password=' or 1=1"等のパラメーターを付加しても問題なくアクセスできることを確認します
ここからはIBM Cloud CLI手順になります。環境準備できていなければ下記よりCLIダウンロード/CIS pluginのアップデートをしてください。
[ibmcloud cli及びcis pluginの準備]
(https://cloud.ibm.com/docs/cis?topic=cis-cli-plugin-cis-cli#-cli-prereqs)
ibmcloud login後、まずドメインの一覧を照会して該当のドメインのIDを取得します。
% ibmcloud cis domains
サービス・インスタンス 'CIS-Enterprise-Usage1' のドメインをリスト中...
OK
ID 名前 状況 一時停止 タイプ
3476b3464d25f1ba478e1d0753a34bf7 certest.tk アクティブ false full
3cf328422b34b8e5420831c3efe4c3c3 cis****.tk アクティブ false secondary
a4135402d38fff24e32ef13c82c1ab4a cis****.tk アクティブ false full
まずJSON Fileを作成します。最低限設定が必要になるのは対象のURL名、RuleID、Actionになります。ここでは"host-ibm-cloud-poc.certest.tk"のURLで"100008E"のRuleに対して"Block"を指定して"waf_rule_on.json"の名前でファイルを保存します。
{
"description": "enable Rule ID:10008E for host-ibm-cloud-poc.certest.tk",
"urls": [
"host-ibm-cloud-poc.certest.tk/*"
],
"rules": {
"100008E": "block"
}
}
上記で作成したJSON File、及びドメインIDを指定してwaf-override-createを実行します。
% ibmcloud cis waf-override-create 3476b3464d25f1ba478e1d0753a34bf7 --json @waf_rule_on.json
URL ベースの WAF ルールを作成中 ...
OK
ID b9d0ff936a9141eb973b1f08e14920eb
説明 enable Rule ID:10008E for host-ibm-cloud-poc.certest.tk
URLs
0: host-ibm-cloud-poc.certest.tk/*
グループ
ルール
100008E: block
再書き込みアクション
再度同一URLにアクセスしてBlockされることを確認します。
念のためCISのSecurity Event Logを照会してBlockされていることが確認できました。
% ibmcloud cis firewall-event-analytics 3476b3464d25f1ba478e1d0753a34bf7
ドメイン '3476b3464d25f1ba478e1d0753a34bf7' のファイアウォール・イベントを取得中...
OK
次元
アクション block
クライアントの国名 JP
クライアント IP 61.25.32.91
クライアント IP クラス noRecord
クライアント・リファラー・スキーム unknown
クライアント要求 HTTP ホスト host-ibm-cloud-poc.certest.tk
クライアント要求 HTTP メソッド名 GET
クライアント要求 HTTP プロトコル HTTP/1.1
クライアント要求パス /
日時 2021-09-17T06:59:10Z
エッジ・コロケーション名 NRT
種類 firewall
インデックスに一致 0
レイ名 69007347ffa33535
ルール ID 100008E
ソース waf
ユーザー・エージェント Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36