[旧情報] Sysdig Serverless Agentで保護しているAWS Fargateに対する脅威検知テスト（Orchestrator Agent使用版）

:::note warn
本手順はOrchestrator Agentを使用した古いデプロイ方法になります。最新のデプロイ方法については下記記事をご参照ください。
https://qiita.com/yotake/items/6e5963e3e6e08ea9f64f
:::
Sysdig Serverless Agentで保護しているAWS Fargateに対する脅威検知テストとして、下記Security Playgroundイメージから作成したFargateタスクを使用する方法をご紹介します。

https://github.com/sysdiglabs/security-playground

Security Playgroundでは、外部からcurlコマンドを介してコンテナ上で任意のコマンド実行が可能です。これをリモートコード実行の脆弱性を有するアプリケーションを模擬した被害者コンテナとして使用します。

SysdigのFargateランタイムセキュリティに関して詳しく知りたい方は、当社が7/28に実施したウェビナーの録画もご参照ください。

https://www.youtube.com/watch?v=0zDU7pGrwu0

# 環境のデプロイ
Terraformで以下をデプロイします。
●	Sysidig Orchastrator Agent
●	Security Playground（擬似アタック被害コンテナ） + Sysdig Workload Agent

Security Playgroundを使ったサンプルのTerraformファイルは以下になります。

https://github.com/yotakeu/minimal-fargate-sp

:::note warn
上記のTerraformファイルは、Orchestrator Agent不要の最新のServerless Agent用のTerraformファイルに置き換えたので、この手順では使用できません。
:::

:::note warn
必ずTerraformファイルの記述をよく確認し、ご自身の環境で使用しても問題ないことをご確認ください。Sysdig Serverless Agentのドキュメントは下記になります。
https://docs.sysdig.com/en/docs/installation/sysdig-secure/install-agent-components/ecs-on-fargate/
:::

上記Terraformファイルを使用すると、以下のような構成でデプロイされます（Internet gatewayおよびNAT gatewayは含みません）。デプロイ先のサブネットは変数設定で指定可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/d481d81d-cd3b-5bbd-f9bb-54ece8eeace9.png)

## 変数の設定
Terraformファイルの`variables.tf`の値を、ご自身の環境に合わせて修正してください。

```terraform:variables.tf
# AWS Region
variable "region" {
  default = "ap-northeast-1"
}

variable "vpc_id" {
  default = "vpc-xxxxxxxxxxxx"
}

variable "subnet_a_id" {
  default = "subnet-xxxxxxxxxxxx"
}

variable "subnet_b_id" {
  default = "subnet-xxxxxxxxxxxx"
}

# タスクにPublic IPをアサインするか否か。Private Subnetにデプロイする場合はfalseに設定してください
variable "public_ip" {
  default = "true"
}

# Sysdig Access key
variable "access_key" {
  default = ""
}

# ご自身のSysdig SaaSリージョンの値を入力してください（下記はus4の場合）
variable "collector_url" {
  default = "ingest.us4.sysdig.com"
}

# タスク名などの前につけるプレフィックス
variable "prefix" {
  default = "test"
}

# Curlコマンドを打って疑似アタックを実行する端末のIPアドレスを入力してください
# このIPアドレスからWorkloadタスクに対する8080ポート接続を許可するSecurity Group設定を作成します
variable "source_ip" {
  default = "192.168.0.100/32"
}
```

:::note
**collector_url**の値はご利用のSysdig SaaSリージョンにより異なります。下記ドキュメントをご参照ください。
https://docs.sysdig.com/en/docs/administration/saas-regions-and-ip-ranges/
:::

# デプロイ実施
```
terraform init & terraform apply
```
デプロイが完了すると、Orchestrator AgentをSysdig UI上で確認できます。
<b>Integrations > Data Sources > Sysdig Agents</b> に移動します。
Deployment Type が `fargate` のSysdig Agentが接続されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/b903c33f-299d-e38c-58f1-6b203627af5d.png)

# 脅威検知テスト
脅威検知では、以下のような経路でSysdig UIに検知イベント結果が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/0a39458e-4943-d585-7f83-e55c7ad17a2b.png)

下記curlコマンドの引数にFargate workload taskのPublicもしくはPrivate IPアドレスを指定します。
 
<b>攻撃例1：shadowファイルの読み込み</b>
```
curl <Workload_Task_IP>:8080/etc/shadow
```
※FalcoルールでException指定されている`cat /etc/shadow`ではないので検知します

<b>攻撃例2：/dev配下へのファイル書き込み</b>
```
curl -X POST <Workload_Task_IP>:8080/exec -d 'command=touch /dev/bbb'
```

![名称未設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/91a5a4a5-340a-b332-0951-c08f2b549601.png)

Sysdig UIにログインし、**Events**に検知イベントが表示されていることを確認します。
![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2802821/754c7da8-180b-45bb-d418-88d9de02b945.png)

 
# まとめ
Security Playgroundイメージを使用することで、Sysdig Serverless Agentで保護しているAWS Fargateに対する脅威検知テストを、簡単に実施できることが確認できました。