セキュリティ強化の一環で、AWSのクラウドで運用している自社サービス(Cardfeel)と自社ホームページのサイトにWAFを導入しました。WAFはウェブアプリケーションファイアウォールの略で、Webサーバーに対する攻撃をWebサーバーの前面で防御する仕組みです。
今回のWAF設定はロードバランサ(負荷分散)に対して行いました。インターネットからのアクセスを複数のサーバーに負荷分散する前の入り口部分で防御を行うことになります。
WAFの役割は、脆弱性に対する攻撃からシステムを防御することです。代表的なSQLインジェクションや、クロスサイトスクリプティングの攻撃に対してはWebサイトのプログラミングを適切に行うことが基本なのですが、このWAFを使うことでサイトの入り口でブロックすることができるようになり、プログラムのセキュリティ対策に抜け漏れがあるケースに対してもセキュリティを強化できます。またWAFの効力は上記にとどまらず、アプリケーション層の DDoS 攻撃や不正なボットからのアクセスも含まれます。
【導入手順】
WAFは異常なアクセスを検出しブロックする仕組みです。例えばPOSTアクセスで一定以上のデータサイズがあると攻撃とみなしてブロックするルールがありますが、実際に大きなデータをPOSTする仕様の場合は、実際に使うサイズのPOSTはブロックしないようにルールを調整する必要があります。
具体的には次の手順になります。
①本番同様の試験環境を用意しWAFの設定を行います。設定はサイトの特性に応じて適用ルールを調整します。サーバー間の連携など相手が安全なことを分かっている場合は、アクセス元のIPアドレス単位でブロックしないルールを適用することができます。
②本番相当のアクセスを行い動作テストを行います。十分テストすべきは攻撃のブロックではなく本来の操作です。本来の操作がブロックされる場合はルールを見直します。外部連携を伴う業務システムがある場合は少なくとも全ての連携をテストします。
③テスト済みの動作を本番環境に適用します。
④一般に公開しているサイトなら少なくても1日に数件は攻撃(脆弱性のサーチ)に該当するアクセスがあると思います。AWSの管理画面から攻撃がブロックされていることを確認します。また、当然ながらサイトが本来の正常な動作を行っているかをウォッチします。問題がある場合はルールを調整します。
【コスト】
アクセスコントロールの登録に対して月額5ドル、1ルールあたり月額1ドル、100万リクエストに対して0.6ドルといったところです。設定の数やアクセス規模に対して料金が変わるのですが、サーバー全体の費用に比べてとても安価です。
参考:サーバーに対するリクエストのグラフ
グラフの一番低いところに少し現れるのがブロックしたアクセスです。
AWSの管理画面では、ブロックしたアクセスの詳細も確認できます。目立つのは脆弱性のあるサイトをサーチするアクセスです。例えば次はWordPressを狙った脆弱性のサーチ。よく見かけます。これに限らずWordPressを狙った攻撃は非常に多いです。
次はPHPのフレームワークLaravelの環境設定ファイルを狙ったアクセスです。このアクセスも多いです。この脆弱性をサーチするWebツールが存在しているのでしょう。環境設定はDBの接続情報が記述されることもあり、絶対に公開しないファイルです。しかしながら何かのきっかけで外部からアクセス可能になると攻撃されてしまいます。WAFがあればこのようにWebサーバーの手前でブロックしてくれます。
このAWS WAFは価格が安価であり導入も比較的短期間で行えます。新規に構築するサイトはもちろんのこと、既存のサイトに対しても適用をお勧めします。
コンポーネントデザインでは新規サイトはもちろん、既存のAWSのサイトへのWAF導入を実施致します。どうぞお気軽にご相談下さい。