10736 文字
54 分
セキュア システム アーキテクチャ - 多視点からの工学論文

内部の概要#

これは、最新のソフトウェア システムとネットワークをゼロから構築および防御するための実用的な実践ガイドと考えてください。

このガイドが他と異なるのは、私たちのアプローチです。 物理的なネットワーク ケーブルからアプリケーション コードに至るまで、テクノロジー スタック全体を、毎日この技術を使用して生きている 4 人の目を通して見ていきます。

  • 基盤を構築する ネットワーク エンジニア
  • それを守らなければならない サイバーセキュリティディフェンダー
  • それを突破しようとする攻撃的なハッカー
  • その上で実行されるコードを作成する ソフトウェア エンジニア

無味乾燥な学術的な内容を含まない、重要なセキュリティに関するトピックの完全なツアーをご覧いただけます。 次のような内容について説明します。

  • 最初から攻撃されにくいネットワークを設計します。
  • 1 回の失敗が大惨事にならないように防御を階層化します (多層防御)。
  • サイバーキルチェーンに従って攻撃者のように考えます。
  • 初日から安全なコードを作成します (安全な SDLC)。

パート I: 基盤 - 安全なネットワーキングの基礎#

第 1 章: セキュリティ レンズを通して再検討されるネットワーク モデル#

安全なアーキテクチャへの旅は、すべてのデータ通信が始まる場所、つまりネットワークから始まります。 OSI または TCP/IP モデルの表面的な理解では不十分です[1]。 セキュリティの専門家は、各層の機能だけでなく、攻撃対象領域についても理解する必要があります。

1.1 レイヤ 1 - 物理層: 明白な脅威#

  • ネットワーク エンジニアの見解: この層は、ケーブル、光ファイバー、スイッチ、ハブの世界です。 主な懸念事項は、物理的な接続、信号の整合性、およびハードウェアのプロビジョニングです。 それはすべてが構築される基礎です。
  • ハッカーの見解: 物理層は、アクセス可能な場合、究極の攻撃ベクトルとなります。 攻撃はしばしば厚かましいですが、非常に効果的です。
  • 盗聴: ネットワーク ケーブルに直接接続して、暗号化されていないトラフィックを傍受する[2]
  • ハードウェア インプラント: 悪意のあるデバイス (Raspberry Pi など) をファイアウォールの背後の安全なネットワーク内に配置し、永続的な C2 (コマンド アンド コントロール) チャネルを確立します。
  • ポート アクセス: 会議室またはロビーにある安全ではないアクティブなネットワーク ジャックにラップトップを接続するだけです。
  • 防御者の見解: 物理的セキュリティはネットワーク セキュリティです。 防御は手順的かつ物理的です。サーバー ルームのロック、未使用の壁ポートの無効化、厳格なアクセス制御ポリシー、ハードウェアの改ざん防止シールなどです。 技術的な観点から見ると、IEEE 802.1X ネットワーク アクセス コントロール (NAC) を実装して、ネットワークに物理的に接続するデバイスからの認証を要求できます。[3]

1.2 レイヤ 2 - データ リンク レイヤ: ローカル ネットワークの戦場#

  • ネットワーク エンジニアの見解: これは、MAC アドレス、スイッチ、およびローカル エリア ネットワーク (LAN) の領域です。 主なプロトコルはイーサネットと ARP (アドレス解決プロトコル) で、IP アドレス (レイヤー 3) を MAC アドレス (レイヤー 2) にマッピングします。[4]。 この層は、同じローカル ネットワーク セグメント上の正しいデバイスにフレームを取得する役割を果たします。
  • ハッカーの見解: レイヤ 2 は暗黙的信頼モデルで設計されているため、攻撃に適した環境です。
  • ARP スプーフィング/ポイズニング: 攻撃者は、偽造した ARP メッセージを LAN に送信します。 彼らは、攻撃者の MAC アドレスが被害者の IP に属していることをネットワーク ゲートウェイに伝え、また攻撃者の MAC アドレスがゲートウェイの IP に属していることを被害者に伝えることができます。 これにより、攻撃者は会話の途中に置かれ (中間者、MitM)、被害者のトラフィックをすべて傍受または変更できるようになります。[5]
  • MAC フラッディング: ネットワーク スイッチに対する攻撃。 攻撃者は、異なる送信元 MAC アドレスを持つイーサネット フレームを大量に送信し、スイッチの CAM (Content Addressable Memory) テーブルをいっぱいにします。 テーブルがいっぱいになると、スイッチは特定のポートにフレームをインテリジェントに転送できなくなり、「フェールオープン」モードに入り、ハブのように機能し、すべてのフレームをすべてのポートにブロードキャストします。 これにより、攻撃者はスイッチド ネットワーク上のすべてのトラフィックを盗聴できるようになります。[6]
  • VLAN ホッピング: ある VLAN に接続している攻撃者が、アクセスできないはずの別の VLAN 上のトラフィックにアクセスする攻撃。 これは多くの場合、誤って設定されたトランク ポートを悪用することによって行われます。[7]
  • 防御者の視点: スイッチは、これらの攻撃に対抗するための多数のセキュリティ機能を提供します。
  • ポート セキュリティ: 単一スイッチ ポートで使用できる MAC アドレスの数を制限し、特定の MAC アドレスのみを許可するように構成できます。[8]
  • DHCP スヌーピング: 不正な DHCP サーバーがネットワークに導入されるのを防ぎます。
  • ダイナミック ARP インスペクション (DAI): ネットワーク内の ARP パケットを検証し、ARP 要求/応答を DHCP スヌーピング バインディング テーブルと比較することで ARP スプーフィングを防止します。

