版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、防火墻II——利用netfilter構(gòu)建用戶級防火墻,2012-12,課程內(nèi)容,Netfilter概述Netfilter工作機制利用netfilter構(gòu)建用戶級防火墻原理Libipq工作流程與相關(guān)函數(shù)實驗題目,Netfilter概述,Netfilter 更準確地講是Linux 內(nèi)核中,一個包過濾框架,默認地,它在這個框架上實現(xiàn)了包過濾、狀態(tài)檢測、網(wǎng)絡(luò)地址轉(zhuǎn)換和包標記等多種功能,因為它設(shè)計的開放性,任何有內(nèi)核開發(fā)經(jīng)驗的開發(fā)人員,也
2、可以很容易地利用它提供接口,在內(nèi)核的數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層,實現(xiàn)自己的功能模塊。,Netfilter工作機制,Netfilter的五種操作,NF_DROP 丟棄該報文,釋放所有與該報文相關(guān)的資源;NF_ACCEPT 接受該報文,并繼續(xù)處理;NF_STOLEN 該報文已經(jīng)被HOOK函數(shù)接管,協(xié)議棧無須繼續(xù)處理;NF_QUEUE 將該報文傳遞到用戶態(tài)去做進一步的處理;NF_REPEAT 再次調(diào)用本HOOK函數(shù)。,利用netfilter構(gòu)
3、建防火墻,在內(nèi)核中注冊自己的鉤子函數(shù);利用IP_QUEUE實現(xiàn)內(nèi)核與用戶層之間的數(shù)據(jù)包交換,實現(xiàn)用戶態(tài)防火墻,利用netfilter構(gòu)建用戶態(tài)防火墻機制,當HOOK處理函數(shù)返回NF_QUEUE值時,內(nèi)核協(xié)議棧將通過Linux NetLink通信機制把當前報文傳遞到用戶態(tài),由用戶態(tài)的防火墻程序進行處理。這樣,只要能夠在相應(yīng)的HOOK點上返回NF_QUEUE值,就可以安心地在用戶態(tài)使用自己的程序來過濾報文了,這個功能可以由iptables
4、實現(xiàn)。,Libipq簡介,Libipq是NetFilter框架的重要組成部分。任何時候在任何NetFilter規(guī)則鏈中,數(shù)據(jù)報都可以被排隊轉(zhuǎn)發(fā)到用戶空間去。用戶進程能對數(shù)據(jù)報進行任何處理。處理結(jié)束以后,用戶進程可以將該數(shù)據(jù)報重新注入內(nèi)核或者設(shè)置一個對數(shù)據(jù)報的目標動作。,開發(fā)流程,設(shè)置過濾環(huán)境編寫應(yīng)用程序,設(shè)置過濾環(huán)境,加載過濾需要的內(nèi)核模塊 # modprobe iptable_filter # modprobe ip_queue
5、設(shè)置過濾規(guī)則iptables -A OUTPUT -p icmp -j QUEUEIptables -A OUTPUT –p tcp –j QUEUE,Libipq程序框架,初始化ipq_create_handle(),設(shè)置包復(fù)制規(guī)則ipq_set_mode(),讀取包數(shù)據(jù)ipq_read(),,,包處理ipq_set_verdict()},銷毀ipq_destroy_handle(),,包過濾處理循環(huán)
6、while(1){,,分析包ipq_message_type()ipq_get_packet(),,Libipq接口函數(shù)(1),建立ipq的handle:struct ipq_handle *ipq_create_handle(u_int32_t flags, u_int32_t protocol); flags:基本上沒用,通常設(shè)為0; protocol:制定想獲取協(xié)議的隊列,PF_INET為IPV4隊列
7、, PF_INET6為IPV6隊列成功:返回一個不為空的指針;失敗:返回一個NULL指針,元數(shù)據(jù),struct nlmsghdr{ __u32 nlmsg_len; /* Length of message including header */ __u16 nlmsg_type; /* Message content */ __u16 nlmsg_flags; /* Additional flags */
8、__u32 nlmsg_seq; /* Sequence number */ __u32 nlmsg_pid; /* Sending process PID */};,Libipq接口函數(shù)(2),設(shè)置IPQ的拷貝模式:用戶空間來設(shè)置ip_queue的接收數(shù)據(jù)模式的.int ipq_set_mode(const struct ipq_handle *h, u_int8_t mode, size_t len)h:是通過ipq
9、_create_handle ()獲得的句柄指針; mode:設(shè)定拷貝模式,IPQ_COPY_META和IPQ_COPY_PACKET。當為IPQ_COPY_META時,內(nèi)核將在其后的報文傳遞中只傳遞“報文的元數(shù)據(jù)”;當為IPQ_COPY_PACKET時,內(nèi)核將同時傳遞“報文的元數(shù)據(jù)”和報文本身 len:請求拷貝的報文長度成功:返回一個非0的正數(shù);失?。悍祷?1;,Libipq接口函數(shù)(3),從內(nèi)核中的pack
10、et queue中讀取數(shù)據(jù)包,將其拷貝到buf指定的緩沖區(qū)ssize_t ipq_read(const struct ipq_handle *h,unsigned char *buf, size_t len, int timeout);h:ipq_create_handle創(chuàng)建的句柄;buf: 存放數(shù)據(jù)包的緩沖區(qū); len:拷貝的字節(jié)數(shù); timeout:超時時限,0表示函數(shù)直到指定的數(shù)據(jù)讀
11、到緩沖區(qū)里接觸阻塞,負數(shù),表示函數(shù)馬上接觸阻塞。成功:返回一個大于0 的數(shù);失?。?1,Libipq接口函數(shù)(4),分析數(shù)據(jù)包的類型int ipq_message_type(const unsigned char *buf);1、buf:通過ipq_read存放數(shù)據(jù)包的緩沖區(qū);返回值存在兩種可能:NLMSG_ERROR:數(shù)據(jù)包是一個錯誤的數(shù)據(jù)包;IPQM_PACKET:元數(shù)據(jù)或是既包含元數(shù)據(jù)和負載的數(shù)據(jù)包,Libip
12、q接口函數(shù)(5),從緩沖中獲取數(shù)據(jù)包ipq_packet_msg_t *ipq_get_packet(const unsigned char *buf);,Libipq接口函數(shù)(5),用戶層通過這個函數(shù)告訴內(nèi)核對某一個數(shù)據(jù)包的處理意見 int ipq_set_verdict(const struct ipq_handle *h,ipq_id_t id,unsigned int verdict,size_t data_len,un
13、signed char *buf);h:id: 數(shù)據(jù)包的標識符,通過ipq_get_packet得到的;verdict:對數(shù)據(jù)包的處理意見,NF_ACCEPT:接收數(shù)據(jù)包,NF_DROP:丟棄數(shù)據(jù)包;len:buf:成功:>0的正數(shù);失敗:-1,Libipq接口函數(shù)(6),釋放ipq句柄int ipq_destroy_handle(struct ipq_handle *h);成功:0失?。?
14、1,,用libipq編寫程序,頭文件#include #include 編譯、鏈接gcc -o myfw myfw.c –lipq輸出fprintf(stderr,…..),編譯環(huán)境的搭建,Ubuntu:sudo apt-get install iptables-devRedhat 9.0:# file iptables-1.2.7a.tar# tar xjvf iptables-1.2.7a.tar
15、# make instll-develRedhat 高版本系列:1、rpm –ivh iptables 1.XX-dev(在安裝盤里能找到安裝包);2、yum install iptables-dev;,試驗題目,設(shè)置iptables過濾規(guī)則為:所有從本機發(fā)出的icmp包全部到自己編寫的應(yīng)用程序編寫應(yīng)用程序,功能如下:允許從本機出發(fā),目的地址為win xp ip的icmp包;丟棄其他任何icmp包;當出現(xiàn)錯誤時,做錯
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于Iptable和Netfilter的防火墻設(shè)計實現(xiàn).pdf
- 基于Netfilter的IPv6防火墻研究.pdf
- 基于Netfilter的DDoS防火墻設(shè)計與實現(xiàn).pdf
- Linux內(nèi)核中Netfilter-Iptables防火墻設(shè)置分析.pdf
- 結(jié)合入侵檢測機制的Netfilter防火墻的研究.pdf
- 基于netfilter-iptables防火墻的設(shè)計與實現(xiàn).pdf
- 構(gòu)建防火墻學習材料
- 基于Netfilter的輕量級防火墻的設(shè)計與實現(xiàn).pdf
- 基于Netfilter的內(nèi)容過濾防火墻的設(shè)計與實現(xiàn).pdf
- 天融信防火墻用戶操作手冊
- 基于Netfilter框架的Linux防火墻技術(shù)研究及應(yīng)用.pdf
- 基于Netfilter框架的審計監(jiān)測防火墻的研究與實現(xiàn).pdf
- 基于NETFILTER框架的內(nèi)容過濾防火墻的研究與實現(xiàn).pdf
- 防火墻論文
- dos命令 關(guān)閉windows系統(tǒng)防火墻 重置防火墻
- Netfilter-iptables防火墻中精確單模式匹配算法研究.pdf
- Linux下基于netfilter的防火墻性能的分析和研究.pdf
- 防火墻等級
- 防火墻1
- 防火墻方案
評論
0/150
提交評論