作者 主題: 請問 linux 如何做到 port mirror (已解決)  (閱讀 12905 次)

0 會員 與 1 訪客 正在閱讀本文。

ppc52776

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
大家好,
我想要在switch環境監聽區網下的封包,架構圖如下:

monitor為監聽主機,PC1~3為區網內其他使用者
因為彼此間是透過switch連接,因此monitor無法看到其他使用者的封包
請問有辦法在Linux NAT那台上面設定封包mirror一份到monitor那台上面嗎?

謝謝
« 上次編輯: 2008-06-09 13:12 由 ppc52776 »

kenduest

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3673
    • 檢視個人資料
    • http://kenduest.sayya.org
回覆: 請問 linux 如何做到 port mirror
« 回覆 #1 於: 2008-06-08 15:33 »

請您由 switch 那設備設定 port mirror 即可。

--
I am kenduest - 小州

my website: http://kenduest.sayya.org/

ppc52776

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
回覆: 請問 linux 如何做到 port mirror
« 回覆 #2 於: 2008-06-08 16:08 »

請您由 switch 那設備設定 port mirror 即可。

--
謝謝回答

因為那台switch沒有設定功能,所以才會想從linux nat那台下手

之前看到有人建議再買一台hub來連接switch和monitor以及nat

但這樣會不會影響網路效能?

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
回覆: 請問 linux 如何做到 port mirror
« 回覆 #3 於: 2008-06-08 21:31 »
我有聽朋友說可以用arp詐騙的方式,
將原本要送到Nat的封包騙過來,
之後再將封包送回Nat.
造成
PCx --> Monitor --> Nat
用這樣的方式來抓取使用者的封包.

實際情形得請站上的高手說明一下囉~~~
(我朋友公司同事就這樣搞....)

anderson1127

  • 訪客
回覆: 請問 linux 如何做到 port mirror
« 回覆 #4 於: 2008-06-09 07:39 »
因為那台switch沒有設定功能,所以才會想從linux nat那台下手
之前看到有人建議再買一台hub來連接switch和monitor以及nat
但這樣會不會影響網路效能?

或多或少一定會影響效能,只是除非你上Internet的頻寬很大(不是目前的FTTB/ADSL能夠相提並論的)
或者你的HUB是10M的速率那也許就有機會看出效能差異!!

買純Layer 1 HUB恐怕不容易了 , 現在幾乎都是switch的天下了!!

PS: 我個人就有一台100M half duplex HUB的收藏 ,去Y拍找找看看有沒有機會買到!!

anderson1127

  • 訪客
回覆: 請問 linux 如何做到 port mirror
« 回覆 #5 於: 2008-06-09 07:49 »
我有聽朋友說可以用arp詐騙的方式,
將原本要送到Nat的封包騙過來,
之後再將封包送回Nat.
造成
PCx --> Monitor --> Nat
用這樣的方式來抓取使用者的封包.

實際情形得請站上的高手說明一下囉~~~
(我朋友公司同事就這樣搞....)

嗯.... 這個困難度很高,況且就目前的switch的環境來說,要騙恐怕不是那麼順利
因為我以前就遇過類似的中毒PC ,會發出arp spoof的frame ,偏偏那個arp spoof
要騙的正好是Gateway IP的MAC address , 結果辦公室裡不能上網的就只有
大約一半而已 , 去查看它們取得的gateway IP MAC剛好就是fake MAC address
其餘的一半可是不受影響的!! 不論釋放IP之後再取得都不受影響....

要真正做到這點,倒不用那麼麻煩啦...

只要你架一台Gateway 並使用gateway的IP 就成了,把真正的Default gateway IP
改成其它的IP,並且只讓這台代理的Gateway 指向其Default Gateway IP就行了!!
其餘的PC host不允許直接指向真正的Default Gateway IP即可!!

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
回覆: 請問 linux 如何做到 port mirror
« 回覆 #6 於: 2008-06-09 10:24 »
嗯.... 這個困難度很高,況且就目前的switch的環境來說,要騙恐怕不是那麼順利
因為我以前就遇過類似的中毒PC ,會發出arp spoof的frame ,偏偏那個arp spoof
要騙的正好是Gateway IP的MAC address , 結果辦公室裡不能上網的就只有
大約一半而已 , 去查看它們取得的gateway IP MAC剛好就是fake MAC address
其餘的一半可是不受影響的!! 不論釋放IP之後再取得都不受影響....

要真正做到這點,倒不用那麼麻煩啦...

只要你架一台Gateway 並使用gateway的IP 就成了,把真正的Default gateway IP
改成其它的IP,並且只讓這台代理的Gateway 指向其Default Gateway IP就行了!!
其餘的PC host不允許直接指向真正的Default Gateway IP即可!!

嗯嗯~~~我也有跟我朋友說....幹嘛那麼麻煩~~~
想要知道就只接從Gateway下手不就好....
他說....「那同事不是MIS,我才是.....」
一整個無言......

插花問個問題,像這種用arp詐騙的方式...
是不是只要用可以鎖IP及port的Switch就可以解決掉這個問題??

damon

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 4225
    • 檢視個人資料
    • http://blog.damon.tw/
