【必見!!!】Cloud One - Application SecurityをWebアプリケーションに組み込んでみた


はじめに

前回はRASPについて書かせていただきましたが、RASPはすごそうだけど、どういうものなのかわからないという方も多いではないでしょうか。
アプリケーションに組み込んでIPSや、ウイルス対策機能、IPフィルター機能を提供するCloud One - Application Security(以下、Application Security)を触ってみました。

Application Securityの特徴

Application Securityの特徴:
1.アプリケーションにセキュリティ機能を提供し、リアルタイムにアプリケーションを保護できます。
2.コンテナ環境はもちろん、AWS Lambdaのようなコード実行環境も守ることができます。
3.SQLインジェクションやOSコマンドインジェクションなどOWASP TOP10の脆弱性の対応ができます。
4.IPS/IDS機能も提供し、ゼロディ対策も実現可能です。
5.管理サーバはSaaSで提供されており、導入ハードルが低いです。

ちなみに、2020年10月現在、以下の言語をサポートしています。
- Python
- Java
- PHP
- Node.JS
- .NET(Linuxベースのみ)

Application Securityが提供する機能

以下の7つの機能を提供しています。
Malicious Payload
脆弱性パッチを提供し、ゼロディ対策に使えます。
ベンダーが定期的に脆弱性パッチを公開しています。

SQL Injection
SQLインジェクションの試行をブロックします。

Illegal File Access
アプリケーションがなんらかの攻撃を受けて、初期せぬファイルにアクセスしようとする際に、その試行をブロックします。

Remote Command Execution
アプリケーションがなんらかの攻撃を受けて、コマンド実行を試行をブロックします。

Open Direct
アプリケーションがなんらかの攻撃を受けてクライアントに予期せぬWebページを返し、リダイレクションの試行をブロックします。

Malicious File Upload
アップロードされたファイルをスキャンし、ウイルスを検知した場合には、通信をブロックします。

IP Protection
拒否リストを作成し、特定のIPアドレスからのアクセスを遮断します

検証環境

今回はAWS EC2を使用し、CentOS7でテストしてみようと思います。

テスト用のWebアプリケーションはGithubやDockerhubなどで探せば色々と出てきますが今回はDVWAを使用し、Dockerコンテナを起動し、Webサーバを動かします。
執筆時点ではPHPバージョン7.0となっています。
ちなみにDVWAはPHPベースのWebアプリケーションのようですので、Application Securityがサポートする言語となっています。

手順1 Cloud Oneのアカウント申請

アカウントは以下のURLから「Create an Account」でアカウントを申請します。
https://cloudone.trendmicro.com/

手順2 Docker環境の準備

sudo -s
yum update 
yum install -y docker 
systemctl start docker 
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

手順3 Webアプリケーションの準備

DVWAのDockerイメージをPullし、起動します。
待ち受けポートは8888番でなくても問題ありません。

docker pull infoslack/dvwa
docker run -d -p 8888:80 -p 3306:3306 -e MYSQL_PASS="mypass" vulnerables/web-dvwa

http://:8888 で以下のような画面が表示され、「Create/Reset Database」で設定完了です。

ログインユーザ名:admin
パスワード:password

手順4 Application Securityの組み込み

いよいよApplication Securityの組み込みですね。

まず、手順1で申請したCloud Oneアカウントにログインし、Application Securityの画面でGourpを作成します。
Gourp名は任意で、今回のテストは「DVWA」にします。

KeyとSecretを控えます。

Application Securityをダウンロードします。PHPであればこちらからダウンロードできます。
今回PHP7.0なので、対象バージョンのモジュールをダウンロードします。

wget https://files.trendmicro.com/products/CloudOne/ApplicationSecurity/1.0.2/agent-php/trend_app_protect-x86_64-Linux-gnu-4.1.9-20131106.so

Dockerコンテナの/tmp配下にコピーします。

docker cp ./trend_app_protect-x86_64-Linux-gnu-4.1.9-20131106.so <コンテナID>:/tmp/trend_app_protect-x86_64-Linux-gnu-4.1.9-20131106.so

PHPの拡張フォルダにApplication Securityを移動させます。

mv /tmp/trend_app_protect-*.so "$(php -r 'echo ini_get (
"extension_dir");')"/trend_app_protect.so

控えたKeyとSecretをphp.iniに追記します。

; Enable the extension
extension = trend_app_protect.so

; Add key and secret from the Application Protection dashboard
trend_app_protect.key = <Key>
trend_app_protect.secret = <Secret>

Apacheを再起動します。

service apache2 restart

Application Securityのコンソールに入り、ポリシーを編集します。
機能別にオン/オフができます。
REPORT: ログのみ(ブロックはしません)
MITIGATE:ログ+ブロック処理

Application Securityの導入は以上となります。

長々と書きましたが、Application Securityの導入はApplication Securityをダウンロードし、php.iniを編集して、数分もあれば導入完了となります。

試しに、DVWAでぽちぽちクリックしたり、脆弱性をついてみてApplication Securityがそれらをブロックできることを確認できます。

ちなみに、通信をブロックする際に、アクセス元にブロック画面を返すことができます。
CSSはユーザ自身で定義することができますし、リンクを表示させ、

これでもう一回脆弱性を突いてみると以下の画面が表示されます。

まとめ

使ってみた感想として、以下のものがあります。

1.Application Securityの導入が簡単である。
2.SaaSなので管理サーバの用意も不要で、導入ハードルが低い。
3/汎用性があり、複数の言語を対応している。
4.OWASP TOP10をはじめ、さまざまな脆弱性対策に使える
5.アプリケーションレイヤーで動くので、SSL通信においても検知可能です。

さて、いかかでしょうか?RASPでアプリケーションにセキュリティ機能を実装するのは意外と簡単かも?と思っていただけると嬉しいです。

あとAWS Lambdaだと聞いて、保護を諦めた方も多いではないでしょうか?今度はAWS LambdaをApplication Securityで守ってみようと思いますので乞うご期待!