PoCを実施する場合、理想的には、以下の3点をテストしたい:
- open-appsecの機能確認。攻撃を効果的にブロックする。
- open-appsec稼働中の必要なリソース。特にModSecurityなど他製品との比較。
- open-appsecは、ウェブアプリケーションのすべての正当なトラフィックを許可する。
検証環境構成の紹介
open-appsecは、NGINXまたはKong Gatewayコンテナと統合してDockerまたは同様のコンテナ化されたプラットフォーム上にデプロイすることができ、NGINXリバースプロキシ、Webサーバー、またはKong API Gatewayによって提供されるすべてのアプリケーションとAPIに保護を提供する。
NGINXとKong Gatewayには、open-appsecアタッチメントを含む拡張コンテナイメージが提供されています。このアタッチメントは、検査のためのトラフィックを open-appsec エージェントコンテナに送信する。
前提条件 - OWASP Juice Shopのデプロイ
テスト用のウェブアプリケーションJuice Shopを検証Linuxサーバーに構築。
sudo docker pull bkimminich/juice-shop
sudo docker run -d -p 3000:3000 bkimminich/juice-shop
sudo docker ps
Juice Shopは実行中のステータスを確認できたら下記URLでアクセスしてみる。
http://<server IP>:3000
前提条件 - SaaSテナントでのエージェントプロファイルを作成
- my.openappsec.io 上の SaaS テナントへのアクセス (SaaS 管理用 WebUI):https://my.openappsec.io
- プロフィールの作成
- ポリシーの実施(Enforce)
- トークンの取得
Dockerによるインストール(中央管理型)
下記コマンドでコンテナをデプロイして実行する。
sudo docker pull ghcr.io/openappsec/agent:latest
sudo docker run --name=open-appsec-agent-app \
--ipc=host \
-v=./agent-container/conf:/etc/cp/conf \
-v=./agent-container/data:/etc/cp/data \
-v=./agent-container/logs:/var/log/nano_agent \
-it \
-e registered_server='NGINX Server' \
-e user_email=scottl@checkpoint.com \
-d ghcr.io/openappsec/agent:latest /cp-nano-agent \
--token cp-dexxxx42-xxxx-xxxx-xxxx-a458cbxxxx21b4e5a061-xxxx-xxxx-xxxx-xxxxxxxxxxx
sudo docker pull ghcr.io/openappsec/nginx-attachment:latest
sudo docker run --name open-appsec-nginx \
--ipc=host \
-v=./nginx/conf:/etc/nginx \
-v=./nginx/logs:/var/log/nginx \
-p 80:80 \
-d ghcr.io/openappsec/nginx-attachment:latest
sudo docker ps
この時点で、GUIポータルでエージェントが接続されたことを確認できる。
次にDockerfile and defaultを用意してビルドする
NGINXのupstreamウェブアプリを設定するため、下記Dockerfileとdefaultファイルサンプルを参考ください。
Dockerfile
FROM ghcr.io/openappsec/nginx-attachment:latest as open-appsec-nginx
ENV NGINX_SERVER_FQDN=<server ip>
COPY default /etc/nginx/conf.d/default.conf
RUN sed -i s/\${NGINX_SERVER_FQDN}/$NGINX_SERVER_FQDN/g /etc/nginx/conf.d/default.conf
ENTRYPOINT ["nginx", "-g", "daemon off;"]
上記<server ip>をサーバーをアクセス可能なIPを置き換えてください。
NGINXのdefaultファイルは下記URLでサンプルを参考ください。
https://github.com/chkp-stuartgreen/appsec-demo/blob/main/nginx-reverse-proxy/default
下記コマンドでコンテナをビルドする。
sudo docker build -t nginx-att:test .
sudo docker run -it --name nginx-att-test \
--ipc=host \
-v=./nginx/logs:/var/log/nginx \
-p 80:80 \
-d nginx-att:test
次のリンクからNGINX経由でJuice Shopにアクセスできる:
http://<server ip>
アセットを作成
GUIポータルで下記アセットを作成する。
THREAT PREVENTIONタブでPreventモードに変更する。
※通常は数日間の学習期間を経過してPreventモードに変更する。
ウェブアプリの保護をテストする
waf-comparison-projectのようなツールを使って本番環境で簡単なセキュリティテストを実行したり、単純なSQLインジェクション文字列を発行してログをチェックしたりすることができる。SQLインジェクション攻撃を使って下記ログ画面でブロック履歴を確認する例である。
まとめ
ベース機能を確認するため、自分の検証環境だけではなく、ここで入手できる無料の仮想プレーグラウンドでも簡単にできる。詳細については、open-appsecのドキュメントとチュートリアルを参照してください。
参考資料