atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
ページ検索 メニュー
DynagenでCCIEを目指す
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
DynagenでCCIEを目指す
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
DynagenでCCIEを目指す
ページ検索 メニュー
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • DynagenでCCIEを目指す
  • トップページ
  • 動作検証 ネットワーク系
  • tcp intercept

DynagenでCCIEを目指す

tcp intercept

最終更新:2010年10月31日 13:07

it_certification

- view
管理者のみ編集可
  • 1. 目的
  • 2. 構成
    • 2.1. 設定概要
    • 2.2. 構成図
    • 2.3. netファイル
    • 2.4. 初期設定
    • 2.5. Apache 設定
    • 2.6. syn flood攻撃スクリプトの作成
    • 2.7. iptablesの設定
    • 2.8. サーバ側 ルーティング設定
  • 3. [検証] 基本設定
    • 3.1. 設定の投入
    • 3.2. Syn flood攻撃の実行
    • 3.3. tcp interceptの確認
  • 4. [検証] interceptモードとwatchモード
    • 4.1. 概要
    • 4.2. interceptモード
    • 4.3. watchモード
  • 5. [検証] チューニング
    • 5.1. interceptモード
    • 5.2. watchモード
  • 6. [補足] 検証失敗例
    • 6.1. iptablesの設定漏れ

1. 目的

  • tcp interceptを使用したsyn flood対策について考察します。

2. 構成

2.1. 設定概要

  • 初期設定はIPアドレスのみです。
  • Host OS側でApacheを起動させます。
  • Guest OS側には、sendipがインストールされているものとします。(hpingに乗り換えました)
  • Guest OS側には、hpingがインストールされているものとします。hpingはyumで簡単にインストールする事ができます。
  • Guest OS側に、syn flood攻撃を行うスクリプトを配置します。

2.2. 構成図

2.3. netファイル

model = 3620
[localhost]
	
	[[3620]]
		image = C:\Program Files\Dynamips\images\c3620-j1s3-mz.123-18.bin
		ram = 128
	
	[[ROUTER R1]]
		f0/0 = NIO_gen_eth:\Device\NPF_{8B89D910-5ED3-4A43-9DE9-6A272A3D7592}
		f1/0 = NIO_gen_eth:\Device\NPF_{5933302A-7AAA-475C-A8FE-A6B82B0C0F98}

2.4. 初期設定

  • R1
!
version 12.3
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
ip subnet-zero
!
!
no ip domain lookup
!
ip cef
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
interface FastEthernet0/0
 ip address 192.168.200.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet1/0
 ip address 192.168.201.1 255.255.255.0
 duplex auto
 speed auto
!
ip http server
ip classless
!
!
no cdp run
!
!
!
!
!
!
line con 0
line aux 0
line vty 0 4
!
!
end

2.5. Apache 設定

ホストOSにApacheをインストールし、ポートベースのバーチャルホストを定義します。構築方法はトップページ/手順書 サーバ系/Apache HTTP Server バーチャルホストの設定を参考にして下さい。
この検証例で実際に使用したhttpd.confの要所となる部分を以下に記載します。
Listen 10880
Listen 10881
Listen 10882

NameVirtualHost *:10880
NameVirtualHost *:10881
NameVirtualHost *:10882

<VirtualHost *:10880>
    DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs"
</VirtualHost>

<VirtualHost *:10881>
    DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs10881"
</VirtualHost>

<VirtualHost *:10882>
    DocumentRoot "C:/Program Files/Apache Software Foundation/Apache2.2/htdocs10882"
</VirtualHost> 

2.6. syn flood攻撃スクリプトの作成

以下のようなスクリプトを作成し、Guest OSからHost OSへSyn flood攻撃が行えるようにします。
なお、変数DELAYで定義されたsyn flood攻撃を行う間隔は適宜変更して下さい。マシンスペックによっては、攻撃間隔が短すぎるとパケットキャプチャに失敗してしまいます。
#!/bin/sh
DELAY=0.04
while true :
do
sport=$RANDOM
dport=10880
#sendip -d '' -p ipv4 -p tcp -is 192.168.201.101 -ts $sport -td $dport 192.168.200.100
hping 192.168.200.100 -S -p $dport -s $sport -c 1 > /dev/null 2>&1
echo sport:${sport}
sleep $DELAY
done

2.7. iptablesの設定

syn flood攻撃を成功させるためには、SYN + ACKを無視しなければなりません。iptablesデフォルト設定では、SYN + ACKに対してRSTを返す設定になっている可能性があります。
私の場合は、送信元ポート10880であるものを無視するように設定しました。設定例は以下の通りです。
[root@localhost ~]# cat /etc/sysconfig/iptables
*filter

:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --sport 10880 -j DROP <- syn flood攻撃を成功させるために、SYN + ACKを無視します。
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 10022 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT

2.8. サーバ側 ルーティング設定

  • Host OS
route add 192.168.201.0 mask 255.255.255.0 192.168.200.1
  • Guest OS
route add -net 192.168.200.0/24 gw 192.168.201.1


3. [検証] 基本設定

3.1. 設定の投入

Guest OSからHost OSの方向へのtcp interceptを定義します。設定方法は以下の通りです。
R1(config)#ip access-list extended INTERCEPT
R1(config-ext-nacl)#permit ip 192.168.201.0 0.0.0.255 192.168.200.0 0.0.0.255
R1(config-ext-nacl)#exit
R1(config)#
R1(config)#interface FastEthernet 1/0
R1(config-if)#ip access-group INTERCEPT in
R1(config-if)#exit
R1(config)#
R1(config)#
R1(config)#ip tcp intercept list INTERCEPT
command accepted, interfaces with mls configured might cause inconsistent behavior

R1(config)#

3.2. Syn flood攻撃の実行

syn flood攻撃スクリプトを実行します。
[root@localhost ~]# ./syn_flood.sh
27394
27376
28092

3.3. tcp interceptの確認

ルータR1のコンソール上に、tcp interceptが働いた旨のメッセージが表示された事を確認します。
また、show tcp intercept statisticsコマンドでリセットされたコネクション数を確認します。
R1#
*Mar  1 00:29:32.419: %TCP-6-INTERCEPT: getting aggressive, count (1100/1100) 1 min 1
R1#
R1#
R1#show tcp intercept statistics
Intercepting new connections using access-list INTERCEPT
1100 incomplete, 0 established connections (total 1100) <- 1100のハーフコネクションが存在するという意味です。
1307 connection requests per minute                     <- 1307のコネクションがリセットされたという意味です。
R1#

4. [検証] interceptモードとwatchモード

4.1. 概要

Interceptモードの場合、ルータが着信してくる全てのSYNパケットを横取りして、SYN/ACKを サーバの代わりに送信します。外部のクライアントからAckを受信すると、オリジナルSYNパケットをサーバに送信して、ルータはサーバと3way-handshakeします。
一方、watchモードの場合、SYNパケットをサーバへ転送しますが、established状態になるまで見ています。もしも30秒以内にestablishされない場合は、RSTパケットをサーバに送信しコネクションをリセットします。

4.2. interceptモード

interceptモードの場合のパケットを観察します。デフォルトはinterceptモードなので特に設定は要りませんが、明示的に入力したい場合は以下のコマンドを実行します。
R1(config)#ip tcp intercept mode intercept

Fa0/0, Fa1/0でパケットキャプチャの準備をし、syn flood攻撃スクリプトを実行します。
ルータとGeust OS間のパケットは以下の通りです。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;

ルータとHost OS間のパケットは以下の通りです。syn flood攻撃がHost OSまで届いていない事が確認できます。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;

4.3. watchモード

watchモードの場合のパケットを観察します。以下のコマンドを実行し、watchモードに変更します。
R1(config)#ip tcp intercept mode watch

Fa0/0, Fa1/0でパケットキャプチャの準備をし、syn flood攻撃スクリプトを実行します。
ルータとGeust OS間のパケットは以下の通りです。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;

ルータとHost OS間のパケットは以下の通りです。interceptモードと異なり、ある程度syn flood攻撃がHost OSに届いてしまっている事が読み取れます。また、30秒経ってもコネクションが確立されない通信に対し、ルータがHost OSに対してRSTを送信している様子が読み取れます。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;

5. [検証] チューニング

5.1. interceptモード

interceptモードの場合、以下のような詳細の設定を投入する事もできます。

FIN, RSTを送信した後、コネクションを何秒メモリ内に保存するかを設定できます。
R1(config)#ip tcp intercept finrst-timeout 3
コネクションを何秒メモリ内に保存するかを設定できます。
R1(config)#ip tcp intercept connection-timeout 120
コネクション数の上限を指定できます。上限を超えた場合は、アグレッシブモードになりコネクションを破棄するようになります。
R1(config)#ip tcp intercept max-incomplete high 200
コネクション数の下限を指定します。下限を下回ると、アグレッシブモードからインターセプトモードに戻ります。
R1(config)#ip tcp intercept max-incomplete low 50
1秒あたりのコネクション数の上限を指定できます。上限を超えた場合は、アグレッシブモードになりコネクションを破棄するようになります。
R1(config)#ip tcp intercept one-minute high 200
1秒あたりのコネクション数の下限を指定します。下限を下回ると、アグレッシブモードからインターセプトモードに戻ります。
R1(config)#ip tcp intercept one-minute high 50
アグレッシブモードになった場合のパケット破棄方法を選択できます。選択肢は、oldestかrandomです。デフォルト設定はoldestです。
R1(config)#ip tcp intercept drop-mode random

