ネットワーク初心者が OCI WAF を設定し不正アクセスを防御できるか試してみた (Bot編)

前回はOCI WAF の動作確認するために、以下の一連の流れについて記述しました。 
- OCI WAF の基本動作
- OCI WAF の設定
- 保護ルールによる防御
[ネットワーク初心者が OCI WAF で不正アクセスを防御できるか試してみた (設定と保護ルール編)](https://qiita.com/cocotaro0202/items/7384241014302ad346fe)

引き続き 今回はさらにBot の対象方法について見ていきます。

# OCI WAF の防御フロー
OCI WAF は多層の防御フローにより、不正なアクセスを検知したりトラフィックをブロックしくれます。ハッカーや悪意のあるユーザーのみでなく、プログラムやボット(Bot)にも対応しています。
![image-20200917165931135.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/a05f763c-7e97-2e17-9bee-3da4add723e0.png)
# Bot 管理
ナビゲーションメニューから[セキュリティ]-[Webアプリケーション・ファイアウォール] を選択し、前回 定義済みの**WAFポリシー**をクリックします。
左メニューから **Bot管理** をクリックすると、５つのBot管理用のタブページが表示されます。
![image-20200917105607077.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/46db27db-bbdc-511c-6549-0e5f0084f524.png)
- **[JavaScriptチャレンジ]**
- **[ヒューマン・インタラクション・チャレンジ]**
- **[デバイスのフィンガープリント・チャレンジ]**
- **[CAPTCHAチャレンジ]**
- **[良好なBotホワイトリスト]**

今回は**JavaScriptチャレンジ**と**CAPTCHAチャレンジ**のBot管理について試してみます。
## 1. JavaScriptチャレンジ

JavaScriptチャレンジは、以下の特性により Bot による**DDoS攻撃**などの緩和に使用されます。
- アクセスしてきたユーザーに簡単な計算JavaScriptを送信。自動返信されなければBotの疑いありと判断
- 正常なブラウザアクセスか、Botによるアクセスかを区別するためのひとつの方法

### JavaScriptチャレンジの設定
[JavaScriptチャレンジ]ページを選択し、[JavaScriptチャレンジの編集]をクリックし設定します。
![image-20200917113226246.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/7785e316-730c-887c-f044-85e08d85e0ec.png)
**[JAVASCRIPTチャレンジの有効化]** チェック(有効化)します
**[JAVASCRIPTチャレンジ・アクション]** ブロックを選択します
**[アクションしきい値(リクエスト数)]**  **10** に設定 - 10個以上のBotリクエストをブロック
**[変更の保存]** をクリックし、変更が反映されるまで待ちます。

### DDoS 攻撃にどう対処するのか？
Apache Bench から疑似的にDDoS 攻撃して動作を確認します。
![image-20200917160653681.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/ef8d37c5-b1c4-bc0b-2826-23d5fa43c16c.png)
**"100のリクエスト投げて、87リクエストがブロックされ"** **DDoS攻撃**を緩和できたことが確認できました。

また ログでも、JavaScriptチャレンジにより各ブロックの詳細履歴を参照することができました。
![image-20200917161223417.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/6cc39f2b-278a-dac6-2033-acfde35a34e2.png)

#### 参考）OCI の DDoS 緩和について
DDoSは、Open Systems Interconnection (OSI)モデルで定義されているように、レイヤー7またはレイヤー3/4 (L3/4)に分類でき、レイヤー7 のDDoS緩和については、上述の例のようにOCI WAF を使い緩和することが可能です。
L3/4 DDoS攻撃は、レイヤー7よりも低いレベルのOSIスタックで発生するDDoS攻撃です。L3/4 DDoS緩和は、元々Oracle Cloud Infrastructure(OCI)によって提供されているとのことです。下記を参照してください。
[レイヤー7 DDoS緩和](https://docs.cloud.oracle.com/ja-jp/iaas/Content/WAF/Concepts/ddos.htm)
[Don’t just rely on your Cloud Provider for DDoS protection](https://blogs.oracle.com/cloudsecurity/don%e2%80%99t-just-rely-on-your-cloud-provider-for-ddos-protection) 

## 2. CAPTCHAチャレンジ
#### CAPTCHAチャレンジとは？
- CAPTCHA（キャプチャ）: Completely Automated Public Turing test to tell Computers and Humans Apart  の略
- チャレンジ・レスポンス認証と呼ばれるセキュリティ方式のひとつ
- **ゆがんだ画像や文字/数字を表示して正しく入力できれば（Botではなく）人間であると判断**

​    こんなぐにゃぐにゃ文字だったりします。
![image-20200917135015331.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/683b37f6-49d2-9eed-1196-3d63d225f325.png)

### CAPTCHAチャレンジの設定
[JavaScriptチャレンジ]ページを選択し、[JavaScriptチャレンジの編集]をクリックし設定します。
![image-20200917140520933.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/2e88d4ea-7c97-5683-1705-04989a0e5ad5.png)
**[URLパス]** CAPTHA で保護したいURLパスを指定
**[送信ボタン]** 送信ボタンに表示する文字を指定
**[CAPTCHAのプレビュー]**  をクリックすると、その場でCAPTCHAのプレビューが表示されます。
![image-20200917141346225.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/83147dd8-a0f0-ff96-b8bb-92b682606bb6.png)
これでよければ、**[変更の保存]** をクリックし、変更が反映されるまで待ちます。

### CAPTCHA の動作確認
ブラウザから指定したURLにアクセスします。正しい文字が入力されるまで、何度もテキスト入力を求められます。
![image-20200917143039145.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/9754738c-8cb2-9c65-683b-d63e3c2bd7f1.png)

正しい文字が入力できると、本来のWebサイトが表示されます。
![image-20200917155955903.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496842/31ee91cd-0949-673f-7263-e0b32e62424a.png)

#まとめ
OCI WAFは、Webサイトの前で攻撃を多層防御するしくみなので、既存アプリに手を加えることなく素早く導入できて、Bot含め様々な不正アクセスに対処できるところがよいでですね。
設定も簡単、容易でシンプルです。お値段もお安いようです。

## 参考URL
[攻撃を排除し、正しくユーザーを認証・監視、Oracle Cloudのセキュリティ・サービスの概要](https://www.slideshare.net/oracle4engineer/modern-cloud-day-tokyo-2019-oracle-cloud-165467164)

[Frequently Asked Questions](https://www.oracle.com/cloud/security/cloud-services/web-application-firewall-faq.html)