初めまして、GameWith のインフラ担当 加我(id:damenaragyouza)です。
GameWith Advent Calendar 2018 の2日目を担当させて頂きます。
ここ最近、外部からの不正なトラフィックによる攻撃が流行しています。
ユーザにサービスを安心して使って頂くために弊社もちゃんとセキュリティを考えていく必要があると感じ、現状の課題と対策を検討しました。
対象となる読者
- セキュリティ対策を何から始めようか迷ってる方
- チームにセキュリティの専任がいない状況で開発を行っている方
gamewith.jp におけるセキュリティ上の課題
弊社のゲーム攻略メディアである gamewith.jp は2013年9月にオープンしました。
特定の時間帯でトラフィックが跳ね上がるというサービス上の特性に対し、AWSを活用する事で高トラフィックな環境に対応してきました。
その反面、セキュリティに対しては十分な対策を行えていなかったという事情があり、現時点でどのような課題があるかを調べてみることにしました。
技術的な課題
- 外部からの不正なトラフィックを検知する仕組みがない
- ポートスキャンやSSHブルートフォースアタック
- DDoS攻撃
- 設定不備によるEC2のインターネット公開状態
- 内部から外部に対する不正なトラフィックを検知する仕組みがない
- 外部に向けてのDDoS攻撃やSSHブルートフォースアタック
- ビットコインのマイニング
- AWSアカウントに対する不正操作を検知する仕組みがない
- Credentialの漏洩
- 各種AWSサービスのAPI不正利用
- AWS Management Consoleへの不正ログイン
技術的な観点では上記の課題が見えてきました。
これはしっかりと対策をする必要があります。
少し観点を変えてみます。
人的リソースという点でどのような課題があるのかを考えてみました。
組織的な課題
- インフラの専任は自分のみ
- そもそもこれまでずっとインフラの専任は不在だった
- セキュリティの専任はずっと不在である
つまり、インフラとセキュリティに対してガッツリ対策ができる専任のリソースが無かったという状況が続いていました。こういった状況を改善すべく、どのような対策が可能で、より効果的なのかを考えていきます。
理想は「運用に私のリソースをそこまで費やす事なく、いい感じに検知してくれるような都合の良いサービス」です。まぁこんなの無いだろうなぁと思ってたんですがありました。
選ばれたのはAmazon GuardDutyでした
www.slideshare.net
Amazon GuardDutyは AWS環境におけるセキュリティの驚異リスクを検知するAWSマネージドサービス
です。
分析する情報として下記の3点が挙げられています。
Amazon GuardDutyの分析ソース
- VPC Flow Logs
- AWS CloudTrail Event Logs
- DNS Logs
上記のソースを機械学習で分析し、脅威(異常)を検知する仕組みとのことです。
Amazon GuardDutyを使用する事で弊社が抱える技術的な課題にアプローチが可能ではと考えました。
VPC Flow Logsからは 外部からの不正なトラフィックを検知
、 内部から外部に対する不正なトラフィックを検知
を、
AWS CloudTrail Event Logsからは AWSアカウントに対する不正操作の検知
を期待します。
導入してみて「やっぱりダメでした」という事もありえるため、30日間のフリートライアルがあるのは個人的に好印象です。
導入
AWS Management ConsoleからAmazon GuardDutyのコンソールに飛び「Get started」をポチるだけです。とても簡単。
導入した結果
意図せず外部との通信が可能になっていたSecurity Groupが適用されているEC2インスタンスに対し、外部からポートスキャン(PortProbeUnprotectedPort)が多々行われている事が判明しました。
この結果を踏まえ、Security Groupの全体的な見直しを実施することでGuardDutyが検知した脅威に対する対応ができました。Trusted Advisorを併用するとより効率的です。
現在はAmazon GuardDutyが検知した脅威をSlackに通知することで運用コストの軽減に成功しています。
[2019/6/28 追記] AWS Security Hubについて
re:Inventで新サービス AWS Security Hub が発表されました!既に東京リージョンでも利用可能です。
aws.amazon.com
AWS Security Hubは各セキュリティサービスを一括で管理する事ができるサービスで、文字通りHubとして機能してくれます。
先に導入したAmazon GuardDutyもSecurity Hubから管理する事が可能ですので、今後は全てこちらで管理・操作することになりそうです。
Security Hubの設定ですが、こちらも非常に簡単です。
SecurityHub ConsoleからEnable Security Hubを選択するだけです。
設定を有効にする際、いくつかのPermissionが必要になるので、内容を確認した上で有効にします。
StandardsではCIS AWS Foundationsの結果を確認することができます。
設定は簡単で、Enableを選択するだけです。(注意書きを見る限りだと、All resourcesに対してAWS Configを有効にする必要があります)
Insightsを見ると、様々な観点から問題を報告してくれます。
この観点の中には弊社がこれまで出来ていなかったセキュリティに対する技術的な課題へのアプローチ(Credentialの漏洩やEC2の設定不備/脆弱性)も含まれていました。
GuardDutyと併せて強力にサポートしてくれる事間違いなしです。
コスト
現在トライアルの最中なので最終的なコストはまだ出ていませんがコレくらいです。
この金額は月額のように錯覚しますが日額です。比較的高めではありますが、とても強力かつお手軽なため、トライアル終了後も継続して利用する事にしました。
終わりに
タイトルに第一歩と書いた通り、Amazon GuardDutyの導入はあくまで「脅威の検知」が目的です。
今後は脅威を未然に防ぐための仕組みづくりや、よりセキュアな運用方法を考えていく必要があります。
このような課題を一緒に考え、一緒に解決していってくれる仲間をGameWithはお待ちしております。
参考資料
Amazon GuardDuty(マネージド型脅威検出サービス)| AWS
20180509 AWS Black Belt Online Seminar Amazon GuardDuty | PPT
AWS Security Hub(統合されたセキュリティ & コンプライアンスセンター)| AWS