1.3 レイヤー 3 - ネットワーク層: ルーティング チェス盤#

  • ネットワーク エンジニアの見解: これは、IP アドレスとルーティングの層です。 異なるネットワーク間でパケットを移動することです。 ルーターはこの層で動作し、宛先 IP アドレスに基づいてパケットを最終宛先に転送するかどうかを決定します。 ICMP (ping およびtraceroute 用) や IGMP などのプロトコルがここに存在します[9]
  • ハッカーの見解: レイヤ 3 攻撃は、ルーティングの妨害と ID のスプーフィングに重点を置いています。
  • IP スプーフィング: 攻撃者は、偽造した送信元 IP アドレスを使用して IP パケットを作成します。 これは、サービス拒否 (DoS) 攻撃で使用される主な手法です。 Smurf 攻撃では、攻撃者はネットワークのブロードキャスト アドレスに大量の ICMP エコー リクエスト (ping) を送信し、送信元 IP を被害者の IP に偽装します。 その後、ネットワーク上のすべてのホストが被害者に応答し、被害者を圧倒します。[10]
  • ルート ハイジャッキング (BGP ハイジャッキング): 攻撃者がインターネット ルーティング テーブル、特に ボーダー ゲートウェイ プロトコル (BGP) によって維持されているルーティング テーブルを破壊することによって、IP アドレスのグループを不正に制御する高度な攻撃。 これはトラフィックのリダイレクトに使用でき、スパイ活動や大規模な MitM 攻撃の強力なツールになります。[11]
  • 防御者の見解: この層での防御は、フィルタリングと検証に関するものです。
  • 入力/出力フィルタリング: ファイアウォールは、内部ネットワーク内からの送信元 IP アドレスを持つインターネットからの受信パケットをドロップするように構成する必要があります (入力フィルタリング)。 また、内部ネットワーク内から送信元 IP を持たない発信パケットをドロップするように構成する必要もあります (出力フィルタリング)。 これは、BCP 38 / RFC 2827 に記載されているように、IP スプーフィングの防止に役立ちます。[12]
  • アクセス コントロール リスト (ACL): ルーターとファイアウォールは ACL を使用して、送信元/宛先 IP、ポート、プロトコルに基づいてトラフィックを許可または拒否します。 これは、ネットワーク アクセス制御の基本的な構成要素です。

1.4 レイヤ 4 - トランスポート層: 接続コントラクト#

  • ネットワーク エンジニアの見解: この層は、ホスト間の通信サービスを提供します。 2 つの最も重要なプロトコルは、TCP (伝送制御プロトコル)UDP (ユーザー データグラム プロトコル) です。[13]
  • TCP: 接続指向、信頼性の高い、順序付けられた配信。 3 ウェイ ハンドシェイク (SYN、SYN-ACK、ACK) を介して接続を確立し、すべてのデータが正しく到着することを保証します。 HTTP、FTP、SMTP に使用されます。
  • UDP: コネクションレス、信頼性が低く、順序付けされていません。 これは「ファイア・アンド・フォーゲット」プロトコルであり、はるかに高速ですが、配信の保証はありません。 DNS、VoIP、オンラインゲームに使用されます。
  • ハッカーの見解: この層での攻撃は、多くの場合、リソースの枯渇と偵察に焦点を当てています。
  • TCP SYN フラッド: 古典的な DoS 攻撃。 攻撃者は、送信元 IP アドレスを偽装して、大量の TCP SYN パケットを被害者のサーバーに送信します。 サーバーは SYN-ACK で応答し、新しい接続にリソースを割り当て、最終 ACK を待ちますが、最終 ACK は到着しません (送信元 IP が偽であるため)。 これにより、多数の半オープン接続が残り、サーバーの接続テーブルが枯渇し、正規のユーザーが接続できなくなります。[14]
  • ポート スキャン: 攻撃者は nmap などのツールを使用して、ターゲット ホスト上のポート範囲にプローブを送信し、実行されているサービスを検出します。 「オープン」ポートは、悪用の潜在的なターゲットとなる可能性があるリスニング サービスを示します。[15]
  • 防御者の見解: 防御は状態管理とスキャン検出に重点を置いています。
  • ステートフル ファイアウォール: これらのファイアウォールは、TCP 接続の状態を追跡します。 対応する SYN パケットを見た場合にのみ SYN-ACK パケットの通過を許可し、SYN-ACK を見た場合にのみ ACK を許可します。 これにより、ステートレス パケット フィルターよりもはるかに安全になります。
  • SYN Cookie: SYN フラッドを軽減する技術。 サーバーは、SYN の受信時にリソースを割り当てる代わりに、接続に関する情報を SYN-ACK パケットのシーケンス番号にエンコードして送り返します。 クライアントが「Cookie」を含む最終 ACK を送信した場合にのみリソースを割り当て、それが正当なソースであることを証明します。[16]
  • 侵入検知システム (IDS): IDS は、ポート スキャン アクティビティを検出して警告するように構成でき、防御側に潜在的な攻撃を早期に警告します。

第 2 章: 防御可能なネットワーク アーキテクチャの設計#

すべてのデバイスが他のすべてのデバイスと通信できるフラット ネットワークは、ハッカーの楽園です。 単一の価値の低いホスト (プリンターやワークステーションなど) を侵害すると、ドメイン コントローラーやデータベースなどの価値の高いターゲットに簡単に横方向に移動できます。 防御可能なアーキテクチャはセグメント化されたアーキテクチャです[17]

2.1 セグメンテーションの原則: 内壁の構築#

  • ネットワーク エンジニアの見解: セグメンテーションとは、ネットワークをより小さな独立したサブネットワークに分割する手法です。 これは以下を使用して実現されます。
  • サブネット化: 大きな IP アドレス ブロックを小さなブロックに分割します。 トラフィックがサブネット間を移動するにはルーターが必要です。
  • VLAN (仮想 LAN): 同じ物理スイッチング インフラストラクチャ上に論理的に別個のネットワークを作成する方法。 VLAN 10 のポートが、異なる物理スイッチ上にある場合でも、VLAN 10 の他のポートとのみ通信できるようにスイッチを設定できます。[18]
  • 階層型アーキテクチャ: アプリケーションの機能に基づいてネットワークを分離する古典的な設計パターンで、多くの場合、インターネットに接続されたサービス用に DMZ (非武装地帯) が作成されます。[19]
  • Web 層 (DMZ): インターネットからアクセスできる最も外側の層。 Web サーバーとリバース プロキシが含まれます。
  • アプリケーション層: 中間層。Web 層からのみアクセスできます。 アプリケーションサーバーとビジネスロジックが含まれます。
  • データ層: 最も内側で最も保護された層であり、アプリケーション層からのみアクセスできます。 データベースが含まれます。
  • 防御者の見解: セグメンテーションは 多層防御 の基礎です。 最小特権の原則をネットワーク レベルで直接サポートします。 Web サーバーはドメイン コントローラーと直接通信する必要がないため、ファイアウォール ルールでその通信パスをブロックする必要があります。 Web サーバーが侵害された場合、攻撃者の横方向への移動能力は大幅に制限されます。 目標は、攻撃者にとって、DMZ からアプリ層、アプリ層からデータ層に至るすべてのステップを、困難で厳重に監視されるチョークポイントにすることです。

