tceic.com
学霸学习网 这下你爽了
赞助商链接
当前位置:首页 >> 其它课程 >>

信息安全实践第十二次作业


四 川 大 学 计 算 机 学 院、软 件 学 院


课程名称






周 实验课时 5

学号:_1043111034 姓名:_陈枝_ 专业:__软件工程__ 班级:3 第 17 信息安全产品开发实践 防火墙 II——利用 netfilter 构建用 户级防火墙

实验项目

实验时间

16-17

实验目的

利用 netfilter 构建用户级防火墙

实验环境

X86;WindowsXP;VMware Workstation 5.0.0; SSHSecureShellClient-3.2.9

内容: ? ?
实验内容 (算法、程 序、步骤和 方法)

设置 iptables 过滤规则为:所有从本机发出的 icmp 包全部到自己编写的应用程序 编写应用程序,功能如下: 允许从本机出发,目的地址为 win xp ip 的 icmp 包; 丢弃其他任何 icmp 包; 当出现错误时,做错误处理,能够清理占用资源,退 出程序。

实验代码:

test.c
#include <linux/netfilter.h> #include <libipq.h> #include <stdio.h> #define BUFSIZE 2048

(接上) 实验内容 (算法、程 序、步骤和 方法)

static void die(struct ipq_handle *h) { ipq_perror("passer"); ipq_destroy_handle(h); exit(1); } int main(int argc, char **argv) { int status; unsigned char buf[BUFSIZE]; struct ipq_handle *h; h = ipq_create_handle(0, PF_INET);

if (!h) die(h); status = ipq_set_mode(h, IPQ_COPY_PACKET, BUFSIZE); if (status < 0) die(h); do{ status = ipq_read(h, buf, BUFSIZE, 0); if (status < 0) die(h); switch (ipq_message_type(buf)) { case NLMSG_ERROR: fprintf(stderr, "Received error message %d\\n", ipq_get_msgerr(buf)); break; case IPQM_PACKET: { ipq_packet_msg_t *m = ipq_get_packet(buf); status = ipq_set_verdict(h, m->packet_id, NF_ACCEPT, 0, NULL); if (status < 0) die(h); break; } default: fprintf(stderr, "Unknown message type!\\n"); break; } } while (1); ipq_destroy_handle(h); return 0; }

test1.c
#include <linux/netfilter.h>

#include <libipq.h> #include <stdio.h> #define BUFSIZE 2048 static void die(struct ipq_handle *h) { ipq_perror("passer"); ipq_destroy_handle(h); exit(1); } int main(int argc, char **argv) { int status; unsigned char buf[BUFSIZE]; struct ipq_handle *h; h = ipq_create_handle(0, PF_INET); if (!h) die(h); status = ipq_set_mode(h, IPQ_COPY_PACKET, BUFSIZE); if (status < 0) die(h); do{ status = ipq_read(h, buf, BUFSIZE, 0); if (status < 0) die(h); switch (ipq_message_type(buf)) { case NLMSG_ERROR: fprintf(stderr, "Received error message %d\\n", ipq_get_msgerr(buf)); break; case IPQM_PACKET: { ipq_packet_msg_t *m = ipq_get_packet(buf);

status = ipq_set_verdict(h, m->packet_id, NF_DROP, 0, NULL); if (status < 0) die(h); break; } default: fprintf(stderr, "Unknown message type!\\n"); break; } } while (1); ipq_destroy_handle(h); return 0; }

数据记录 和计算

学习了解了: Netfilter 概述
结 论 (结 果)

Netfilter 工作机制 利用 netfilter 构建用户级防火墙原理 Libipq 工作流程与相关函数





Netfilter 更准确地讲是 Linux 内核中,一个包过滤框架,默认地,它在 这个框架上实现了包过滤、状态检测、网络地址转换和包标记等多种功能, 因为它设计的开放性,任何有内核开发经验的开发人员,也可以很容易地利 用它提供接口,在内核的数据链路层、网络层,实现自己的功能模块。

指导老师 评 议

成绩评定:

指导教师签名:

实验报告说明
专业实验中心 实验名称 要用最简练的语言反映实验的内容。如验证某程序、定律、算法,可写成“验 证×××”;分析×××。 实验目的 目的要明确,要抓住重点,可以从理论和实践两个方面考虑。在理论上,验证 定理、公式、算法,并使实验者获得深刻和系统的理解,在实践上,掌握使用实验设备的 技能技巧和程序的调试方法。一般需说明是验证型实验还是设计型实验,是创新型实验还 是综合型实验。 实验环境 实验用的软硬件环境(配置)。 实验内容(算法、程序、步骤和方法) 这是实验报告极其重要的内容。这部分要写明依 据何种原理、定律算法、或操作方法进行实验,要写明经过哪几个步骤。还应该画出流程 图(实验装置的结构示意图),再配以相应的文字说明,这样既可以节省许多文字说明, 又能使实验报告简明扼要,清楚明白。 数据记录和计算 指从实验中测出的数据以及计算结果。 结论(结果) 即根据实验过程中所见到的现象和测得的数据,作出结论。 小结 对本次实验的体会、思考和建议。

备注或说明 可写上实验成功或失败的原因,实验后的心得体会、建议等。 注意:
? ?

实验报告将记入实验成绩; 每次实验开始时,交上一次的实验报告,否则将扣除此次实验成绩。



推荐相关:
网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com