5.2. watchモード

watchモードの場合、以下のような詳細の設定を投入する事もできます。

以下の設定でコネクションを「見る」時間を設定する事ができます。設定時間が過ぎてもコネクションが確立されない場合は、サーバ側にRSTを送信します。デフォルトは30秒です。
R1(config)#ip tcp intercept watch-timeout 20

6. [補足] 検証失敗例

6.1. iptablesの設定漏れ

syn flood攻撃を成功させるためには、SYN + ACKに対する応答を無視し、攻撃対象サーバのACK待ちを増やす必要があります。iptablesのデフォルト設定(もしくは無効)では、RSTパケットを送信してしまうため、syn flood攻撃になっていません。
iptablesの設定が漏れていた時のGeust OS, ルータ間のパケットキャプチャは以下の通りです。
#ref error :ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (100%)
;
「tcp intercept」をウィキ内検索
LINE
シェア
Tweet
添付ファイル
  • intercept_00.jpg
  • intercept_10.jpg
  • misconfig.jpg
  • topology.jpg
  • watch_00.jpg
  • watch_10.jpg
DynagenでCCIEを目指す
記事メニュー

メインコンテンツ

  • トップページ
  • トップページ/動作検証 ネットワーク系

更新履歴

取得中です。

@Wiki

  • @wiki
  • @wikiご利用ガイド
  • プラグイン紹介
  • まとめサイト作成支援ツール




ここを編集
記事メニュー2
人気記事ランキング
  1. トップページ/手順書 ネットワーク系/VLC media player (Linux版) インストール手順
もっと見る
最近更新されたページ
  • 2988日前

    トップページ
  • 4187日前

    トップページ/手順書 ネットワーク系/Loopbackインターフェースとの接続
  • 4187日前

    トップページ/手順書 ネットワーク系
  • 4187日前

    トップページ/手順書 開発系
  • 4187日前

    トップページ/手順書 サーバ系
  • 4187日前

    トップページ/動作検証 ネットワーク系
  • 4900日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 15
  • 4921日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 14
  • 4934日前

    メニュー
  • 4944日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 13
もっと見る
人気記事ランキング
  1. トップページ/手順書 ネットワーク系/VLC media player (Linux版) インストール手順
もっと見る
最近更新されたページ
  • 2988日前

    トップページ
  • 4187日前

    トップページ/手順書 ネットワーク系/Loopbackインターフェースとの接続
  • 4187日前

    トップページ/手順書 ネットワーク系
  • 4187日前

    トップページ/手順書 開発系
  • 4187日前

    トップページ/手順書 サーバ系
  • 4187日前

    トップページ/動作検証 ネットワーク系
  • 4900日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 15
  • 4921日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 14
  • 4934日前

    メニュー
  • 4944日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 13
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. AviUtl2のWiki
  3. R.E.P.O. 日本語解説Wiki
  4. しかのつのまとめ
  5. シュガードール情報まとめウィキ
  6. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  7. ソードランページ @ 非公式wiki
  8. SYNDUALITY Echo of Ada 攻略 ウィキ
  9. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  10. ドラゴンボール Sparking! ZERO 攻略Wiki
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 発車メロディーwiki
  6. 検索してはいけない言葉 @ ウィキ
  7. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. オレカバトル アプリ版 @ ウィキ
  10. モンスター烈伝オレカバトル2@wiki
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 召喚 - PATAPON(パタポン) wiki
  3. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  4. ステージ - PATAPON(パタポン) wiki
  5. ロスサントス警察 - ストグラ まとめ @ウィキ
  6. LUPIN THE IIIRD THE MOVIE 不死身の血族 - アニヲタWiki(仮)
  7. アイテム - PATAPON(パタポン) wiki
  8. ステージ攻略 - パタポン2 ドンチャカ♪@うぃき
  9. モンスター一覧_第2章 - モンスター烈伝オレカバトル2@wiki
  10. 可愛い逃亡者(トムとジェリー) - アニヲタWiki(仮)
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.