2.2 マイクロセグメンテーションとゼロトラスト#

  • ネットワーク エンジニアの見解: マイクロセグメンテーションは、セグメンテーションをさらに細かく進化させたものです。 大規模なゾーン (VLAN) ごとにセグメント化する代わりに、個々のワークロードまたはアプリケーションの周囲にセキュリティ境界を作成できます。 仮想化環境またはクラウド環境では、これは多くの場合、ソフトウェア定義ネットワーキング (SDN) と仮想ファイアウォールを使用して実装されます。
  • サイバーセキュリティ専門家の見解: マイクロセグメンテーションは、ゼロトラスト ネットワーク アーキテクチャの究極の表現です。 ゼロ トラストの中核となる理念は、「決して信頼せず、常に検証する」です。 攻撃者がすでにネットワーク内にいると想定しています[20]。 したがって、2 つの仮想マシン間の通信は、それらが同じサブネット上にある場合でも、暗黙的に信頼されません。 セキュリティ ポリシーによって明示的に許可される必要があります。 これにより、攻撃者にとって横方向の動きが非常に困難になります。
  • ソフトウェア エンジニアの見解: これは開発者に影響を与えます。 アプリケーションは、ネットワーク接続が保証されていないことを前提に設計する必要があります。 接続障害に対する回復力があり、正しいサービス検出メカニズムを使用して構成されている必要があります。 Kubernetes ネットワーク ポリシーは、開発者がコード (YAML) でマイクロセグメンテーション ルールを定義し、どのポッドが他のどのポッドと通信できるかを指定する代表的な例です。[21]

第 3 章: コア ネットワーク セキュリティ制御の詳細#

3.1 ファイアウォール: ネットワーク ゲートキーパー#

  • ステートレスとステートフル: 第 1 章で説明したように、ステートフル ファイアウォールは接続のコンテキストを理解するため、非常に優れています。
  • 次世代ファイアウォール (NGFW): NGFW は、単純なポート/プロトコル検査を超えた「ディープ パケット インスペクション」ファイアウォールです。 次のような機能が含まれています。
  • アプリケーション認識: ポート番号だけでなく、アプリケーションに基づいてトラフィックを識別および制御できます (例: Facebook をブロックするが Salesforce は許可する) (多くのアプリケーションはポート 443 で実行されるため)。[22]
  • 統合侵入防御 (IPS): 既知の攻撃シグネチャに一致するトラフィックをアクティブにブロックできます。
  • 脅威インテリジェンス フィード: クラウドベースの脅威インテリジェンス サービスと統合して、既知の悪意のある IP アドレスまたはドメインからのトラフィックをブロックできます。
  • Web アプリケーション ファイアウォール (WAF): WAF は、レイヤー 7 (アプリケーション層) で動作する特殊なファイアウォールです。 OWASP トップ 10 にリストされているような一般的な Web ベースの攻撃から Web アプリケーションを保護するように設計されています。[23]
  • 開発者の見解: WAF は重要な防御層ですが、安全なコーディングの代わりとなるものではありません。 それはセーフティネットです。 WAF は、次のような基本的な SQL インジェクション攻撃をブロックする可能性があります。OR 1=1ただし、熟練した攻撃者は、エンコード、難読化、またはより複雑なクエリを使用して WAF ルールをバイパスする方法を見つけることがよくあります。 主な防御策はコード自体にある必要があります (パラメーター化されたクエリを使用)。
  • ハッカーの見解: WAF 回避は確立された規律です。 攻撃者はツールを使用して WAF を調査し、ベンダーとルール セットを特定し、構文的には有効だが WAF の署名をトリガーしないペイロードを作成します。[24]

3.2 IDS/IPS: ネットワーク監視塔#

  • 侵入検知システム (IDS): 受動的監視デバイス。 ネットワーク トラフィックのコピーを分析し、不審なアクティビティを検出した場合はアラートを送信します。 交通を妨げません。
  • 侵入防御システム (IPS): アクティブなインライン デバイス。 トラフィックを分析し、悪意のあるシグネチャに一致するパケットをターゲットに到達する前にアクティブにブロックまたはドロップできます。
  • 検出方法:
  • 署名ベース: ウイルス対策ソフトウェアのように機能します。 既知の攻撃パターン (「シグネチャ」) のデータベースがあります。 これは既知の脅威に対しては非常に効果的ですが、新しい「ゼロデイ」攻撃を検出することはできません。
  • 異常ベース: システムはまず、「通常の」ネットワーク トラフィックがどのようなものであるかのベースラインを構築します。 その後、このベースラインから大きく逸脱するアクティビティがあればアラートを発します。 これにより新たな攻撃を検出できますが、多くの場合、高率の誤検知が発生する傾向があります。[25]
  • ハッカーの見解: 回避手法には、パケットの断片化、暗号化の使用 (計算コストがかかる SSL/TLS 復号化を実行しない限り、IDS/IPS は暗号化されたトラフィックを検査できません)、既知の署名との一致を避けるための攻撃ペイロードの変更が含まれます。


パート II: 防御者の城塞 - 全体的な防御のための戦略#

第 4 章: 多層防御の哲学#

