ネットワークセキュリティ基礎から実践まで 第2編:OSIモデルとTCP/IPセキュリティ
Network Security Fundamentals Part 2: OSI Model and TCP/IP Security
はじめに:層別セキュリティの重要性
ネットワークセキュリティを正しく理解するためには、まずネットワークがどのように動作するかを知る必要があります。OSI 7層モデルとTCP/IPモデルは、ネットワーク通信を理解するための核心的なフレームワークであり、各層にはそれぞれ固有のセキュリティ脅威と防御方法が存在します。
今回はOSIモデルを復習し、各層で発生する代表的な攻撃手法とその対応方法を詳しく解説します。また、実際のネットワークトラフィックを分析するために不可欠なWiresharkの使い方も一緒に見ていきます。
1. OSI 7層モデルの復習
OSI(Open Systems Interconnection)モデルは、ネットワーク通信を7つの層に分けて説明する参照モデルです。
| 層 | 名称 | 主な機能 | プロトコル/機器 | PDU |
|---|---|---|---|---|
| 7 | アプリケーション層 (Application) | ユーザーインターフェース、アプリケーションサービス | HTTP, FTP, SMTP, DNS | Data |
| 6 | プレゼンテーション層 (Presentation) | データ形式変換、暗号化、圧縮 | SSL/TLS, JPEG, ASCII | Data |
| 5 | セッション層 (Session) | セッションの確立、維持、終了 | NetBIOS, RPC | Data |
| 4 | トランスポート層 (Transport) | エンドツーエンド通信、フロー制御、エラー回復 | TCP, UDP | Segment |
| 3 | ネットワーク層 (Network) | 論理アドレス指定、ルーティング | IP, ICMP, ルーター | Packet |
| 2 | データリンク層 (Data Link) | 物理アドレス指定、フレーム生成、エラー検出 | Ethernet, ARP, スイッチ | Frame |
| 1 | 物理層 (Physical) | ビット伝送、物理的接続 | ケーブル、ハブ、リピーター | Bit |
OSI vs TCP/IPモデルの比較
OSI 7層 TCP/IP 4層
+------------+ +------------+
| アプリケーション| | |
+------------+ | アプリケーション |
| プレゼンテーション| | |
+------------+ +------------+
| セッション | | |
+------------+ +------------+
| トランスポート | | トランスポート |
+------------+ +------------+
| ネットワーク | | インターネット |
+------------+ +------------+
| データリンク | | |
+------------+ | ネットワーク |
| 物理 | | インターフェース|
+------------+ +------------+
2. 物理層セキュリティ (Layer 1)
物理層はネットワークの最も基礎となる層であり、実際のハードウェアと電気信号を扱います。
2.1 物理層の脅威
- 盗聴 (Wiretapping):ケーブルに物理的にアクセスして信号を傍受
- 機器の盗難/損傷:サーバー、ルーター、スイッチなどの物理的な窃取や破損
- 電磁干渉 (EMI):ケーブル信号を妨害または盗聴
- 無線盗聴:無線信号の収集と分析
2.2 物理層セキュリティ対策
- 物理的アクセス制御:サーバールームの施錠、入退室カード、CCTV設置
- ケーブル保護:シールドケーブル(STP)使用、ケーブルダクト設置
- 光ファイバー使用:電磁干渉に強く、盗聴が困難
- 環境モニタリング:温度、湿度、浸水検知センサー
- 無線セキュリティ:WPA3暗号化、SSIDの非表示、MACフィルタリング
3. データリンク層セキュリティ (Layer 2)
データリンク層は、同じネットワークセグメント内でノード間の通信を担当します。MACアドレスを使用し、スイッチがこの層で動作します。
3.1 ARPスプーフィング (ARP Spoofing)
ARP(Address Resolution Protocol)は、IPアドレスをMACアドレスに変換するプロトコルです。ARPスプーフィングは、このプロトコルの脆弱性を悪用する攻撃です。
攻撃の原理
正常なARP動作:
PC-A:「192.168.1.1のMACアドレスは何?」(ARP Request - ブロードキャスト)
ゲートウェイ:「私のMACアドレスはAA:BB:CC:DD:EE:FFです」(ARP Reply)
ARPスプーフィング攻撃:
攻撃者:「192.168.1.1のMACアドレスは私のMAC(XX:XX:XX:XX:XX:XX)です!」(偽造されたARP Reply)
PC-A:攻撃者のMACをゲートウェイと誤認 → すべてのトラフィックが攻撃者に送信
攻撃の結果
- 中間者攻撃(MITM)が可能
- セッションハイジャック
- トラフィックの盗聴と改ざん
- サービス拒否(DoS)
対応方法
- 静的ARPテーブル:重要な機器のMACアドレスを手動で固定
- Dynamic ARP Inspection (DAI):スイッチでARPパケットを検証
- ARP監視ツール:arpwatch、XArpなどでARPテーブルの変更を監視
- 暗号化通信:HTTPS、VPN使用で盗聴時も内容を保護
3.2 MACフラッディング (MAC Flooding)
スイッチのMACアドレステーブル(CAMテーブル)を偽のMACアドレスで埋め尽くし、正常な動作を妨害する攻撃です。
攻撃の原理
正常なスイッチ動作:
- MACアドレステーブルに学習されたMACに従って特定のポートにのみフレームを送信
- ユニキャスト通信で効率的なネットワーク運用
MACフラッディング攻撃時:
1. 攻撃者が数千〜数万個の偽MACアドレスを送信
2. スイッチのCAMテーブルがいっぱいになる(一般的に8K〜32Kエントリ)
3. スイッチがハブのように動作(すべてのポートにフレームをブロードキャスト)
4. 攻撃者がすべてのネットワークトラフィックを受信可能
対応方法
- ポートセキュリティ (Port Security):ポートごとに許可するMACアドレス数を制限
- 802.1X認証:ネットワーク接続前にユーザー/機器を認証
- VLAN細分化:ブロードキャストドメインの分離
# Ciscoスイッチ ポートセキュリティ設定例
Switch(config)# interface FastEthernet0/1
Switch(config-if)# switchport mode access
Switch(config-if)# switchport port-security
Switch(config-if)# switchport port-security maximum 2
Switch(config-if)# switchport port-security violation shutdown
Switch(config-if)# switchport port-security mac-address sticky
3.3 VLANホッピング (VLAN Hopping)
他のVLANに無断でアクセスする攻撃で、スイッチスプーフィングとダブルタギングの2つの方法があります。
- スイッチスプーフィング:攻撃者がスイッチに偽装してトランクポート接続を試行
- ダブルタギング:2つのVLANタグを使用して他のVLANにパケットを送信
対応方法
- 使用しないポートを無効化
- AccessポートでDTP(Dynamic Trunking Protocol)を無効化
- Native VLANを使用しないVLANに変更
- 明示的にトランクポートを構成
4. ネットワーク層セキュリティ (Layer 3)
ネットワーク層は、IPアドレスを使用した論理的なアドレス指定とルーティングを担当します。
4.1 IPスプーフィング (IP Spoofing)
送信元IPアドレスを偽造して、自分の身元を隠したり、他のホストに偽装する攻撃です。
攻撃の用途
- 匿名性の確保:攻撃元を隠蔽
- 認証回避:IPベースのアクセス制御を回避
- DDoS攻撃:反射/増幅攻撃で被害者のIPに偽装
- セッションハイジャック:既存の接続を乗っ取る
IPスプーフィング例(DDoS反射攻撃):
1. 攻撃者 → DNSサーバー(送信元:被害者IP、宛先:DNSサーバー)
「DNSクエリリクエスト」
2. DNSサーバー → 被害者(送信元:DNSサーバー、宛先:被害者IP)
「DNS応答(リクエストよりはるかに大きいサイズ)」
結果:被害者はリクエストしていない大量の応答トラフィックを受信
対応方法
- Ingress/Egressフィルタリング:異常な送信元IPを持つパケットをブロック
- BCP38/BCP84:ISPレベルでスプーフィング防止を適用
- uRPF (Unicast Reverse Path Forwarding):ルーターでソースIPを検証
- 暗号化認証:IPアドレスではなく暗号学的な方法で認証
4.2 ICMP攻撃
ICMP(Internet Control Message Protocol)は、ネットワーク診断やエラー報告に使用されますが、攻撃に悪用されることがあります。
主なICMP攻撃の種類
| 攻撃の種類 | 説明 | 影響 |
|---|---|---|
| Ping Flood | 大量のICMP Echo Requestを送信 | 帯域幅の枯渇、DoS |
| Ping of Death | 異常に大きなICMPパケットを送信 | システムクラッシュ(旧式システム) |
| Smurf Attack | ブロードキャストアドレスにスプーフィングされたPing | 増幅されたDDoS |
| ICMP Redirect | 悪意のあるルーティング情報を注入 | トラフィックの傍受 |
| ICMP Tunneling | ICMPパケットにデータを隠蔽 | ファイアウォール回避、データ漏洩 |
対応方法
- ICMP速度制限:ICMPトラフィックにrate limitingを適用
- 不要なICMPタイプをブロック:Redirect、Timestampなどをブロック
- ブロードキャストping無効化:Smurf攻撃防止
- ディープパケットインスペクション(DPI):ICMPトンネリングを検出
# Linux iptablesを利用したICMP速度制限
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# ICMP Redirectを無視する設定
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
5. トランスポート層セキュリティ (Layer 4)
トランスポート層は、TCPとUDPプロトコルを通じてエンドツーエンド通信を提供します。
5.1 TCP SYN Flood
TCP 3-wayハンドシェイクの脆弱性を悪用した代表的なDoS攻撃です。
TCP 3-Wayハンドシェイクの復習
正常なTCP接続の確立:
クライアント サーバー
| |
|------- SYN ------->| (接続要求)
| |
|<---- SYN-ACK ------| (接続受諾)
| |
|------- ACK ------->| (確認)
| |
|==== 接続確立 =====|
SYN Flood攻撃の原理
SYN Flood攻撃:
攻撃者 サーバー
| |
|------- SYN ------->| (スプーフィングされたIPでSYN送信)
|<---- SYN-ACK ------| (サーバーが応答待機 - Half-Open接続)
|------- SYN ------->|
|<---- SYN-ACK ------|
|------- SYN ------->|
|<---- SYN-ACK ------|
...
(数千〜数万のHalf-Open接続を生成)
結果:サーバーの接続テーブルがいっぱいになる → 正常なユーザーが接続不可
対応方法
- SYN Cookies:SYNキューを使用せず、暗号化されたクッキーで接続を管理
- SYNプロキシ:ファイアウォール/ロードバランサーでハンドシェイク完了後にサーバーに転送
- Rate Limiting:IPあたりのSYNパケット数を制限
- バックログキューの増加:Half-Open接続の許容数を増加
- タイムアウトの短縮:Half-Open接続の維持時間を短縮
# LinuxでSYN Cookiesを有効化
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
# SYNバックログキューを増加
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
# SYN-ACK再試行回数を減少
echo 2 > /proc/sys/net/ipv4/tcp_synack_retries
5.2 ポートスキャン (Port Scanning)
ポートスキャンは、ターゲットシステムで開いているポートと実行中のサービスを把握する技術です。偵察段階で主に使用されます。
主なスキャンの種類
| スキャンの種類 | 方法 | 特徴 |
|---|---|---|
| TCP Connect Scan | 完全なTCP接続の確立 | 正確だがログに記録される |
| SYN Scan (Half-Open) | SYNのみ送信、ACKの代わりにRST | 速くてステルス |
| FIN/NULL/Xmas Scan | 異常なフラグの組み合わせを使用 | ファイアウォール回避を試行 |
| UDP Scan | UDPパケットを送信 | 遅いがUDPサービスを検出 |
| ACK Scan | ACKフラグのみ送信 | ファイアウォールルールのマッピング |
# Nmapを利用した様々なスキャン例
# TCP Connectスキャン
nmap -sT 192.168.1.100
# SYNスキャン(管理者権限が必要)
nmap -sS 192.168.1.100
# UDPスキャン
nmap -sU 192.168.1.100
# サービスバージョン検出
nmap -sV 192.168.1.100
# OS検出
nmap -O 192.168.1.100
# 全ポートスキャン
nmap -p- 192.168.1.100
対応方法
- 不要なポートを閉じる:使用しないサービスを無効化
- ファイアウォールルール:許可されたIP/ポートのみ通過
- IDS/IPS:スキャンパターンを検出・ブロック
- ポートノッキング:特定のシーケンスでポートを開放
- ハニーポット:偽のサービスで攻撃者を誘引・分析
5.3 その他のトランスポート層攻撃
- セッションハイジャック:TCPシーケンス番号を予測して既存のセッションを乗っ取る
- TCP RST攻撃:偽造されたRSTパケットで接続を強制終了
- UDP Flood:大量のUDPパケットで帯域幅を枯渇
6. アプリケーション層セキュリティ (Layer 7)
アプリケーション層は、ユーザーと直接やり取りする層であり、様々なプロトコルとアプリケーションが動作します。
6.1 主なアプリケーション層の脅威
- SQLインジェクション:データベースクエリの操作
- XSS (Cross-Site Scripting):悪意のあるスクリプトの挿入
- CSRF (Cross-Site Request Forgery):ユーザー権限の悪用
- DNS攻撃:DNSスプーフィング、DNS増幅、キャッシュポイズニング
- HTTP攻撃:Slowloris、HTTP Flood
- メール攻撃:フィッシング、スパム、悪意のある添付ファイル
6.2 対応方法
- WAF (Web Application Firewall):Webアプリケーション攻撃をブロック
- 入力検証:すべてのユーザー入力を検証・エスケープ
- DNSSEC:DNS応答の整合性を検証
- メールセキュリティ:SPF、DKIM、DMARCを適用
- HTTPS強制:すべての通信を暗号化
7. Wiresharkを利用したパケット分析の基礎
Wiresharkは、最も広く使用されているオープンソースのパケット分析ツールです。ネットワークのトラブルシューティング、セキュリティ分析、プロトコル学習に不可欠なツールです。
7.1 Wiresharkの基本インターフェース
Wiresharkメイン画面の構成:
+--------------------------------------------------+
| メニューバー / ツールバー |
+--------------------------------------------------+
| フィルター表示バー (Display Filter) |
+--------------------------------------------------+
| |
| パケットリストペイン (Packet List Pane) |
| - キャプチャされたすべてのパケットの要約情報 |
| |
+--------------------------------------------------+
| |
| パケット詳細ペイン (Packet Details Pane) |
| - 選択されたパケットのプロトコル層別詳細情報 |
| |
+--------------------------------------------------+
| |
| パケットバイトペイン (Packet Bytes Pane) |
| - 選択されたパケットの生データ(16進数) |
| |
+--------------------------------------------------+
7.2 基本的なディスプレイフィルター
| フィルター | 説明 |
|---|---|
ip.addr == 192.168.1.100 |
特定IP関連のパケット |
tcp.port == 80 |
特定のTCPポート |
http |
HTTPプロトコルのみ |
dns |
DNSトラフィックのみ |
tcp.flags.syn == 1 |
SYNフラグが設定されたパケット |
arp |
ARPパケットのみ |
icmp |
ICMPパケットのみ |
!(arp or dns or icmp) |
ARP、DNS、ICMPを除外 |
tcp.analysis.flags |
TCP分析フラグ(再送など) |
frame contains "password" |
特定の文字列を含むパケット |
7.3 セキュリティ分析の活用例
ARPスプーフィングの検出
# ARPパケットのフィルタリング
フィルター:arp
# 疑わしいパターンを探す
- 同じIPに対して異なるMACアドレスが応答
- 異常に多いARP Reply
- Gratuitous ARPパケットの多発
# 有用なフィルター
arp.duplicate-address-detected
arp.opcode == 2 # ARP Replyのみ
SYN Floodの検出
# SYNパケットのフィルタリング
フィルター:tcp.flags.syn == 1 && tcp.flags.ack == 0
# 分析ポイント
- 同一宛先への大量のSYNパケット
- 多様な送信元IP(スプーフィングの兆候)
- SYN-ACKなしでSYNのみ継続
# 統計の確認
Statistics > Conversations > TCPタブ
Statistics > Endpoints
ポートスキャンの検出
# 様々なポートへの接続試行を確認
フィルター:ip.src == [疑わしいIP] && tcp.flags.syn == 1
# 分析ポイント
- 短時間で多くのポートにSYN送信
- 連続したポート番号のパターン
- RST応答が多い(閉じたポート)
# 有用な機能
Statistics > Conversations
Statistics > Protocol Hierarchy
7.4 実践のヒント
- キャプチャフィルター vs ディスプレイフィルター:キャプチャフィルターは保存時に適用、ディスプレイフィルターは表示時に適用
- Follow TCP Stream:特定の接続の全会話内容を確認
- Expert Information:自動分析された警告とエラーを確認
- プロトコル統計:Statisticsメニューで様々な分析が可能
- 保存と共有:pcap/pcapng形式で保存して分析を共有
注意:Wiresharkを利用したパケットキャプチャは、必ず許可されたネットワークでのみ行う必要があります。無断でのパケットキャプチャは違法です。
8. 層別セキュリティのまとめ
| 層 | 主な脅威 | 核心的な対応 |
|---|---|---|
| 物理 (1) | 盗聴、機器損傷 | 物理的アクセス制御、シールドケーブル |
| データリンク (2) | ARPスプーフィング、MACフラッディング | DAI、ポートセキュリティ、802.1X |
| ネットワーク (3) | IPスプーフィング、ICMP攻撃 | Ingressフィルタリング、uRPF、ICMP制限 |
| トランスポート (4) | SYN Flood、ポートスキャン | SYN Cookies、IDS/IPS、ファイアウォール |
| アプリケーション (7) | SQLインジェクション、XSS、フィッシング | WAF、入力検証、HTTPS |
まとめと次回予告
今回はOSI 7層モデルの各層別セキュリティ脅威と対応方法を見てきました。各層にはそれぞれ固有の脆弱性が存在し、効果的なセキュリティのためにはすべての層に対する総合的な防御が必要です。
特にARPスプーフィング、IPスプーフィング、TCP SYN Floodなどの攻撃は、実際の現場で頻繁に発生する脅威であるため、原理を正確に理解し、適切な対策を講じることが重要です。Wiresharkなどのパケット分析ツールを活用すれば、これらの攻撃を検出・分析する能力を身につけることができます。
次回はファイアウォールの種類と構成、IDS/IPSシステム、そしてネットワークアクセス制御(NAC)について解説する予定です。実際のネットワークセキュリティ機器がどのように動作し、どのように構成すべきかという実践的な内容を取り上げます。
実習推奨:仮想環境(VirtualBox、VMware)を構成してWiresharkで直接パケットをキャプチャ・分析してみてください。理論だけでは得られない実践感覚を養うことができます。