实验十二 防火墙实验

实验十二 防火墙实验
任务一:实现一个简单的防火墙
在这个任务中,我们将实现一个简单的包过滤类型的防火墙,它检查每个传
入和传出的数据包,并执行管理员设置的防火墙策略。由于数据包处理是在内核
中完成的,因此过滤也必须在内核中完成。在过去,实现这样的防火墙必须通过
修改和重建内核来完成。
现代 Linux 操作系统提供了几种新机制来促进数据包
的操作,而无需重建内核映像。这两种机制是可加载内核模块 (LKM) Netfilter
任务 1.1 实现一个简单的 Kernel 模块
LKM 能够往 Kernel 内核添加一个新模块。这个新模块使我们能够扩展内核
的功能,而无需重建内核。防火墙的包过滤部分可以实现为 LKM
在这个任务
中,我们将熟悉 LKM
Labsetup12 放入虚拟机共享文件夹中,并将其复制到桌面上,进入到如下
目录
/home/seed/Desktop/Labsetup12/Files/kernel_module
kernel_module 目录下,有两个文件。 hello.c 是一个加载内核模块的简单
例子。当模块被加载时,会打印 ” Hello World!” ;当模块从内核中被移除时打印
Bye-bye World!.” 。不过这些消息不会在屏幕上打印出来,它们实际上被打印到
/var/log/syslog 文件中。您可以使用“ dmesg ”查看消息。
另一个文件 包含了编译 hello.c 的内容。只需输入“ make ”, hello.c 程序就会
被编译成一个可加载的内核模块。 在编译没有报错后,可以看到当前目录多了几个文件。
生成的内核模块在 hello.ko 中,可以使用以下命令加载模块、列出所有模块
和删除模块。此外,可以使用“ modinfo hello.ko ”来显示有关 Linux 内核模块的
信息。
$ sudo insmod hello.ko 【加载一个模块】
$ lsmod | grep hello 【查看已加载的所有模块】
$ sudo rmmod hello 【移除一个模块】
$ dmesg 【查看打印内容】
任务 1.2 使用 Netfilter 来实现一个简单的防火墙
来到这个目录
/home/seed/Desktop/Labsetup12/Files/netfilter_hello
以同样的方法编译 helloFilter.c 加载模块
dmesg -C 来清空内容
尝试 ping 1.1.1.1
我们分析一下这个 C 语言程序 当我们向 kernel 加入自定义的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值