セキュリティの「多層防御」について考えてみた
セキュリティ対策を考える際によく出てくる「多層防御」という言葉。
「入口対策~内部対策~出口対策」とか「偵察~武器化~~~目的実行」とか、いろんな流れがあるなかで「各段階で有効な対策を組み合わせましょう」という言葉と思っております。
が、いまいち「じゃぁ具体的にどこまで何しなきゃいけないのさ?」というのがモヤモヤしていたので、そもそもどんな具体策があるのかを自分なりに整理してみました。
以下の具体策はこれまでセミナーで聞いたり、セキュリティベンダの営業の方から聞いたり、ブログで見た内容をもとにまとめたものです。
ちょっとカテゴリ違うんじゃない?と思われるものもあるかもしれませんが、あしからず・・・。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
【主に入口対策】
■通信による侵入を防ぐ(決められた通信だけ入れる)
■Webからのマルウェア侵入を防ぐ(攻撃コードを通過させない)
⇒ExploitKitの配置されたWebサイトへつなげさせない(URLブラックリストによる通信遮断)
■メールによるマルウェア侵入を防ぐ(メール添付ファイルの検知)
⇒メールフィルタリングシグネチャ型
⇒メールフィルタリングSandBox型
■PCに外部媒体からマルウェアを侵入させない
⇒アンチウィルスによる検知
⇒外部媒体接続時の自動実行の抑止
⇒外部媒体を接続させない
■不正アプリからのマルウェアを侵入させない
⇒アンチウィルスによる検知
⇒アプリを勝手にインストールさせない
■PCにマルウェアを保存させない
⇒アンチウィルス(レピュテーション型)
⇒特定フォルダ以外ファイルを保存させない
■過去にPCに保存されたマルウェアを見つける
⇒アンチウィルスによるフルスキャン
■PCで攻撃コードを受信させない
⇒ホスト型IPS
⇒不要なWindowsサービスを停止する
⇒Web分離
■PCでマルウェアを実行させない
⇒振舞い検知させる
⇒マルウェアによく使われる拡張子関連付けの変更する
⇒SandBoxで動かして安全が確認できてから実行させる
⇒マクロの無効化
⇒スクリプト関連プログラムの無効化
【主に内部対策】
■情報に触れさせない
⇒ネットワークによるアクセス先の分離
⇒認証によるアクセス制御
⇒権限によるアクセス先の制御
■権限昇格させない
⇒そもそも論としてユーザに管理者権限を与えない
⇒脆弱性対策パッチ
■遠隔操作させない(アプリを起動させないなど)
⇒脆弱性対策パッチ
⇒レジストリを変更させない
⇒タスクを登録させない(バックドアを作らせない)
⇒スタートアップに登録させない
■不審な処理を検知する
【主に出口対策】
■C2と通信させない(PC)
⇒アプリケーションによる通信制御
⇒PCファイアウォールで特定拡張子のOutBound通信をブロックする
⇒EDRによる端末隔離
■C2と通信させない(NW機器)
⇒URLブラックリストによる通信遮断
⇒IPブラックリストによる通信遮断
⇒通信データ内容で通信遮断
⇒プロキシ認証による通信制御
⇒ポートによる通信制御
■情報を持ち出させない
⇒ゲートウェイ機器で特定拡張子の通信を遮断(RARなど)
⇒ゲートウェイ機器で特定容量以上の通信を遮断(2M以上は遮断など)
■情報を読めないようにする
⇒データを暗号化する
⇒データを暗号化し認証サーバと通信できない場合解読できないようにする
【(ついでに)インシデントレスポンス対応】
■追跡できるようにする
⇒イベントログをPCに保存する
⇒ウィルス検知ログをPCに保存する
⇒メールの送受信内容を保存する
⇒FWの通信ログを保存する
⇒プロキシの通信ログを保存する
⇒ADの認証ログを保存する
⇒ファイルサーバの操作ログを保存する
⇒全通信のパケットをキャプチャする
⇒業務サーバの操作ログを保存する
⇒サーバ系機器の管理者アカウントの認証ログを保存する
⇒サーバ系機器の管理者アカウントの操作ログを保存する
-------------------------------------
実現する製品やソリューションはいろいろあります。(そもそもWindowsの基本機能でできるものもあります。)
また、対策自体もたぶん他にもいろいろとあります。
それに、全部実現したからといって完璧に防げるわけではありませんし、おそらく運用やユーザの使い勝手がものすごく大変なことになると思います。
セキュリティ対策はバランスを考えて・・・
ちなみに私の会社でも実際に行っているのはこの中の一部です。