回覆: 請問 linux 如何做到 port mirror
« 回覆 #7 於: 2008-06-09 10:45 »
換一台有port mirror功能的switch是不是更簡單?

anderson1127

  • 訪客
回覆: 請問 linux 如何做到 port mirror
« 回覆 #8 於: 2008-06-09 10:52 »
插花問個問題,像這種用arp詐騙的方式...
是不是只要用可以鎖IP及port的Switch就可以解決掉這個問題??

網管型的switch只要具備手動設定MAC & Switch port對應的功能應該都可以簡單把這問題給解決
也就是說, switch ethernet port可以設定進去一些MAC address , 只允許這些MAC address的
frame進入switch的ethernet port , 其餘的MAC address是不允許的!!

這樣就可以簡單解決這問題,缺點是......

PC中了這種ARP spoof病毒在發作時,可能沒有人知道了!! :P

anderson1127

  • 訪客
回覆: 請問 linux 如何做到 port mirror
« 回覆 #9 於: 2008-06-09 10:56 »
換一台有port mirror功能的switch是不是更簡單?

再沒經費的人,別藉口說買不起中古的3Com/Cisco/Foundry/Extreme switch .....

連我自己都買下了一台還不錯的Cisco Catalyst 2948G switch ....都還在我個人可以
負擔的能力之內!! 才幾千元而已....功能又很好,為什麼不買呢?

Y拍也都還有人在賣 !!

PS: 如果自己不願意學習操作這類的網路設備者除外....

ppc52776

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
回覆: 請問 linux 如何做到 port mirror
« 回覆 #10 於: 2008-06-09 13:11 »
謝謝大家熱烈的討論
本著相信沒有linux做不到的事的信念
google了兩天,終於找到解決方法
在此跟各位分享 :)
就是使用iptables的patch-o-matic extra repository內的ROUTE模組
以下以Gentoo為例說明如何安裝

1. 從ftp下載最新的patch-0-matic snapshot
ftp://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/

2. 解壓縮 tar -xjvf patch-o-matic-ng-20080521.tar.bz2

3. 必須先確保你現在安裝的iptables有啟用extensions的USE參數 (等等ebuild會來參考)

4. 執行 ebuild `equery w iptables` unpack  (會自動下載並解壓縮iptables)

5. 到剛剛解壓縮的patch-o-matic-ng資料夾

6. 執行 ./runme –download

7. 然後她會一個一個問你是否要安裝每一個模組
如果只需要ROUTE,可以改下指令 ./runme –download ROUTE
接下來他會問你kernel和iptables所在路徑
代碼: [選擇]
# ./runme -download ROUTE
Successfully downloaded external patch geoip
Successfully downloaded external patch condition
Successfully downloaded external patch IPMARK
Successfully downloaded external patch ROUTE
Successfully downloaded external patch connlimit
Successfully downloaded external patch ipp2p
Successfully downloaded external patch time
./patchlets/ipv4options exists and is not external
./patchlets/TARPIT exists and is not external
Successfully downloaded external patch ACCOUNT
Successfully downloaded external patch pknock
Hey! KERNEL_DIR is not set.
Where is your kernel source directory? [/usr/src/linux] [b](Gentoo預設路徑就在此)[/b]
Hey! IPTABLES_DIR is not set.
Where is your iptables source code directory? [/usr/src/iptables] /var/tmp/portage/net-firewall/iptables-1.4.0-r1/work/iptables-1.4.0/ [b](這是剛剛上面unpack後的地方,也就是iptables的原始碼)[/b]
Loading patchlet definitions......................... done
Welcome to Patch-o-matic ($Revision$)!

8. 現在kernel和iptables sources已經被patch了,接下來就是到kernel中把需要的模組編譯進來

9. # cd /usr/src/linux

10. # make menuconfig

11 . 剛剛的ROUTE在 Networking ->  Networking supporttem support -> Networking options ->
Network packet filtering framework (Netfilter) -> IP: Netfilter Configuration -> 最下面多出 ROUTE target support,把他M起來吧

12. 接下來重新編譯並安裝新的模組

13. # make modules modules_install

14. 接下來編譯並安裝iptables

15. # ebuild `equery w iptables` install
 # ebuild `equery w iptables` qmerge

安裝完成

接下來使用說明:
擷取網站說明
引用
ROUTE target options:
  --oif   ifname    Send the packet out using `ifname' network interface.
  --iif   ifname    Change the packet's incoming interface to `ifname'.
  --gw    ip        Route the packet via this gateway.
  --continue        Route the packet and continue traversing the rules.
  --tee             Route a copy of the packet, but continue traversing
                    the rules with the original packet, undisturbed.
所以就以上只要下兩個指令就可以了
代碼: [選擇]
  iptables -A PREROUTING -t mangle  -j ROUTE --gw 192.168.1.50 --tee
  iptables -A POSTROUTING -t mangle  -j ROUTE --gw 192.168.1.50 --tee

參考文件:
1. netfilter: http://www.netfilter.org/projects/patch-o-matic/pom-extra.html
2. iptables patch-o-matic-ng安裝: http://gentoo-blog.de/?p=3

謝謝 8)