版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四 川 大 学 计 算 机 学 院、软 件 学 院实 验 报 告 学号: 姓名:专业:_软件工程_ 班级: 第 13 周 课程名称 信息安全产品开发实践 实验课时4实验项目防火墙 II实验时间2013.12.13实验目的 1. 设置 iptables 过滤规则为:所有从本机发出的 icmp 包全部到自己编写的应用程序。2. 编写应用程序,功能如下: 1. 允许从本机出发,目的地址为 win xp ip 的 icmp 包; 2. 丢弃其他任何 icmp 包; 3. 当出现错误时,做错误处理,能够清理占用资源,退出程序。 实验环境 虚拟机 Red Hat Linux-VMware Workstat
2、ion 实验内容(算法、程序、步骤和方法) 由于有老师的demo程序的支持,所以这次实验基本上由我们自己写的部分不多,任务相对轻松。 编译环境的搭建这里就不多说了。 在编写代码之前,我们需要先设置过滤环境:iptables -A OUTPUT -p icmp -j QUEUE 这条命令很容易理解:在OUTPUT链后面加上新的规则,规则为让icmp报文被排队转发到用户空间去。当然,这里改的是filter表。(接上)实验内容(算法、程序、步骤和方法)接下来就是代码的编写了。我们先来了解一下demo程序的工作流程:1、 h = ipq_create_handle(0, PF_INET);初始化建立句
3、柄,使用协议为IPv4。2、 status = ipq_set_mode(h, IPQ_COPY_PACKET, BUFSIZE);IPQ 的拷贝模式为同时传递“报文的元数据”和报文本身。3、 status = ipq_read(h, buf, BUFSIZE, 0);从queue中读取数据包(即在过滤规则中被转发到用户空间的数据包)到buf中。4、 switch (ipq_message_type(buf) 分析数据包的类型,然后根据类型分别处理。5、case NLMSG_ERROR:case IPQM_PACKET:非错误数据包,继续。6、ipq_packet_msg_t *m = ipq
4、_get_packet(buf);从缓冲中获取数据包。7、test.c中:status = ipq_set_verdict(h, m-packet_id,NF_ACCEPT, 0, NULL);接收数据。test1.c中:status = ipq_set_verdict(h, m-packet_id,NF_DROP, 0, NULL);丢弃数据。简单点来说,Libipq的使用流程就是从用户空间中获取数据包,然后根据数据包的内容决定内核对这个数据包的处理。现在再回到题目中,很明显,我们只需要demo程序中的第6步和第7步之间加入第6.5步用来对包进行判断,然后再根据判断第7步对包进行处理。m=i
5、pq_get_packet(buf); 我们先获得数据包。ip=(struct iphdr*)m-payload;得到有效载荷的地址得到了ip地址的地址。addr.s_addr=ip-daddr;获得ip地址。if (!strcmp(10.3.3.33,inet_ntoa(addr)如果ip地址为本虚拟机的宿主机(win xp)。fprintf(stderr,allow %s outpout icmp packetn,inet_ntoa(addr);ipq_set_verdict(h,m-packet_id,NF_ACCEPT,0,NULL);很好,接收数据。elsefprintf(stder
6、r,cannot allow %s output packetn,inet_ntoa(addr);ipq_set_verdict(h,m-packet_id,NF_DROP,0,NULL);break;下面是全部代码:#include #include #include #include #include #include #define SIZE 2048void die(struct ip_handle* h)fprintf(stderr,program end abnormallyn);ipq_destroy_handle(h);int main()struct ipq_handle*
7、h;char bufSIZE;ipq_packet_msg_t* m;int ret;struct iphdr* ip;struct in_addr addr;h=NULL;m=NULL;ret=-1;h=ipq_create_handle(0,PF_INET);if (NULL=h)die(h);ret=ipq_set_mode(h,IPQ_COPY_PACKET,SIZE);if(-1=ret)die(h);while(1)ret=-1;ret=ipq_read(h,buf,SIZE,0);if(0=ret)die(h);ret=-1;ret=ipq_message_type(buf);s
8、witch(ret)case NLMSG_ERROR:fprintf(stderr,error message typen);break;case IPQM_PACKET:m=ipq_get_packet(buf);ip=(struct iphdr*)m-payload;if(4ip-ihl)fprintf(stderr,ip packet errorn);continue;addr.s_addr=ip-daddr;if (!strcmp(10.3.3.33,inet_ntoa(addr)fprintf(stderr,allow %s outpout icmp packetn,inet_ntoa(addr);ipq_set_verdict(h,m-packet_id,NF_ACCEPT,0,NULL);elsefprintf(stderr,cannot allow %s output packetn,inet_ntoa(addr);ipq_set_verdict(h,m-packet_id,NF_DROP,0,NULL);break;default:fprintf(stderr,errro messag
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 体育用品采购合同审核
- 企业年会导演合作协议
- 员工发展与福利计划
- 广告传媒董事长聘用协议样本
- 财务报告保密协议管理办法
- 颈椎病的诊断与治理
- 水利工程招投标合同审查要点
- 售后服务管理评审修订制度
- 电子竞技公司聘用合同范本
- 初级消防安全课件
- 中国特色社会主义法律体系课件
- 高中数学奥赛辅导教材(共十讲)
- 国开一体化平台04633《纳税实务》形考任务(1-4)试题及答案
- 临城兴业矿产资源有限公司闫家庄铁矿矿山地质环境保护与土地复垦方案
- 【海南康养旅游现状和对策探究11000字(论文)】
- (2024版)大学本科新增专业《智能视觉工程》解读
- 2023寺庙寺院品牌营销全案
- 循环系统监测-课件
- 学生心理健康一生一策档案模板
- 企业反腐倡廉培训课件
- 老旧楼加装电梯方案
评论
0/150
提交评论