多層防御は現代のサイバーセキュリティの中核となる哲学です。 それは、単一のセキュリティ管理は失敗する可能性があり、失敗する可能性があるという認識です。 目標は、攻撃者を検出し、速度を落とし、阻止するための複数の機会を提供する、多層的な冗長防御を作成することです。[26]

4.1 城塞の層#

中世の城は完璧な例えを提供します。

  1. 堀 (境界警備): これは防御の第一線です。 境界ルーターや境界ファイアウォールに対応します。 その役割は、単純で日和見的な攻撃者を排除することです。
  2. 外壁 (ネットワーク セキュリティ): より強力な障壁。 これは、内部セグメンテーション、IDS/IPS、および強力なアクセス制御リストに対応します。 境界を突破する脅威を封じ込めるように設計されています。
  3. 壁の射手 (監視と検出): これらは番兵です。 これは、セキュリティ オペレーション センター (SOC)、SIEM システム、ログ分析に対応します。 彼らは攻撃の兆候を積極的に探しています。
  4. The Inner Keep (ホストおよびエンドポイント セキュリティ): 厳重に強化された要塞。 これは、サーバーおよびワークステーション自体のセキュリティ制御に対応します。エンドポイント検出と応答 (EDR)、ホストベースのファイアウォール、ウイルス対策、ファイル整合性監視などです。
  5. 王冠の宝石 (アプリケーションとデータ セキュリティ): 最強のコントロールによって保護された究極の賞品。 これは、安全なアプリケーション コード、堅牢な認証と認可、保存中および転送中のデータ暗号化に対応します。
  6. 警備員 (人材、プロセス、およびポリシー): 人間の要素。 これには、セキュリティ意識向上トレーニング、インシデント対応計画、強力な運用セキュリティ手順が含まれます。
  • ハッカーの見解: 攻撃者は、これらの層を克服すべき一連の障害と見なします。 彼らの目標は、各層で最も弱いリンクを見つけることです。 従業員がフィッシング リンクをクリックした場合 (境界層とネットワーク層をバイパスした場合)、強力なファイアウォールは役に立ちません。 セキュリティで保護されたアプリケーションは、ホスト層で侵害される可能性があるパッチが適用されていないサーバー上で実行される場合は役に立ちません。

第 5 章: 脅威モデリング - 攻撃者の立場で考える#

脅威モデリングは、システムを構築する「前」にシステム内の潜在的な脅威と脆弱性を特定するための構造化されたプロセスです。 これは事後対応型ではなく、事前対応型のセキュリティ実践です[27]

5.1 STRIDE 方法論#

Microsoft によって開発された STRIDE は、脅威を分類するためのニーモニックです[28]:

  • Spoofing: 別のユーザーまたはコンポーネントの ID を不正に仮定すること。
  • 防御: 強力な認証 (MFA)、デジタル署名。
  • Tアンペアリング: 転送中または保存中のデータの不正な変更。
  • 防御: ハッシュ、アクセス制御、データ暗号化。
  • Repudiation: ユーザーがアクションを実行したときにそれを否定すること。
  • 防御: 監査ログ、デジタル署名を保護します。
  • I情報の開示: 権限のない個人に対する機密情報の公開。
  • 防御: 暗号化、アクセス制御。
  • サービスの停止: 正規のユーザーがシステムにアクセスできないようにします。
  • 防御: レート制限、負荷分散、回復力のあるアーキテクチャ。
  • **特権の昇格: ユーザーまたはコンポーネントが、資格のない権限を取得します。
  • 防御: 最小特権の原則、堅牢な認可チェック。

5.2 実践的な脅威モデリング演習#

  • ソフトウェア エンジニアの見解: ユーザーのプロファイルを更新するための単純な API エンドポイントを想像してください。PUT /api/users/{id}。 開発チームはセキュリティ専門家と協力して脅威モデルを実行します。
  1. アプリケーションを分解します: データ フロー図を描きます。 ユーザーのブラウザは HTTPS リクエストを API ゲートウェイに送信し、API ゲートウェイはそのリクエストをユーザー サービスに転送し、PostgreSQL データベースを更新します。
  2. STRIDE を使用して脅威を特定する:
  • (スプーフィング): あるユーザーは、別のユーザーのプロファイルを変更することで更新できますか?{id}URLにある? (これは典型的な認証の欠陥です)。
  • (改ざん): MitM の立場にいる攻撃者は、転送中のプロファイル データを変更できますか? (防御: HTTPS/TLS がこれを防ぎます)。
  • (情報開示): API 応答により、ユーザーのパスワード ハッシュやその他の PII などの機密データが漏洩しますか?
  • (サービス拒否): 攻撃者は、このエンドポイントに大量のリクエストを大量に送信して、サービスまたはデータベースを圧倒する可能性がありますか? (防御: レート制限)。
  • (権限の昇格): 更新ロジックに、攻撃者が管理者権限を取得できる脆弱性 (SQL インジェクションなど) はありますか?

このプロセスは、セキュリティを抽象的な概念からエンジニアリング タスクとテスト ケースの具体的なリストに変換します。

第 6 章: セキュリティ オペレーション センター (SOC) - 可視性と対応#

多層防御が戦略である場合、SOC はその戦略が実行される司令センターです。

6.1 SOC の中核: SIEM#

  • セキュリティ情報およびイベント管理 (SIEM): SIEM は、SOC の中枢神経系です。 その仕事は次のとおりです。
  1. ログの集約: 数百または数千のソース (ファイアウォール、サーバー、アプリケーション、クラウド サービスなど) からログ データを収集します。
  2. データの正規化: これらの異なるログ形式を共通のスキーマに解析します。
  3. イベントの関連付け: これが重要な機能です。 SIEM は相関ルールを使用して、さまざまなソースからの一見無害に見える個々のイベントを意味のあるセキュリティ インシデントに結び付けます。
  4. アラート: 相関ルールがトリガーされると、SIEM はセキュリティ アナリストが調査できるように忠実度の高いアラートを生成します。[29]
  • 開発者の見解: アプリケーションのログは、SIEM にとって重要なデータ ソースです。 適切なロギングはセキュリティ機能です。 ログは構造化され (JSON など)、関連するコンテキスト (ユーザー ID、ソース IP、リクエスト ID) を含み、セキュリティ関連の成功と失敗の両方のイベント (ログイン、パスワード変更、認証の失敗など) を記録する必要があります。

