【Web】セキュリティと認証

情報セキュリティ

情報の「機密性」「完全性」「可用性」を維持すること。

  • 機密性
    アクセス権がある者だけがアクセスできる状態であること。

  • 完全性
    情報が改竄、消去など、手を加えられていない状態であること。

  • 可用性
    利用者が必要な時にアクセスできること。

攻撃の種類

パスワードを盗む:パスワードクラッキング

会員制のWebサイトなどで、パスワードを繰り返し入力して正しいパスワードを抜き出そうとする攻撃。
パスワードの長さを指定したり記号を必須とする、また入力を試すことのできる回数を制限する、などで対策できる。

サーバーに負荷を与える:DoS攻撃

短時間にサーバーが処理しきれないような数のアクセスを行い、サーバーをダウンさせる攻撃。SYN Flood攻撃や、F5攻撃などがある。
不自然なアクセス数の増加を検知し、送信元のIPアドレスからのアクセスを遮断するような手段を取る。

CookieやURLの仕組みを利用した攻撃

  • セッションハイジャック
    認証機能のあるWebサイトなどで、第三者CookieやセッションIDを取得し、ログイン済みのユーザーになりすましてシステムを利用すること。
    CookieやセッションIDは通信の盗聴などで盗まれることがあるため、通信を暗号化したり、ログインしたユーザーが異なるIPからアクセスしてきた場合に強制的にログアウトさせるなどの対策が必要となる。

  • ディレクトリトラバーサル
    URLでWebサーバーのディレクトリ名を相対パスで指定し、Web上に公開する想定のないファイルを送信させること。
    リクエストのURLをチェックし、公開していないファイルを指定していないか確認することで防ぐ。

スクリプトを送り込む

  • クロスサイトスクリプティングXSS
    Webサイトに悪質なスクリプトが埋め込まれることで、利用者の操作によってスクリプトがWebサーバーに送信され、結果として利用者のブラウザ上で偽のページが表示されたり、Cookie情報が漏洩することがある。

  • クロスサイトリクエストフォージェリCSRF
    XSSと同様に、Webサイトに悪質なスクリプトを埋め込み、利用者の操作によってスクリプトをWebサーバーに送信する攻撃。認証機能のあるWebサイトでログインした状態の利用者をターゲットとし、罠ページに誘導し意図しないリクエストをWebサーバーに送信させる。結果として、利用者の登録情報の改ざんや、ログインした状態でしか利用できないサービスを悪用されることがある。

  • SQLインジェクション
    利用者が入力した情報をDBサーバーに連携する処理を行う画面で、送信する内容にDBが解釈できる情報(SQLクエリ)を混ぜることで、DBに意図しない操作をさせる攻撃。

悪質なスクリプトを埋め込むような攻撃に対しては、入力欄でのサニタイズ処理(スクリプトの構成に必要な特殊文字エスケープ処理)やプログラム上での入力値の制限などが有効である。

対策

攻撃者からのアクセスを防ぐ

  • ファイアーウォール
    サービスに必要な通信のみを許可し、それ以外の通信を遮断するもの。 インターネットと内部ネットワークの間に設置して、通信されるデータを監視し、通信の許可・拒否を行う。
    パケットフィルタ型と呼ばれる方式では、送受信されるデータ(パケット)のIPアドレス、ポート番号をチェックして、通信可否を判断している。
    不特定多数のユーザーが利用するシステムの場合、IPアドレスで通信可否を判断することは難しいが、ポート番号を制限するだけでも攻撃手段を減らす効果はある。

  • IDS, IPS
    ファイアーウォールを通過してきた通信を監視する手段。
    ネットワーク上の通信を監視し、不正アクセスと見られる通信や異常な通信を検知する。不正アクセスの検知方法としては2つある。1つは、既知の攻撃による通信パターンと比較して一致すれば不正と判断する方法(シグネチャー型)、もう1つは、普段の通信とは大きく異なる通信パターンを検知する方法(アノマリー型)である。
    また、不正を検知したときの動きとして、IDSは管理者に通知するのみでIPSは通知と同時に通信の遮断まで行う。
    → IDS, IPSによってDoS攻撃のような明らかな攻撃は防ぐことができる。

  • WAF(Web Application Firewall
    送信されるパケットの中身をチェックするファイアーウォール。データパターンをチェックして、特定のパターンのデータの通信を遮断する、もしくは正常なデータパターンに適合する通信のみ通す。
    WAFは、高機能な仕組みであるものの機器が高価であることや運用にもコストがかかるため、導入前に検討が必要である。

Webアプリケーション側での対策

暗号化

通信の盗聴リスクを考えて、通信や保存データの暗号化が必要である。

公開鍵証明書(SSL証明書

やり取りする相手が本物であることを証明するもの。
公開鍵証明書によって、アクセスするWebサイトが本物であることを確認(Webサイト側からすると証明)できる。 公開鍵証明書は認証局から発行され、偽造されにくく偽造されても検知できる。Web上での身分証明書とも言える。

本人確認の仕組み

認証

Webサイトごとではなく、利用者の多いWebサイト(Google, Twitter, Facebookなど)が認証の仕組みを提供することも増えている。

参考

https://www.amazon.co.jp/dp/4797388811/ref=cm_sw_r_tw_dp_NBMH9B9CJXY503PKBGP6