Fastly NGWAF で悪意のある IP からの攻撃を即時ブロック





Fastly の NGWAF ではリクエスト送信元の IP が通常のISPではないものや過去に攻撃を行うために使用された可能性がある場合、そのことを示すシグナルが付与されます。

これらのシグナルをもつリクエストを悪意のある IP とし、他のシグナルと組み合わせて攻撃リクエストを即時ブロックしたり、攻撃リクエストをブロックするための閾値を通常よりも低め（厳しめ）に設定することなどが可能です。

この記事では怪しい IP からの攻撃リクエストを即時ブロックする設定の作成手順を説明します。

# IPに関するシグナル

送信元の IP から付与される可能性のあるシグナルは以下の４種類あります。()はシグナル名です


- **SigSci IP(sigsci-ip)**
過去24時間以内に Fastly NGWAF を利用している他の顧客を攻撃するために利用されたと判断された IP からのアクセス。

- **Malicious IP(sans)**
米国のセキュリティ機関である SANS が定期的に発表している攻撃者IPアドレス情報に記載されていた IP からのアクセス。


- **Tor Traffic(tornode)**
Tor の Exit ノード とされている IP からのアクセス。

- **Datacenter(datacenter)**
通常の ISP からではなくデータセンターやクラウド環境の IP からのアクセス。

シグナルの詳細については以下のページに記載されています。

https://docs.fastly.com/en/ngwaf/using-system-signals

# 攻撃シグナル

Fastly の NGWAF がデフォルトで攻撃リクエストと判断するシグナルは以下の通りとなります。
- Attack Tooling
- AWS SSRF
- Backdoor
- Command Execution
- Cross-Site Scripting
- Directory Traversal
- Log4J JNDI
- SQL Injection.

各シグナルの詳細は以下のページでご確認下さい。

https://docs.fastly.com/en/ngwaf/using-system-signals#attacks


# 怪しい IP からの攻撃リクエストを即時ブロック

NGWAF のコンソールにログインし、設定を行いたい Site のページのダッシュボードを開きます。

画面上部のメニューから
Rules -> Site Rules -> Add site rule
の順にクリックすると以下の画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/d42fe7a6-14a5-4dd1-2a85-134ec58f4c13.png)

Type: Request のままで OK です。
Conditions: 
Field: **Signal**
Operator: **Exists where**
を選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/fdead57a-81af-36f4-82a2-a96dc1237d18.png)

色付けされたボックスの中のフィールドを All から **Any** of the following are true に変更
**Add conditions** をクリックして以下の4つの条件を追加。

Field, Operator, Value
Signale Type, Equals, SigSci IP
Signale Type, Equals, Malicious IP
Signale Type, Equals, Tor Traffic
Signale Type, Equals, Datacenter

4つの条件の追加が完了すると以下のようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/11c69182-fe7d-16df-9f2a-b796b8a3ed09.png)

続いてボックスの外の `Add condition` をクリックします。
先ほどと同様に Field に Signal を選択し All から **Any** of the following are true に変更します。

その下の Field も先ほど同様に `Signal Type`, `Equals` から利用可能な Attack Signals をすべて add condition から追加します。設定が完了すると以下の画面のようになります。

All of と Any of が間違いがちなので正しく設定されているか再度確認しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/c3443fdd-def0-728d-216a-9daa274ab3c1.png)




さらに以下のフィールドを設定します。
Action type: **Block**
Request logging: **Sampled**
Status: **Enabled**
Description: 適当に記載（例: 疑わしいIPからの攻撃リクエストを即時ブロック, Block attack traffic from Suspicious IPs)

`Create site rule` をクリック

以上で設定は完了です。この手順では怪しい IP からの攻撃リクエストをすべて即時ブロックしていますが、必要に応じて datacenter からのアクセスは条件から除外したり、ブロック対象外のIP リストを追加することなども可能です。

# 日本以外の国という条件を追加

先ほどの設定では疑わしい IP から攻撃リクエストがあった場合は即時ブロックするような設定を行いました。この設定は若干厳しめの設定で通常のユーザーからのリクエストも誤ってブロックされてしまう可能性があります。

例えば提供しているサービスが日本国内向けのものと想定して先ほどの設定に日本国外からのアクセスという条件を追加してみたいと思います。
攻撃リクエストは日本国外から送信されることが多いので、特に国内向けのにサービスを提供している場合この設定はおすすめです。

設定手順は以下のようになります。

先ほど設定した Site Rule の Edit ページを表示し、Conditions の左下にある `Add condition` をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/587d6196-84f4-e8c0-f64e-3b17992db451.png)

新しいフィールドが表示されるので以下のように設定します。
Field: **Country**
Operator: **Does not equal**
Value: **Japan(JP)**

設定に問題がなければ `Update site rule` をクリックすれば設定が反映されます。

Site Rule の一覧画面から該当ルールの View をクリックすると以下のような Conditions になっていれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/fadfc153-eb15-eb5a-343c-8b491a41bf45.png)

# まとめ

この記事では怪しい IP からのリクエストに対して追加のルールを設定してより厳しくブロックする挙動の設定方法を説明しました。
必要に応じてブロックするための条件を追加したり条件を修正することでサービスの運用状況に最適なセキュリティ設定を行って下さい。

この他の Fastly NGWAF での設定のベストプラクティスについては以下のページなども参考にしてみて下さい。
https://www.fastly.com/jp/blog/10-pro-tips-for-getting-the-most-out-of-your-next-gen-waf


また、今回は即時ブロックの設定でしたが、この設定では厳しすぎる場合は怪しい IP からのアクセスに対してのみ攻撃シグナルのブロック閾値を通常よりも厳しめに設定することも可能です。その手順についてはまた別の記事で紹介したいと思います。