6.2 インシデント対応ライフサイクル#

アラートが実際のインシデントであると確認されると、SOC は構造化されたインシデント対応 (IR) 計画に従います。多くの場合、NIST のようなフレームワークに基づいています。[30]:

  1. 準備: インシデントが発生する「前」に行われる作業 (計画、ツール、訓練を受けた担当者がいる)。
  2. 識別: イベントがセキュリティ インシデントであるかどうかを判断します。
  3. 封じ込め: 当面の優先事項は出血を止めることです。 これには、侵害されたホストをネットワークから隔離するか、侵害されたユーザー アカウントを無効にすることが含まれる場合があります。
  4. 根絶: 環境から脅威を除去すること (例: マルウェアの削除、脆弱性へのパッチ適用)。
  5. リカバリ: システムを通常の動作に復元します。
  6. 教訓: インシデントの根本原因を特定し、再発を防ぐための改善点を特定するための事後分析。


パート III: 攻撃者の策略 - 攻撃方法#

強力なディフェンスを構築するには、オフェンスを理解する必要があります。 この部分では、攻撃者の考え方と方法論を詳細に分析し、他の場所で説明されている防御策のコンテキストを提供します。

第 7 章: サイバー キル チェーン - 攻撃の青写真#

ロッキード・マーティンによって開発されたサイバー キル チェーンは、典型的なサイバー攻撃の段階をモデル化しています。 防御側は、できるだけ早く連鎖を断ち切ることを目標に、各ステージにコントロールをマッピングできます。[31]

  1. 偵察: 攻撃者はターゲットに関する情報を収集します。
  • パッシブ偵察: 公開情報 (OSINT - オープンソース インテリジェンス) を使用します。
  • Active Recon: ターゲットのインフラストラクチャを直接調査します。 これには、ポート スキャン (nmap)、DNS 列挙、インターネットに接続されたデバイスを見つけるための Shodan などのツールの使用が含まれます。
  1. 兵器化: 攻撃者は、ターゲットに配信する悪意のあるペイロードを作成します。
  2. 配送: 武器化されたペイロードがターゲットにどのように送信されるか。 一般的なベクトルには、スピア フィッシング メールやドライブバイ ダウンロードが含まれます。
  3. エクスプロイト: 武器化されたペイロードがトリガーされ、ターゲットのシステムの脆弱性がエクスプロイトされます。
  4. インストール: 攻撃者は、被害者のマシンにマルウェアまたは リモート アクセス トロイの木馬 (RAT) をインストールして、足場を確立します。
  5. コマンド & コントロール (C2): インストールされたマルウェアは、攻撃者が制御する C2 サーバーに「コール ホーム」します。 これにより、永続的なチャネルが作成されます。
  6. 目標に対するアクション: 攻撃者は、データの引き出しやランサムウェアの展開などの最終目標を達成します。

第 8 章: 一般的な悪用ベクトルの詳細#

8.1 基本を超えた Web アプリケーションの脆弱性#

  • サーバー側リクエスト フォージェリ (SSRF): 攻撃者がサーバー側アプリケーションに任意のドメインへの HTTP リクエストを強制できる脆弱性。 クラウド環境では、これを使用してクラウド プロバイダーのメタデータ サービスにアクセスすることができ、一時的なセキュリティ認証情報が漏洩する可能性があります。[32]
  • 開発者の見解: SSRF 脆弱性は、アプリケーションがユーザー指定の URL を取得し、適切な検証を行わずにそこからコンテンツを取得するときに発生します。 防御策は、アプリケーションが要求を許可されているドメインとプロトコルの厳格な許可リストを維持することです。
  • 安全でない逆シリアル化: この脆弱性は、アプリケーションが適切な検証を行わずに、信頼できないユーザー提供のデータを逆シリアル化した場合に発生します。 攻撃者は悪意のあるシリアル化されたオブジェクトを作成し、逆シリアル化するとリモートでコードが実行される可能性があります。[33]

8.2 人間的要素: ソーシャル エンジニアリング#

  • ハッカーの見解: 多くの場合、人間が最も弱い部分になります。 ソーシャル エンジニアリングは、人々を操作してアクションを実行させたり、機密情報を漏洩させたりする技術です。
  • フィッシング: 正当な送信元からのように見える詐欺メールを送信し、被害者を騙して機密情報を漏らしたり、マルウェアを展開させたりすること。 スピア フィッシング は、特定の個人または組織を対象とした、高度に標的を絞ったフィッシング形式です。[34]
  • プリテキシング: 被害者の信頼を得るために捏造されたシナリオ (口実) を作成すること。
  • 防御者の見解: ソーシャル エンジニアリングに対する防御は多層構造になっています。
  • 技術的制御: 悪意のあるリンクと添付ファイルをスキャンする電子メール ゲートウェイ。
  • ユーザー トレーニング: 最も重要な防御策。 定期的なセキュリティ意識向上トレーニング。
  • プロセス: 機密性の高いアクションには複数人の承認が必要です。

第 9 章: 搾取後 - 土地を離れて暮らす#

