18
あなたのそのWebアプリ 守られてますか? ~AWSでWAF使って(構築して)みた~

JAWS-UG京王線 レッツラーニング LT AWS+WAFなお話

Embed Size (px)

Citation preview

あなたのそのWebアプリ 守られてますか?~AWSでWAF使って(構築して)みた~

• まてつです。

• しゃべりが下手で、司会はずされました。。

• Twitterでは自由に話すことを許されました。

• 本当はECSで何かしたかった。

• 今日の会は電気通信大学ベンチャー支援部門の共催です!!!

内容

•AWS上で動作するWAFImperva SecureSphereを触ってみた

SecureSphereについて• http://blog.serverworks.co.jp/tech/2015/04/28/imperva_1/ を参照※回し者ではありません

WAFって?

• Web Application Firewall

• アプリケーションレベルの不正なアクセスを防ぐためのHWやSW

構成• 外向けELB

• NAT ※これ重要

• MX (管理サーバ)

• 内部ELB

• Webサーバ(群) 既存のアプリケーションが動いているもの

イメージ

準備 その1• VPC周りの設定

• SubnetやらRoute Tableやら

• SecurityGroupはNAT用、内外ELB用、Webサーバ用があればいい

• MX/Gateway用はCloudFormationで作成される

• NATインスタンス

• MXをPrivate Subnetに置く場合は最初に作成

• こいつがないと始まらない

準備 その2• MarketPlaceでSecureSphereのAMIを起動できるようにしておく

• 今回はOnDemandなMXとGateway

• CloudFormationのテンプレートを取得しておく

• テンプレートをカスタマイズするとサポート対象外になる(らしい)

MXを作るaws cloudformation create-stack --stack-name imperva-mx \ --template-url https://s3-ap-northeast-1.amazonaws.com/[BUCKET_NAME]/[TemplateName] \ --parameters ParameterKey=AvailabilityZone,ParameterValue=ap-northeast-1c,UsePreviousValue=false \ ParameterKey=DNSDomain,ParameterValue=default,UsePreviousValue=false \ ParameterKey=DNSServers,ParameterValue=default,UsePreviousValue=false \ ParameterKey=InstanceType,ParameterValue=m3.xlarge,UsePreviousValue=false \ ParameterKey=KeyPairName,ParameterValue=[KEY_PAIR_NAME],UsePreviousValue=false \ ParameterKey=ManagementSubnet,ParameterValue=[MX_SUBNET_ID],UsePreviousValue=false \ ParameterKey=NewUserName,ParameterValue=[MX_LINUX_USER_NAME],UsePreviousValue=false \ ParameterKey=NTPServers,ParameterValue=default,UsePreviousValue=false \ ParameterKey=PrivateIPAddress,ParameterValue=[MX_IP_ADDRESS],UsePreviousValue=false \ ParameterKey=SecurePassword,ParameterValue=[SECURE_PASSWORD],UsePreviousValue=false \ ParameterKey=SecurePasswordReType,ParameterValue=[SECURE_PASSWORD],UsePreviousValue=false \ ParameterKey=SystemPassword,ParameterValue=[SYSTEM_PASSWORD],UsePreviousValue=false \ ParameterKey=SystemPasswordReType,ParameterValue=[SYSTEM_PASSWORD],UsePreviousValue=false \ ParameterKey=Timezone,ParameterValue=Asia/Tokyo,UsePreviousValue=false \ ParameterKey=VpcId,ParameterValue=[VPC_ID],UsePreviousValue=false \ --capabilities CAPABILITY_IAM --profile [PROFILE_NAME]

MXにログイン

• https://[MX_IP_ADDR]:8083/にアクセスして表示言語とアカウント設定を行う

• BYOLの場合はここでライセンス登録も行う

Gatewayを作るaws cloudformation create-stack --stack-name imperva-gateway \ --template-url https://s3-ap-northeast-1.amazonaws.com/[BUCKET_NAME]/[TEMPLATE_NAME] \ --parameters ParameterKey=AvailabilityZones,ParameterValue=ap-northeast-1a\\,ap-northeast-1c,UsePreviousValue=false \ ParameterKey=AwsAccessKey,ParameterValue=[IMPERVA_USER_ACCESS_KEY],UsePreviousValue=false \ ParameterKey=AwsSecretKey,ParameterValue=[IMPERVA_USER_SECRET_KEY],UsePreviousValue=false \ ParameterKey=DataSubnets,ParameterValue=[GATEWAY_SUBNET_1A]\\,[GATEWAY_SUBNET_1C],UsePreviousValue=false \ ParameterKey=DNSDomain,ParameterValue=default,UsePreviousValue=false \ ParameterKey=DNSServers,ParameterValue=default,UsePreviousValue=false \ ParameterKey=ELBNames,ParameterValue=[EXT_ELB_1]\\ ,[EXT_ELB_2]...,UsePreviousValue=false \ ParameterKey=GatewayGroup,ParameterValue=[GATEWAY_GROUP_NAME],UsePreviousValue=false \ ParameterKey=ImpervaPassword,ParameterValue=[IMPERVA_PASSWORD],UsePreviousValue=false \ ParameterKey=ImpervaPasswordReType,ParameterValue=[IMPERVA_PASSWORD],UsePreviousValue=false \ ParameterKey=InstanceType,ParameterValue=m3.large,UsePreviousValue=false \ ParameterKey=KeyPairName,ParameterValue=[KEY_PAIR_NAME],UsePreviousValue=false \ ParameterKey=ManagementServerIP,ParameterValue=[MX_IP_ADDRESS],UsePreviousValue=false \ ParameterKey=ManagementSubnets,ParameterValue=[MANAGEMENT_SUBNET_1A]\\,[MANAGEMENT_SUBNET_1C],UsePreviousValue=false \ ParameterKey=NewUserName,ParameterValue=[USER_NAME],UsePreviousValue=false \ ParameterKey=NTPServers,ParameterValue=default,UsePreviousValue=false \ ParameterKey=ScalingMaxSize,ParameterValue=2,UsePreviousValue=false \ ParameterKey=ScalingMinSize,ParameterValue=2,UsePreviousValue=false \ ParameterKey=SecurePassword,ParameterValue=[SECURE_PASSWORD],UsePreviousValue=false \ ParameterKey=SecurePasswordReType,ParameterValue=[SECURE_PASSWORD],UsePreviousValue=false \

サイトの設定

• SecureSphereを通してアクセスさせるサイトの設定をする

• 基本はReverse Proxy設定で転送先のELBのEndpointを設定するくらい

• 簡易的なRewrite機能もある

アクセスしてみる

• 閲覧できたら成功

攻撃してみる

• XSSやSQLインジェクション的なことをしてみる

• ブロックしてくれていたら成功

• (注)本デモに関してはツイートなど禁止で。

• こんな感じで。

こんな構成もできます

まとめ• セキュリティ対策重要

• 扱うのに少々慣れが必要

• 設置よりも運用が大事

• ログの解析ができないと意味が無い

• 結構ライセンスが高いので覚悟が必要

• NATインスタンス重要