版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 防火墻與入侵檢測</b></p><p><b> 課程設(shè)計報告</b></p><p> 課程名稱: 防火墻與入侵檢測 </p><p> 設(shè)計題目: 混合型簡易防火墻 </p><p>
2、; 院 系: 計算機科學(xué)與技術(shù)學(xué)院 </p><p> 班 級: </p><p> 設(shè) 計 者: </p><p> 學(xué) 號: </p><p><b> 二零一二年
3、十一月</b></p><p><b> 課程設(shè)計任務(wù)書</b></p><p><b> 目錄</b></p><p> 一、軟硬件運行環(huán)境2</p><p> 二、項目研究背景與意義2</p><p><b> 1.背景意義:2<
4、;/b></p><p><b> 2.需求分析:2</b></p><p> 三、關(guān)鍵技術(shù)及解決方案3</p><p><b> 1.程序框架:3</b></p><p> 2.函數(shù)入口及調(diào)用關(guān)系:3</p><p> 3.程序控制基本流程圖:4&
5、lt;/p><p> 4.程序主要代碼:5</p><p><b> 四、測試14</b></p><p> 1.在程序調(diào)試階段遇到的問題:14</p><p> 2.問題及難點所在:14</p><p> 3.運行結(jié)果:14</p><p> (1)TC
6、P 80端口的測試結(jié)果:14</p><p> (2)攔截指定Udp截圖15</p><p> ?。?)攔截指定IP :172.31.159.15615</p><p> ?。?)攔截指定類型的ICMP 報文16</p><p> 五、總結(jié)(收獲與體會)16</p><p><b> 一、軟硬
7、件運行環(huán)境</b></p><p><b> 硬件推薦配置</b></p><p><b> 個人微型計算機</b></p><p><b> 軟件運行環(huán)境</b></p><p> Windows xp系統(tǒng)</p><p> 二、
8、項目研究背景與意義</p><p><b> 1.背景意義:</b></p><p> 個人PC機在上網(wǎng)時很可能無意間訪問了惡意的網(wǎng)絡(luò)頁面而導(dǎo)致計算機被植入惡意插件或木馬,嚴重影響上網(wǎng)瀏覽的質(zhì)量,使個人計算機安全遭受嚴重危險。</p><p> 設(shè)計出適合個人的小型防火墻可以對個人計算機設(shè)置各種基本的網(wǎng)絡(luò)訪問規(guī)則,過濾不受信任的網(wǎng)絡(luò)數(shù)據(jù),
9、阻止對不受信任的網(wǎng)站的訪問,從而阻止惡意插件或木馬。有效防止網(wǎng)絡(luò)攻擊,保護個人計算機上網(wǎng)安全。</p><p><b> 2.需求分析: </b></p><p> a.能夠?qū)P層進行按照數(shù)據(jù)包的源和目的地址進行篩選,過濾不安全的網(wǎng)絡(luò)交互。</p><p> b.能夠?qū)崿F(xiàn)對TCP連接的控制,通過控制源和目的端口對TCP連接進行檢測,可以
10、對按照規(guī)則設(shè)置的端口進行數(shù)據(jù)包攔截,阻止TCP的正常連接。</p><p> c.能夠?qū)崿F(xiàn)對機器發(fā)送ICMP包的控制,通過設(shè)定允許或阻止特定的ICMP數(shù)據(jù)包類型,對ICMP包進行過濾。</p><p> d.能夠依照MAC地址進行指定攔截。</p><p> e.能夠控制UDP連接,對指定端口進行封鎖。阻止UDP的正常連接。</p><p&
11、gt; 三、關(guān)鍵技術(shù)及解決方案 </p><p><b> 1.程序框架:</b></p><p> 2.函數(shù)入口及調(diào)用關(guān)系</p><p> 3.程序控制基本流程圖:</p><p><b> 4.程序主要代碼</b></p><p><b> ?。?)
12、主要數(shù)據(jù)結(jié)構(gòu)</b></p><p> typedef struct ip_header{//IP頭</p><p> BYTE ver_ihl;//版本</p><p> BYTE tos;//TOS服務(wù)類型</p><p> WORD tlen;//包總長</p><p> WORD iden
13、tification;//標識</p><p> WORD flags_fo;//標志位</p><p> BYTE ttl;//TTL</p><p> BYTE proto;//Protocol</p><p> WORD checksum;//校驗和</p><p> IPAddr saddr;//源地
14、址</p><p> IPAddr daddr;//目的地址</p><p> WORD op_pad;//選項</p><p> }IPHEADER,*PIPHEADER;</p><p> typedef struct tcp_header {//Tcp頭 </p><p> WORD sport;
15、//16位源端口 </p><p> WORD dport; //16位目的端口 </p><p> }TCPHEADER,*PTCPHEADER; </p><p> void CMyDlg::OnBnClickedStart()//開始執(zhí)行所定義的規(guī)則</p><p><b> {</b></p&g
16、t;<p><b> DWORD ID;</b></p><p> m_bRuning=true;</p><p> m_hThread=::CreateThread (NULL,0,LogThread,this,0,&ID);//創(chuàng)建進程開始監(jiān)聽</p><p> GetDlgItem(IDC_STOP)->
17、;EnableWindow (TRUE);</p><p> GetDlgItem(IDC_START)->EnableWindow (FALSE);</p><p><b> }</b></p><p><b> ?。?)字段解析</b></p><p> bool LogDispla
18、y(</p><p> PLOG_PACKET_NODE pPacketHeader,</p><p> PVOID pParameter </p><p><b> )</b></p><p><b> {</b></p><p> CMyDlg *pD
19、lg=(CMyDlg *)pParameter;</p><p> ITEM item;</p><p> switch(pPacketHeader->bPass )//操作類型字段</p><p><b> {</b></p><p> case PACKET_PASS:</p><p
20、> item.action ="通過";</p><p><b> break;</b></p><p> case PACKET_BLOCK:</p><p> item.action ="攔截";</p><p><b> break;</b&g
21、t;</p><p><b> }</b></p><p><b> //IP段賦值</b></p><p> PIP_HEADER pIp=(PIP_HEADER)pPacketHeader->PacketContext;</p><p> item.srcIP .Format (&
22、quot;%d.%d.%d.%d",</p><p> pIp->SourceIp [0],</p><p> pIp->SourceIp [1],</p><p> pIp->SourceIp [2],</p><p> pIp->SourceIp [3]); </p><p&
23、gt; item.desIP .Format ("%d.%d.%d.%d",</p><p> pIp->DestinationIp [0],</p><p> pIp->DestinationIp [1],</p><p> pIp->DestinationIp [2],</p><p> p
24、Ip->DestinationIp [3]);</p><p> item.size.Format ("%d",htons(pIp->DatagramLength));</p><p> switch(pIp->Protocol )//協(xié)議類型段</p><p><b> {</b></p>
25、;<p> case ICMP:</p><p> item.type ="ICMP";</p><p><b> break;</b></p><p><b> case TCP:</b></p><p> item.type ="TCP&qu
26、ot;;</p><p> if(pPacketHeader->PacketSize >=(TCP_HEADER_LENGTH+pIp->HeaderLength*4 ))</p><p><b> {</b></p><p> PTCPHEADER pTcp=PTCPHEADER((pPacketHeader->
27、PacketContext)+pIp->HeaderLength*4);</p><p> item.desPort.Format ("%d",htons(pTcp->dport ));//端口賦值</p><p> item.srcPort.Format ("%d",htons(pTcp->sport ));</p>
28、;<p><b> }</b></p><p><b> break;</b></p><p><b> case UDP:</b></p><p> item.type ="UDP";</p><p> if(pPacketHead
29、er->PacketSize >=(UDP_HEADER_LENGTH+pIp->HeaderLength*4 ))</p><p><b> {</b></p><p> PTCPHEADER pTcp=PTCPHEADER((pPacketHeader->PacketContext)+pIp->HeaderLength*4);&l
30、t;/p><p> item.desPort.Format ("%d",htons(pTcp->dport ));//端口賦值</p><p> item.srcPort.Format ("%d",htons(pTcp->sport ));</p><p><b> }</b></p&
31、gt;<p><b> break;</b></p><p><b> case EGP:</b></p><p> item.type ="EGP";//外部網(wǎng)關(guān)協(xié)議</p><p><b> break;</b></p><p>
32、 case IGMP:</p><p> item.type ="IGMP";</p><p><b> break;</b></p><p><b> }</b></p><p> pDlg->Add2MyListCtrl (item);</p>&
33、lt;p> return true;</p><p><b> }</b></p><p><b> (3)規(guī)則添加</b></p><p> DWORD WINAPI LogThread(LPVOID pPara)</p><p><b> {</b><
34、/p><p> gSocket.GetLog(LogDisplay,(CMyDlg *)pPara);//將包頭日志一個一個地通過回調(diào)函數(shù)返回來,供程序進一步使用。</p><p><b> return 0;</b></p><p><b> }</b></p><p> void CMyDl
35、g::OnBnClickedButton3()</p><p><b> {</b></p><p> UpdateData();</p><p> CString strTemp;</p><p> switch(m_curRule)</p><p><b> {</b
36、></p><p><b> case 1:</b></p><p><b> {</b></p><p> _TCP_RULE *TcpRule=new _TCP_RULE;</p><p> strTemp=m_SrcText;</p><p> /
37、/strTemp.</p><p> TcpRule->SrcPort =atoi(strTemp.GetBuffer());</p><p> strTemp=m_DestText;</p><p> TcpRule->DesPort=atoi(strTemp.GetBuffer());</p><p> TcpRul
38、e->Type =RECVRULE;//</p><p> //TcpRule->Next=NULL;</p><p> gSocket.SetRule (*TcpRule,TRUE);</p><p> strTemp.Format("TCP 源端口:%d 目的端口%d RECVRULE",TcpRule->SrcPor
39、t,TcpRule->DesPort);</p><p> int i=m_pListBox[m_curRule-1]->AddString(strTemp);</p><p> m_pListBox[m_curRule-1]->SetItemDataPtr(i,(void *)TcpRule);//該ip規(guī)則保存為列表項的數(shù)據(jù)</p><p>
40、;<b> }</b></p><p> MessageBox("TCP規(guī)則添加成功!");</p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> {</b>
41、;</p><p> _UDP_RULE *UdpRule=new _UDP_RULE;</p><p> strTemp=m_SrcText;</p><p> //strTemp.</p><p> UdpRule->SrcPort =atoi(strTemp.GetBuffer());</p><p&
42、gt; strTemp=m_DestText;</p><p> UdpRule->DesPort=atoi(strTemp.GetBuffer());</p><p> UdpRule->Type =RECVRULE;//</p><p> gSocket.SetRule (*UdpRule,TRUE);</p><p>
43、; strTemp.Format("UDP 源端口:%d 目的端口%d RECVRULE",UdpRule->SrcPort,UdpRule->DesPort);</p><p> int i=m_pListBox[m_curRule-1]->AddString(strTemp);</p><p> m_pListBox[m_curRule-1]
44、->SetItemDataPtr(i,(void *)UdpRule);//該ip規(guī)則保存為列表項的數(shù)據(jù)</p><p><b> }</b></p><p> MessageBox("UDP規(guī)則添加成功!");</p><p><b> break;</b></p><
45、p><b> case 3:</b></p><p><b> {</b></p><p> _IP_RULE *IpRule=new _IP_RULE;//獲取源IP,目的IP,設(shè)定過濾規(guī)則</p><p> m_ipDestCtrl.GetAddress(IpRule->DesIp [0],IpR
46、ule->DesIp[1],IpRule->DesIp[2],IpRule->DesIp[3]);</p><p> m_ipSrcCtrl.GetAddress(IpRule->SrcIp [0],IpRule->SrcIp[1],IpRule->SrcIp[2],IpRule->SrcIp[3]);</p><p> IpRule->
47、ProType = 0;</p><p> IpRule->Type = SENDRULE;//對于未做局域網(wǎng)代理的注意區(qū)別,有些規(guī)則只有在代理機上有意義</p><p> IpRule->Next = NULL;</p><p> gSocket.SetRule (*IpRule,TRUE);</p><p> strT
48、emp.Format("IP 源端:%d.%d.%d.%d目的:%d.%d.%d.%d SENDRULE",IpRule->SrcIp[0],IpRule->SrcIp[1],IpRule->SrcIp[2],IpRule->SrcIp[3],IpRule->DesIp[0],</p><p> IpRule->DesIp[1],IpRul
49、e->DesIp[2],IpRule->DesIp[3]);</p><p> int i=m_pListBox[m_curRule-1]->AddString(strTemp);</p><p> m_pListBox[m_curRule-1]->SetItemDataPtr(i,(void *)IpRule);//該ip規(guī)則保存為列表項的數(shù)據(jù)</p&g
50、t;<p><b> }</b></p><p> MessageBox("IP規(guī)則添加成功!");</p><p><b> break;</b></p><p><b> case 4:</b></p><p><b>
51、 {</b></p><p> /*常見的ICMP報文:</p><p> 類型代碼 類型描述 </p><p> 0 響應(yīng)應(yīng)答(ECHO-REPLY) </p><p><b> 3 不可到達 </b></p><p><b> 4 源抑制 </b>
52、</p><p><b> 5 重定向 </b></p><p> 8 響應(yīng)請求(ECHO-REQUEST) </p><p><b> 11 超時 </b></p><p><b> 12 參數(shù)失靈 </b></p><p><b>
53、 13 時間戳請求 </b></p><p><b> 14 時間戳應(yīng)答 </b></p><p> 15 信息請求(*已作廢) </p><p> 16 信息應(yīng)答(*已作廢) </p><p> 17 地址掩碼請求 </p><p> 18 地址掩碼應(yīng)答*/</p&
54、gt;<p> _ICMP_RULE *pIcmpRule=new _ICMP_RULE;</p><p> strTemp=m_SrcText;</p><p> pIcmpRule->IcmpType=atoi(strTemp.GetBuffer());</p><p> pIcmpRule->Type=SENDRULE;//&
55、lt;/p><p> gSocket.SetRule (*pIcmpRule,TRUE);</p><p> strTemp.Format("ICMP 過濾包類型%d SENDRULE",pIcmpRule->IcmpType);</p><p> int i=m_pListBox[m_curRule-1]->AddString(s
56、trTemp);</p><p> m_pListBox[m_curRule-1]->SetItemDataPtr(i,(void *)pIcmpRule);//該ip規(guī)則保存為列表項的數(shù)據(jù)</p><p><b> }</b></p><p> MessageBox("ICMP規(guī)則添加成功!");</p&
57、gt;<p><b> break;</b></p><p><b> case 5:</b></p><p><b> {</b></p><p> _MAC_RULE *pMacRule=new _MAC_RULE;//獲取源MAC,目的MAC,設(shè)定過濾規(guī)則</p&g
58、t;<p> strTemp=m_SrcText;</p><p> //strTemp.TrimLeft();</p><p> strTemp.Trim();</p><p> //字符與十六進制數(shù)字轉(zhuǎn)換</p><p> BYTE tmpValue1,tmpValue2;</p><p>
59、 bool isDouble=FALSE;</p><p> int index=0;//Mac地址索引</p><p> for(int j=0;j<strTemp.GetLength();j++)</p><p><b> {</b></p><p> char tmp=strTemp.GetAt(j
60、);</p><p> if(tmp!='-')</p><p><b> {</b></p><p> if(!isDouble)</p><p><b> {</b></p><p> if(tmp>='A')</p&
61、gt;<p> tmpValue1=(BYTE)(tmp-'A'+10);</p><p><b> else</b></p><p> tmpValue1=(BYTE)(tmp-'0');</p><p> tmpValue1= tmpValue1<< 4;//左移移四位至高四
62、位</p><p> tmpValue1&=240;//11110000</p><p> isDouble=TRUE;//下次是雙位</p><p><b> }</b></p><p> else//這是一個雙位</p><p><b> {</b>&l
63、t;/p><p> if(tmp>='A')</p><p> tmpValue2=(BYTE)(tmp-'A'+10);</p><p><b> else</b></p><p> tmpValue2=(BYTE)(tmp-'0');</p>&
64、lt;p> tmpValue2&=15;//取其后四位</p><p> pMacRule->SrcMac[index++]=tmpValue1+tmpValue2;//組合成十六進制mac地址</p><p> isDouble=FALSE;//下次是單位</p><p><b> }</b></p>
65、<p><b> }</b></p><p><b> }</b></p><p> strTemp=m_DestText;</p><p> strTemp.Trim();</p><p><b> index=0;</b></p>
66、<p> isDouble=FALSE;</p><p> for(int j=0;j<strTemp.GetLength();j++)</p><p><b> {</b></p><p> char tmp=strTemp.GetAt(j);</p><p> if(tmp!='
67、-')</p><p><b> {</b></p><p> if(!isDouble)</p><p><b> {</b></p><p> if(tmp>='A')</p><p> tmpValue1=(BYTE)(tmp-&
68、#39;A'+10);</p><p><b> else</b></p><p> tmpValue1=(BYTE)(tmp-'0');</p><p> tmpValue1=tmpValue1<<4;//左移移四位至高四位</p><p> tmpValue1&=2
69、40;//11110000</p><p> isDouble=TRUE;//下次是雙位</p><p><b> }</b></p><p> else//這是一個雙位</p><p><b> {</b></p><p> if(tmp>='A
70、39;)</p><p> tmpValue2=(BYTE)(tmp-'A'+10);</p><p><b> else</b></p><p> tmpValue2=(BYTE)(tmp-'0');</p><p> tmpValue2&=15;//取其后四位</
71、p><p> pMacRule->DesMac[index++]=tmpValue1+tmpValue2;//組合成十六進制mac地址</p><p> isDouble=FALSE;//下次是單位</p><p><b> }</b></p><p><b> }</b><
72、;/p><p><b> }</b></p><p> pMacRule->Type = SENDRULE;//對于未做局域網(wǎng)代理的注意區(qū)別,有些規(guī)則只有在代理機上有意義</p><p> pMacRule->Next = NULL;</p><p> gSocket.SetRule (*pMacRule
73、,TRUE);</p><p> strTemp.Format("MAC 源端:%s目的:%s SENDRULE",m_SrcText,m_DestText);</p><p> int i=m_pListBox[m_curRule-1]->AddString(strTemp);</p><p> //m_ruleList.AddS
74、tring(strTemp);</p><p> m_pListBox[m_curRule-1]->SetItemDataPtr(i,(void *)pMacRule);//該mac規(guī)則保存為列表項的數(shù)據(jù)</p><p><b> }</b></p><p><b> break;</b></p>
75、<p><b> }</b></p><p> m_ruleList.AddString(strTemp);</p><p><b> }</b></p><p><b> 四、測試</b></p><p> 1.在程序調(diào)試階段遇到的問題:</p&g
76、t;<p> 程序從檢測到的數(shù)據(jù)包中提取的信息不能正確轉(zhuǎn)換數(shù)據(jù)類型,提取出的信息不能和已經(jīng)設(shè)定的規(guī)則串比較,導(dǎo)致程序不能對IP地址進行有效過濾。</p><p> 2.問題及難點所在:</p><p> 正確提取出檢測到的包頭的信息,并且轉(zhuǎn)換為不同的數(shù)據(jù)類型與設(shè)定的規(guī)則中的IP地址信息或端口號信息相匹配。當匹配成功后執(zhí)行相應(yīng)的攔截操作。</p><p
77、><b> 3.運行結(jié)果:</b></p><p> ?。?)TCP 80端口的測試結(jié)果:</p><p> ?。?)攔截指定Udp截圖</p><p> ?。?)攔截指定IP :172.31.159.156 </p><p> (3)攔截指定類型的ICMP 報文</p><p>
78、五、總結(jié)(收獲與體會)</p><p> 通過這次課程設(shè)計自己實際操作,深入了解了網(wǎng)絡(luò)數(shù)據(jù)的數(shù)據(jù)類型,對網(wǎng)絡(luò)數(shù)據(jù)包的構(gòu)造有了清晰的認識,掌握了如何從網(wǎng)絡(luò)數(shù)據(jù)包中提取自己感興趣的信息,并且根據(jù)所提取到的信息按照相應(yīng)規(guī)則對數(shù)據(jù)包實現(xiàn)過濾。在編程過程中也知道了將自己的程序調(diào)試和網(wǎng)絡(luò)數(shù)據(jù)包原始內(nèi)容對照,如何對網(wǎng)絡(luò)數(shù)據(jù)類型進行數(shù)據(jù)類型轉(zhuǎn)換,然后進行匹配等操作,增強了動手能力。對網(wǎng)絡(luò)數(shù)據(jù)的交互過程有了更多的了解。</
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防火墻課程設(shè)計
- 混合型防火墻的設(shè)計與實現(xiàn).pdf
- 組網(wǎng)課程設(shè)計--防火墻系統(tǒng)
- 防火墻及入侵檢測技術(shù)研究
- 防火墻及入侵檢測技術(shù)研究
- windows防火墻設(shè)計
- 防火墻論文
- dos命令 關(guān)閉windows系統(tǒng)防火墻 重置防火墻
- 防火墻等級
- 防火墻1
- 防火墻方案
- 防火墻與入侵檢測聯(lián)動算法研究.pdf
- 防火墻及入侵檢測技術(shù)研究2
- 防火墻、入侵偵測整合系統(tǒng)
- 防火墻及入侵檢測技術(shù)研究2
- 狀態(tài)檢測防火墻研究與設(shè)計.pdf
- 支持隧道代理的主動防御型防火墻——防火墻狀態(tài)檢測技術(shù)研究.pdf
- 防火墻技術(shù)論文
- 防火墻技術(shù)介紹
- 構(gòu)筑新聞“防火墻”
評論
0/150
提交評論