攻撃者が最初の足がかりを築くと、攻撃は始まったばかりです。 次のフェーズは、アクセスを拡大し、検出されることなく目的を達成することです。このプロセスは、MITRE ATT&CK などのフレームワークで詳しく説明されています。[35]

  • 横方向の移動: 侵害されたホストから同じネットワーク内の他のホストに移動するプロセス。
  • ハッカーの見解: Windows Active Directory 環境では、これは明確に定義されたプロセスです。 攻撃者は、(Mimikatz などのツールを使用して) 最初のマシンのメモリから資格情報をダンプします。[36])、ドメイン管理者アカウントを探しています。 Pass-the-Hash などの手法を使用する場合があります。この手法では、平文のパスワードを必要とせずに、ユーザーのパスワード ハッシュを使用して他のマシンに対して認証を行うことができます。
  • 永続性: ネットワーク内での長期的な存在感を確立します。 攻撃者は、最初の脆弱性にパッチが適用されたり、侵害されたマシンが再起動されたりした場合でも、アクセスを確実に回復できるメカニズムを作成します。
  • Living Off the Land (LotL): 検出を回避するための重要なテクニック。 攻撃者は独自のカスタム マルウェアを持ち込む代わりに、被害者のシステムにすでに存在する正規のツールを使用します。 たとえば、スクリプト作成には PowerShell を、リモート コマンド実行には PsExec を使用します。[37]
  • 防御者の見解: LotL 攻撃を検出することは非常に困難です。 ここでは、エンドポイントの検出と応答 (EDR) ソリューションが重要です。 EDR は動作分析を使用して、不審なアクティビティ (たとえば、Word 文書が PowerShell プロセスを生成し、不審な IP アドレスへのネットワーク接続を確立するなど) にフラグを立てます。


パート IV: 建設者の責任 - 安全な設計#

セキュリティを後回しにすることはできません。 安全なシステムを構築する最も効果的な方法は、ソフトウェア開発ライフサイクルのあらゆる段階にセキュリティを統合することです。

第 10 章: 安全なソフトウェア開発ライフサイクル (SSDLC)#

SSDLC は 「シフト レフト」 と呼ばれることが多く、セキュリティ プラクティスを開発タイムラインの早い段階 (左側) に移動することを目的としています。[38]

  1. 要件フェーズ: セキュリティ要件は、機能要件と並行して定義する必要があります。
  2. 設計フェーズ: ここで脅威のモデリング (第 5 章) が行われます。
  3. 実装 (コーディング) フェーズ:
  • 開発者の見解: これには、一般的な脆弱性を回避するために安全なコーディングのベスト プラクティスに従うことが含まれます。
  • 静的アプリケーション セキュリティ テスト (SAST): SAST ツールは、アプリケーションを実行せずにソース コードを分析し、潜在的なセキュリティ上の欠陥を探します。[39]
  1. テスト段階:
  • 動的アプリケーション セキュリティ テスト (DAST): DAST ツールは、実行中のアプリケーションの脆弱性を調査する「ブラックボックス」テスターです。
  • ペネトレーション テスト: 倫理的なハッカーが脆弱性を積極的に悪用しようとする手動または半自動のプロセス。
  1. 展開とメンテナンス フェーズ: これには、実稼働環境の保護、継続的な監視、および脆弱性へのパッチ適用計画が含まれます。

第 11 章: アプリケーション セキュリティ (AppSec) の詳細#

11.1 認証と認可の詳細#

  • 認証 (あなたは誰ですか?):
  • 多要素認証 (MFA): アカウントを保護するための単一の最も効果的な制御。 さまざまなカテゴリの 2 つ以上の検証要素が必要です。知っているもの (パスワード)、持っているもの (電話)、またはあなた自身であるもの (生体認証)[40]
  • 承認 (何が許可されていますか?):
  • 開発者の見解: ここで多くの重大なバグが発生します。 一般的な欠陥は、安全でない直接オブジェクト参照 (IDOR) と呼ばれます。 これは、アプリケーションが認可チェックを実行せずに、ユーザー指定の識別子を使用してリソースにアクセスした場合に発生します。[41]。 この修正は、現在認証されているユーザーに、要求されたリソースへのアクセス許可があることを常に確認することです。

11.2 開発者のための暗号化: 基本ルール#

  • ルール 1: 独自の暗号を作成しないでください。 暗号を正しく理解するのは非常に困難です。 常に十分に精査された標準ライブラリを使用してください (例: Google の Tink、Libsodium)[42]
  • ルール 2: 強力な標準アルゴリズムを使用します。 パスワードのハッシュには、Argon2 のような最新の低速アルゴリズムを使用してください。[43]。 対称暗号化の場合は、AES-256-GCM を使用します。 非対称暗号化の場合は、RSA-4096 または楕円曲線暗号を使用します。
  • ルール 3: 鍵管理がすべてです。 暗号化システムのセキュリティは、鍵の機密性に完全に依存します。 専用のキー管理システム (KMS) またはハードウェア セキュリティ モジュール (HSM) を使用して暗号キーを保存および管理する[44]

11.3 サプライチェーンのセキュリティ: 新たなフロンティア#

  • ソフトウェア エンジニアの見解: 最新のアプリケーションは、何百ものオープンソースの依存関係から組み立てられています。 これらの依存関係の 1 つだけにおける脆弱性が、アプリケーションの脆弱性になります。 これはサプライチェーン攻撃です。
  • Log4Shell (例): Log4j の脆弱性は壊滅的な例でした。 ユビキタスな単一のログ ライブラリにリモートでコードが実行される重大な脆弱性があり、数百万のアプリケーションが即座に脆弱になります[45]
  • 防御:
  • ソフトウェア部品表 (SBoM): アプリケーション内のすべての依存関係の完全なインベントリを維持します。[46]
  • 脆弱性スキャン: Snyk、Dependabot、Trivy などのツールを使用して、依存関係を継続的にスキャンして既知の脆弱性を探します。

第 12 章: 最新のクラウドネイティブ スタックのセキュリティ保護#

12.1 コンテナのセキュリティ#

  • 安全なベース イメージ: 最小限の信頼できるベース イメージから始めます (例:distrolessまたはalpine) 攻撃対象領域を減らすため[47]
  • ルートとして実行しないでください: デフォルトでは、コンテナはルートとして実行されます。rootユーザー。 を使用します。USERDockerfile に、非特権ユーザーとしてアプリケーションを実行するための命令を追加します。
  • イメージ スキャン: Trivy や Clair などのツールを CI/CD パイプラインに統合して、レジストリにプッシュされる前にコンテナ イメージをスキャンして既知の脆弱性を探します。

