##はじめに
業務研修の中でタイトルにある本を読むことになったのでまとめとして書いています。
この記事が僕と同じような初心者エンジニアさんのお役に立てれば幸いです。
##情報セキュリティ
情報セキュリティは、情報の「機密性」、「完全性」、「可用性」を維持することと定義されている。
機密性=第三者にアクセスさせない
完全性=情報が破壊、改ざん、消去されていない状態を確保
可用性=情報へのアクセスがいつでもできる
何らかの損失が発生する可能性を「リスク」、リスクを現実化させる要因が「脅威」、脅威に対する弱みが「脆弱性」。
情報セキュリティの維持には脅威と脆弱性を洗い出し、リスクの顕在化を防ぐことが必要。
###パスワードクラッキング
IDとパスワードによる認証をする会員制Webサイトから個人のパスワードを抜き出そうとする攻撃
辞書攻撃=よく使われるパスワードの一覧を試す
ブルートフォールス攻撃=全組み合わせを試す
数度間違えればアカウント停止などが対策となる
###Dos攻撃
大量のアクセスを送りサービス停止に陥らせる攻撃
SYN Flood攻撃=SYNパケットを大量に送る(別のユーザがアクセスできない)
F5攻撃=繰り返しアクセスを送る、再度読み込みをする
不自然なアクセスの増加を検知して送信元からのアクセスを断ち切ることが対策となる
##Webシステムの特徴を利用した攻撃
###セッションハイジャック
会員系のサービスでCookieやセッションIDの値を抜き取られ、個人情報が取得されてしまう攻撃
対策として通信を暗号化する、急に異なるIPアドレスから接続してきた場合にログアウトさせる
###ディレクトリトラバーサル
URLからWeb公開ディレクトリより上の階層へたどり、パスワードなどを抜き出す攻撃
公開していないディレクトリやファイルが指定されていないかを確認することが対策となる
##Webアプリケーション脆弱性を狙う攻撃
動的サイトは処理の自由が高い分、脆弱性をつかれた場合は攻撃者の自由度も高くなる
###クロスサイトスクリプティング(XSS)
悪意あるサイトのリンクを踏ませて、脆弱性のあるサイトでユーザのブラウザにスクリプトを読み込ませクライアント・スクリプトとして実行させる。送りこませるスクリプトとしてはセッションハイジャックのためのCookie情報を抜き出すものやウイルス系のものなど。
###クロスサイトリクエストフォージェリ(CSRF)
XSSと同じくスクリプトが実行されるもの。違いとしてCSRFの場合はログイン情報を抜き取って本人を装いSNSなどにログインするというとこ。
###SQLインジェクション
検索画面やログイン画面で実際のSQL文を打ち込み、DBを操作する。
##Webシステムの脆弱性
###セキュリティホール
ソフトウェア欠陥により本来できないはずの操作がユーザにできてしまったりする不具合のこと。
OS、webサーバ、DBから日々見つかっている。
製作元は脆弱性情報データベースを元に修正プログラムを作って配布する。
修正プログラムが開発される前に再度同じ攻撃を仕掛けることをゼロデイ攻撃という。
対策としてはっきりとしたものはなく、攻撃の可能性のある通信を遮断するようなセキュリティ製品もある。
##ファイアーウォール
インターネットと内部ネットワークの間に位置し、通信に対して許可・拒否を行うもの。
違うセキュリティソフトウェアと併用することが多い。
EX>インターネットからの場合はDBはアクセスできない、など
####パケットフィルタ型ファイアーウォール
IPアドレスとポート番号から通信の許可・拒否の判断を行う
##IDS,IPS
ファイアウォールの次の手として、IDSとIPSがある。これらは通信を監視し、不正アクセスとみられる通信や普段と異なる異常な通信を検知する装置です。
IDSは通信をそのまま通し管理者にメールを通知するもの
IPSは該当の通信を遮断する
これらはシステムの用途や性質によって使い分けられる。
不正アクセスの検知方法は二つある。
シグネチャ型=既知の攻撃手法における通信パターンが登録されたデータベースのものと一致する通信を不正アクセスと判断する、SYN Flood攻撃のような特徴的なものを検出できる
アノマリー型=普段の通信とは大きく異なる通信を不正アクセスとして判断する、F5攻撃などを検出できる
##WAF
IDSやIPSを使うことで、DoS(F5,SYN Flood)のようなあからさまなものは防げるが、通信の中身まで確認しないためXSSやSQLインジェクションを検知することはできない。
そこでやり取りされるパケットの中身を見て悪意のあるデータが含まれていないかをチェックするWAF(Web Application Firewall)がある。運用にも手間やコストがかかるが高機能である。
####ブラックリスト型
IDSのシグネチャ型と同じように、特定のパターンのデータを持つ通信を遮断する
基本的に開発元が提供するものを利用するため新たな攻撃手法があった場合はそのパターンが追加されるまで対応できない。
####ホワイトリスト型
正常なデータのパターンを登録しておき、それに適合する通信のみ通す。
##公開鍵証明書
やり取りの相手が本物であることを証明するものが公開鍵証明書、 SSL通信に使われることが多いためSSL証明書とも呼ばれている。
HTTPS通信に使うための公開鍵の持ち主が誰なのかを証明すること
公開鍵の持ち主が実在することを証明すること
役割は上記の二つ。
第三者機関の認証局が公開鍵証明書を発行するので一定の信頼はある。
##認証
###認証API
提供する側は認証の処理の仕組みをAPIとして提供する。
各社ごとにAPIの仕様が統一されていないため複数の認証APIを実装するのは手間がかかる。
###OpenID
認証APIの問題を解決するため、認証処理を標準化したプロトコルがOpenID。
##認可
認証によって確認した結果によりユーザごとの権限に従って利用できるサービスの許可を行うことを「認可」という。
###OAuth
OAuthはサイトをまたいだ認可を可能にするプロトコル。
利用したいサービスは「リソース」と呼ばれ、サービスを提供するサーバが「リソースサーバ」、そのユーザが「リソースオーナー」、実際に使用するWEBサイトやアプリを「クライアント」と呼ぶ。