全部博文(403)
分类: 系统运维
2006-08-01 18:26:04
在沒有高級的 cisco 時,該如何做 netflow 流量統計呢?
fprobe 會是你的好選擇...
安裝路徑在 /usr/ports/net-mgmt/fprobe/
不需要用什麼特殊參數...
裝完之後,假設你接 switch mirror port 的網卡是 bge0
則 /usr/local/sbin/fprobe -i bge0 127.0.0.1:9991
可以丟給本機 127.0.0.1 也可以丟到遠端的主機去..
這樣就會產生 netflow 的資料了..
再利用 flow-capture 來接收資料
/usr/local/bin/flow-capture -z 6 -n 143 -e 8928 -V 5 -w /home/netflow 127.0.0.1/127.0.0.1/9991
-z 壓縮比例 0-9
-n 一天產生幾份 netflow 檔案. 143 為每10分鐘一份 預設為 95 份 15min/per
-e 總共保留幾份 8928 是一個月
-V 板本..
-w 儲存資料夾
最後 localip/remoteip/port
接收端/發送端/連接埠
最後我通常會將這二個丟到 crontab 去..讓主機一開機便執行
@reboot (/usr/local/sbin/fprobe -i bge0 127.0.0.1:9991 ; /usr/local/bin/flow-capture -z 6 -n 143 -e 8928 -V 5 -w /home/netflow 127.0.0.1/127.0.0.1/9991) > /dev/null 2>&1
NetFlow 流量統計程式,由 netflow.nctu.edu.tw 取得,並依據 ericlin AT cabin.idv.tw,
所提供的修改,修改成可以使用 FreeBSD port tree 裡的 flow-tools
檔案列表
01.Show-mrtg.pl, 這是給 mrtg 的程式用的。寫的很潦草,有空再改。
02.TANet-10min.pl, 這是每 10 分鐘產生一次報表。
03.TANet-daily.pl, 每日流量報表
04.TANet-netflow.pl, 子程式檔案
(此為簡單版,並用 interface 為判斷依據,若要以 ip 判斷,請自行研究 Alpine-netflow.pl)
05.TANet-mysql.pl, 將流量資料塞進 MySQL
06.intranet, 內部網路清單
07.mrtg.10min.cfg, mrtg 讀 10 分鐘報表的設定檔
08.protocols, flow 檔產生 tcp udp icmp 的數字
09.services, 每日報表所要產生的 port 清單
10.services-10min, 每 10 分鐘所要產生的 port 清單
11.dnscan 是 Darkkiller 長輩提供的查詢網段反解的程式,好用!
不過請先安裝 p5-Net-Netmask
想使用 MySQL 的人:
使用之前請先按照這個網址的修正做修改,因為 port tree 裡的 flow-tools 中 flow-export對 MySQL 有問題
在編譯時請加上 --with-mysql=/usr/local (this is for FreeBSD)
以下是資料表的 table 結構
CREATE TABLE `Table_Name` (
`srcaddr` varchar(15) NOT NULL default '',
`dstaddr` varchar(15) NOT NULL default '',
`prot` smallint(2) NOT NULL default '0',
`srcport` smallint(6) NOT NULL default '0',
`dstport` smallint(6) NOT NULL default '0',
`dFlows` smallint(10) NOT NULL default '0',
`dPkts` smallint(10) NOT NULL default '0',
`dOctets` int(15) NOT NULL default '0'
) TYPE=MyISAM;
使用方式為
flow-export -f3 -mDOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT,PROT
-u "user:password:localhost:3306:database:table"
ft-v05.2004-10-20.001001+0800
如果要把所有欄位通通塞進去...
-mDFLOWS,DPKTS,DOCTETS,SRCADDR,DSTADDR,SRCPORT,DSTPORT,PROT
(不知道為什麼,只有這順序能跑)
若要上線使用的話請見 TANet-mysql.pl
給擁有 Interface 的使用者(使用高級的 router 或是 cisco 的 router):
你可以直接使用 TANet-netflow.pl 這個檔案,並修改當中 sub chkInOutNetwork 裡邊的
$sif 及 $dif 各分別是 Source Interface & Disternation Interface
相關資訊請查閱您自己的 router
給使用 mirror port 來做 流量統計的人:
請先研究 Alpine-netflow.pl 這個檔案,並修改裡面的內容符合您的需求,
這部分可以剔除 interface 判斷的部分,因為 mirror port 倒出來的 netflow 不會有 interface
所以全部都要使用 IP 來判斷進出。
至於 mirror port 的假設請參考 "fprobe + flow-capture 使用方式"
DarkKiller 大大曾經說過幾件作 netflow 一定要注意的事情:
詳情請至 kkcity 的 cszone 裡的 perl 版搜尋,不便直接引用
另外,也可以至 deer.twbbs.org 找,或是使用News Reader 讀取
group.nctu.edu.tw 上的 group.public.darkkiller 會有幫助的。
清大賴博士有寫了一套不正常流量檢測,據說很好用,
網址據他本人說不想流出,所以大家就想辦法找出來吧。
以下是下載網址
:
: