どうも、LIGのテクニカルディレクターのおきくです。
最近はPM業務が多くなり、本来のテクニカルディレクション業務から離れることも多いですが、相変わらず技術に対する知識欲は衰えておりません(笑)。
さて今回ですが、案件などでよく設計やディレクションすることが多い、セキュリティ設計(サーバーサイド限定)についてお話ししたいと思います。このブログを通じてみなさんのセキュリティ設計に少しでもお役立てできたら幸いです。
インフラ関連について
インフラ関連だと様々な観点での設計が必要になりますが、主に以下観点での設計が必要です。
- アクセス管理
- WAF
- 侵入検知・防御
アクセス管理について
様々な観点でアクセス管理を実施する必要性があります。
基本的な考え方としては、各リソースやサブネットワークへのアクセスについて許可されていないIPやサービスからのアクセスを禁じる、想定外なアクセスを行わないようにするなどの設計が必要です。
管理内容 | 目的 | |
---|---|---|
IAMロール | ポリシー設定を通じて、各ユーザーやアプリのAWSのリソースに対するアクセス制限を実施 | 各ユーザーが必要以上のリソースのアクセスを行わせないようにするため |
ARN | ポリシー内容において具体のリソースへのアクセス操作や対象のリソースについて記載 | 各ロールが必要以上のリソースのアクセスを行わせなくするようにするため |
セキュリティグループ | EC2などのAWSの各サービスへのアクセスについて、アクセス元のIPアドレスやポート番号などをホワイトリスト形式で実施 | 想定外のアクセス元からへのアクセスを防ぐため |
ACL | サブネットワークへのアクセスについて、アクセス元のIPアドレスやポート番号などをホワイトリスト形式で実施 | 想定外のアクセス元からへのアクセスを防ぐため |
WAFについて
WAFとはWeb application firewallの略です。その目的はWebアプリケーションの脆弱性を悪用した攻撃から Webアプリケーションを保護することです。
想定される脆弱性はご覧のとおりとなります。
※WAFの設定はルールの設定が必要です
SQLインジェクション | アプリケーションのセキュリティ上の不備を意図的に利用し、アプリケーションが想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃 |
---|---|
クロスサイトスクリプティング | 攻撃対象のWebサイトの脆弱性を突き、攻撃者がそこに悪質なサイトへ誘導するスクリプトを仕掛けること |
OSコマンドインジェクション | Webサイトに向けて不正な入力を行うことにより、Webサーバ側で想定していない動作をさせるサイバー攻撃 |
侵入検知・防御
侵入検知並びに防御とは、Webシステムやサーバー、OSの脆弱性を突いた攻撃に対して、運用者へ通知もしくは防御する対策です。一般的にはIDSやIPSと呼ばれています。
これによって以下攻撃を防ぐ且つ検知することが可能です。これもWAFと同様に防御するためには、運用者がルールを設定する必要性があります。
DDoS攻撃 | 攻撃対象となるWebサーバーなどに対し、複数のコンピューターから大量のパケットを送りつけることで、正常なサービス提供を妨げる |
---|---|
ゼロデイ攻撃 | ソフトウェアなどのセキュリティホールが発見されてから、その情報公開や対策が講じられる前に、そのセキュリティホールを狙う攻撃 |
マルウェア | ウイルスを含む、あらゆる種類の悪意のあるソフトウェア |
その他
最近だと、DevSecOpsと呼ばれるように従来のDevOpsだけの開発と運用のサイクルを回す手法だけでなく、開発、セキュリティチェック、運用サイクルも生まれています。
具体的には、nodeやGemなどのライブラリファイルをDeployやテストする前に実施することで、ライブラリの脆弱性をテストやデプロイする前に検知する方法です。このような開発手法の観点でも、検討することによってセキュリティ性を高めることは可能なのではないでしょうか。
また定期的にOWASP ZAPなどのペネトレーションテストを実施することでシステム全体の脆弱性も診断することも可能です。
最後までお読みいただきありがとうございました。