12.2 Kubernetes セキュリティ#

Kubernetes は強力ですが、攻撃対象領域が大きい複雑なシステムです。

  • ロールベースのアクセス制御 (RBAC): RBAC を使用して、クラスター内のユーザーとサービス アカウントの両方に最小権限の原則を適用します。[48]
  • ネットワーク ポリシー: デフォルトでは、クラスター内のすべてのポッドは他のすべてのポッドと通信できます。 実装する必要がありますNetworkPolicy「デフォルトで拒否」のスタンスに基づいて通信を制限するためのリソース。
  • シークレット管理: シークレットをプレーン テキストとして ConfigMap に保存しないでください。 組み込みの Kubernetes Secrets オブジェクトを使用しますが、セキュリティを強化するには、HashiCorp Vault などの外部シークレット マネージャーと統合します。[49]
  • ポッド セキュリティ標準: ポッド セキュリティ標準を使用して、ルートとして実行したり、ホストのネットワークにアクセスしたりするなど、危険な構成でポッドが実行されるのを防ぎます。[50]

12.3 コードとしてのインフラストラクチャ (IaC) セキュリティ#

  • 開発者の見解: Terraform などの IaC ツールを使用すると、コードでインフラストラクチャを定義できます。 このコードは、展開される「前」に構成ミスがないかスキャンできます。
  • IaC の静的分析: CI/CD パイプラインで Checkovtfsec などのツールを使用して、Terraform コードをスキャンして、インターネット全体からの SSH を許可するパブリックにアクセス可能な S3 バケットやセキュリティ グループの作成などの一般的なセキュリティ問題を調べます (0.0.0.0/0[51]

結論: 規律の総合#

この 3 巻の旅では、バックエンド開発の基礎から分散システムの複雑さ、そして最後にセキュリティ アーキテクチャの包括的な分野に到達しました。 究極の教訓は、これらは別々の分野ではないということです。 ネットワークとセキュリティを理解していないソフトウェア エンジニアは、脆弱で脆弱なアプリケーションを構築することになります。 ネットワーク上で実行されているアプリケーションを理解していないネットワーク エンジニアは、ネットワークを効果的に保護することはできません。 開発や運用を理解していないセキュリティ専門家は、効果的な指導を行うことができません。 現代のシステムエンジニアは、本当の意味で博学者でなければなりません。 ネットワーク パケットからアプリケーション ロジック、ファイアウォール ルールからコンテナ構成に至るまで、抽象化のあらゆる層でシステムについて推論できなければなりません。 彼らは、ビルダー、ディフェンダー、ブレーカーとして同時に考える必要があります。 セキュリティは製品や機能ではありません。 それはよく設計されたシステムの特性です。 これは、進化し続ける脅威の状況に直面して、設計、防御、適応を行う継続的なプロセスです。 この研究で詳述されている原則に基づいた全体的なアプローチは、単なる方法論ではなく、私たちのデジタル世界が依存する回復力と信頼性の高いシステムを構築するための基本的な要件です。



参考資料#

1.クラウドフレア。 (未確認)。 OSI モデルとは何ですか? < から取得https://www.cloudflare.com/learning/ddos/glossary/open-systems-interconnection-model-osi/> 2. クレブス、B. (2012)。 小さなサイレントネットワークタップによる増大する脅威。 クレブス氏がセキュリティについて語る。 < から取得https://krebsonsecurity.com/2012/03/the-growing-threat-from-tiny-silent-network-taps/> 3.シスコ。 (未確認)。 802.1X とは? 以下から取得 https://www.cisco.com/c/en/us/products/security/what-is-802-1x.html 4.マイクロソフト。 (2021年)。 アドレス解決プロトコル。 マイクロソフトの学習。 < から取得https://learn.microsoft.com/en-us/windows-server/administration/performance-tuning/network-subsystem/address-resolution-protocol> 5.オワスプ。 (未確認)。 アドレス解決プロトコルのスプーフィング。 < から取得https://owasp.org/www-community/attacks/ARP_Spoofing> 6. インペルバ。 (未確認)。 MAC フラッディング。 < から取得https://www.imperva.com/learn/application-security/mac-flooding/> 7. シスコ。 (未確認)。 VLAN ホッピング攻撃。 < から取得https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst4500/12-2/15-02SG/configuration/guide/config/dhcp.html#wp1102555> 8. オタクのためのオタク。 (2023年)。 コンピュータ ネットワークにおけるポート セキュリティ。 < から取得https://www.geeksforgeeks.org/port-security-in-computer-networks/> 9. クラウドフレア。 (未確認)。 インターネット プロトコルとは何ですか? < から取得https://www.cloudflare.com/learning/network-layer/internet-protocol/> 10. クラウドフレア。 (未確認)。 スマーフ DDoS 攻撃。 < から取得https://www.cloudflare.com/learning/ddos/smurf-ddos-attack/> 11. クラウドフレア。 (未確認)。 BGP ハイジャックとは何ですか? < から取得https://www.cloudflare.com/learning/security/glossary/bgp-hijacking/> 12.IETF。 (2000年)。 RFC 2827: ネットワークイングレスフィルタリング: IP ソースアドレススプーフィングを利用したサービス拒否攻撃の阻止。 < から取得https://datatracker.ietf.org/doc/html/rfc2827> 13. IETF。 (1981年)。 RFC 793: 伝送制御プロトコル。 < から取得https://datatracker.ietf.org/doc/html/rfc793> 14. クラウドフレア。 (未確認)。 SYN フラッド攻撃。 < から取得https://www.cloudflare.com/learning/ddos/syn-flood-ddos-attack/> 15.Nマップ。 (未確認)。 公式 Nmap プロジェクト サイト。 < から取得https://nmap.org/> 16. ウィキペディア。 (未確認)。 SYN クッキー。 < から取得https://en.wikipedia.org/wiki/SYN_cookies> 17. サンズ研究所。 (2016年)。 ネットワークセグメンテーションの実装。 < から取得https://www.sans.org/white-papers/37232/> 18. IETF。 (2003年)。 RFC 3069: 効率的なアドレス割り当てのための VLAN 集約。 < から取得https://datatracker.ietf.org/doc/html/rfc3069> 19. パロアルトネットワークス。 (未確認)。 DMZ とは何ですか? < から取得https://www.paloaltonetworks.com/cyberpedia/what-is-a-dmz> 20.NIST。 (2020年)。 SP 800-207: ゼロトラスト アーキテクチャ。 < から取得https://csrc.nist.gov/publications/detail/sp/800-207/final> 21.Kubernetes。 (未確認)。 ネットワーク ポリシー。 < から取得https://kubernetes.io/docs/concepts/services-networking/network-policies/> 22. パロアルトネットワークス。 (未確認)。 次世代ファイアウォール (NGFW) とは何ですか? < から取得https://www.paloaltonetworks.com/cyberpedia/what-is-a-next-generation-firewall-ngfw> 23.オワスプ。 (未確認)。 OWASP トップ 10。 < から取得https://owasp.org/www-project-top-ten/> 24.オワスプ。 (未確認)。 WAF 回避テクニック。 < から取得https://owasp.org/www-community/attacks/WAF_Evasion_Techniques> 25. サンズ研究所。 (2001)。 侵入検知システムについて。 < から取得https://www.sans.org/white-papers/27/> 26. 国家安全保障局(NSA)。 (2021年)。 多層防御。 < から取得https://www.nsa.gov/portals/75/documents/what-we-do/cybersecurity/professional-resources/csg-defense-in-depth-20210225.pdf> 27.オワスプ。 (未確認)。 脅威モデリング。 < から取得https://owasp.org/www-community/Threat_Modeling> 28.マイクロソフト。 (2022年)。 STRIDE 脅威モデル。 マイクロソフトの学習。 < から取得https://learn.microsoft.com/en-us/azure/security/develop/threat-modeling-tool-threats> 29.スプランク。 (未確認)。 SIEMとは何ですか?。 < から取得https://www.splunk.com/en_us/data-insider/what-is-siem.html> 30.NIST。 (2012年)。 SP 800-61 Rev. 2: コンピュータ セキュリティ インシデント処理ガイド。 < から取得https://csrc.nist.gov/publications/detail/sp/800-61/rev-2/final> 31. ロッキード・マーティン。 (未確認)。 サイバーキルチェーン。 < から取得https://www.lockheedmartin.com/en-us/capabilities/cyber/cyber-kill-chain.html> 32.オワスプ。 (未確認)。 サーバー側のリクエスト偽造。 < から取得https://owasp.org/www-community/attacks/Server_Side_Request_Forgery> 33.オワスプ。 (未確認)。 A08:2021 – ソフトウェアおよびデータの整合性障害 (安全でない逆シリアル化に関連)。 < から取得https://owasp.org/Top10/A08_2021-Software_and_Data_Integrity_Failures/> 34.CISA。 (未確認)。 ソーシャル エンジニアリングとフィッシング攻撃の回避。 < から取得https://www.cisa.gov/uscert/ncas/tips/ST04-014> 35.ミトレ。 (未確認)。 ATT&CK フレームワーク。 < から取得https://attack.mitre.org/> 36. デピー、B. (死亡)。 ミミカッツ。 GitHub。 < から取得https://github.com/gentilkiwi/mimikatz> 37.マイクロソフト。 (2022年)。 土地を利用して生きています。 マイクロソフトのセキュリティ ブログ。 < から取得https://www.microsoft.com/en-us/security/blog/2022/05/26/living-off-the-land-a-technical-and-strategic-overview-of-lolbins/> 38.オワスプ。 (未確認)。 左にシフト。 < から取得https://owasp.org/www-community/Shift_Left> 39.オワスプ。 (未確認)。 静的アプリケーション セキュリティ テスト (SAST)。 < から取得https://owasp.org/www-community/Static_Application_Security_Testing_(SAST)> 40.NIST。 (2017年)。 SP 800-63B: デジタル ID ガイドライン: 認証とライフサイクル管理。 < から取得https://pages.nist.gov/800-63-3/sp800-63b.html> 41.オワスプ。 (未確認)。 A01:2021 – 壊れたアクセス制御 (IDOR に関連)。 < から取得https://owasp.org/Top10/A01_2021-Broken_Access_Control/> 42. グーグル。 (未確認)。 ティンク暗号ライブラリ。 < から取得https://developers.google.com/tink> 43. Argon2 パスワード ハッシュ関数。 (未確認)。 Argon2 公式サイト。 < から取得https://www.password-hashing.net/> 44.AWS。 (未確認)。 キー管理サービスとは何ですか? < から取得https://aws.amazon.com/kms/what-is-kms/> 45.CISA。 (未確認)。 Apache Log4j 脆弱性ガイダンス。 < から取得https://www.cisa.gov/uscert/apache-log4j-vulnerability-guidance> 46.NTIA。 (未確認)。 ソフトウェア部品表 (SBOM)。 < から取得https://www.ntia.gov/SBOM> 47. Googleクラウドプラットフォーム。 (未確認)。 ディストリビューションのない Docker イメージ。 GitHub。 < から取得https://github.com/GoogleCloudPlatform/distroless> 48. Kubernetes。 (未確認)。 RBAC 認証を使用。 < から取得https://kubernetes.io/docs/reference/access-authn-authz/rbac/> 49. ハシコーポレーション (未確認)。 保管庫。 < から取得https://www.vaultproject.io/> 50.Kubernetes。 (未確認)。 ポッドセキュリティ標準。 < から取得https://kubernetes.io/docs/concepts/security/pod-security-standards/> 51. ブリッジ乗組員。 (未確認)。 チェコフ。 < から取得https://www.checkov.io/>

セキュア システム アーキテクチャ - 多視点からの工学論文
https://banije.vercel.app/ja/posts/secure_systems_architecture/
作者
ibra-kdbra
公開日
2025-09-11
ライセンス
CC BY-NC-SA 4.0