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. トップページ/動作検証 ネットワーク系/http server management
  2. トップページ/動作検証 ネットワーク系/20100530 BGP 基本設定
  3. トップページ/動作検証 ネットワーク系/20100626 Anycast RP
  4. トップページ/手順書 サーバ系/TACACS+ インストール手順
  5. トップページ/手順書 ネットワーク系/VLC media player (Linux版) インストール手順
  6. トップページ/動作検証 ネットワーク系/20100621 BGP タイマーの調節
  7. トップページ/動作検証 ネットワーク系/tcp intercept
  8. トップページ/動作検証 ネットワーク系/trunk接続 基本設定
  9. トップページ/動作検証 ネットワーク系/20100516 PBR(Policy-based routing) 基本設定
  10. トップページ/動作検証 ネットワーク系
もっと見る
最近更新されたページ
  • 3021日前

    トップページ
  • 4220日前

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

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

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

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

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

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

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

    メニュー
  • 4977日前

    トップページ/動作検証 ネットワーク系/INE Workbook Volume II lab 13
もっと見る
人気記事ランキング
  1. トップページ/動作検証 ネットワーク系/http server management
  2. トップページ/動作検証 ネットワーク系/20100530 BGP 基本設定
  3. トップページ/動作検証 ネットワーク系/20100626 Anycast RP
  4. トップページ/手順書 サーバ系/TACACS+ インストール手順
  5. トップページ/手順書 ネットワーク系/VLC media player (Linux版) インストール手順
  6. トップページ/動作検証 ネットワーク系/20100621 BGP タイマーの調節
  7. トップページ/動作検証 ネットワーク系/tcp intercept
  8. トップページ/動作検証 ネットワーク系/trunk接続 基本設定
  9. トップページ/動作検証 ネットワーク系/20100516 PBR(Policy-based routing) 基本設定
  10. トップページ/動作検証 ネットワーク系
もっと見る
最近更新されたページ
  • 3021日前

    トップページ
  • 4220日前

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

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

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

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

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

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

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

    メニュー
  • 4977日前

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

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

  1. まどドラ攻略wiki
  2. MadTown GTA (Beta) まとめウィキ
  3. R.E.P.O. 日本語解説Wiki
  4. シュガードール情報まとめウィキ
  5. Dark War Survival攻略
  6. 軍事・武器解説wiki
  7. ソードランページ @ 非公式wiki
  8. リオンGTARP
  9. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  10. AviUtl2のWiki
もっと見る
人気Wikiランキング

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

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. ゲームカタログ@Wiki ~名作からクソゲーまで~
  4. 初音ミク Wiki
  5. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  6. 検索してはいけない言葉 @ ウィキ
  7. モンスター烈伝オレカバトル2@wiki
  8. Abiotic Factor 日本語攻略Wiki
  9. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  10. Fate/Grand Order @wiki 【FGO】
もっと見る
全体ページランキング

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

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  3. FOG - ストグラ まとめ @ウィキ
  4. 上田 さん - ストグラ まとめ @ウィキ
  5. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  6. 水嶋 じぇい - ストグラ まとめ @ウィキ
  7. マカイーノ アッコパス - ストグラ まとめ @ウィキ
  8. 成瀬 力二 - ストグラ まとめ @ウィキ
  9. 機体一覧 - 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  10. 成瀬 夕コ - ストグラ まとめ @ウィキ
もっと見る

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

2019 AtWiki, Inc.