版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 游戏开发程序员游戏开发质量与效率绩效评定表
- 商务基础及数据 9
- 5.2 热量 比热容教学设计初中物理八年级下册沪教版
- 展会设备故障快速响应技术支持人员紧急预案
- 关于市场拓展策略与目标的确认函5篇范文
- AI大数据分析古代诗词中的节日文化
- 2025-2026学年炮制甘草教学设计模板
- 2025-2026学年一课时教学设计英语初中
- 媒体公司记者新闻报道时效性与内容质量KPI考核表
- 2025-2026学年青蛇玩法教学设计
- 施工应急资源调配方案
- (期末复习) 2025-2026学年下学期人教版八年级下册数学期末 练习试卷
- 三升四数学暑假衔接作业完整版 统编版小学三年级升四年级每日一练(可打印)
- 2026中国信达浙江分公司社会招聘笔试参考题库及答案详解
- 万有引力定律【教学课件】 2025-2026学年高一下学期物理人教版必修第二册
- 中国腰椎间盘突出症诊疗指南(2025版)
- 2026年装配钳工职业技能鉴定考试题库及答案
- 历届全国大学生化学实验竞赛题目(笔试+操作)试卷及答案
- 2026版分级护理标准指南课件
- 初中化学练习题07溶液及溶解度(原卷版)
- 2026年HCIA认证《数通》全套道练习题库包及1套参考答案详解
评论
0/150
提交评论