- 论坛徽章:
- 0
|
原帖由 Godbach 于 2008-8-13 14:40 发表
请教一下他和iptables的异同,以及是否基于Netfilter开发
简单的说,netfilter是基于包过滤的,对于符合过滤条件的包无论是谁产生的,都采取规则中结果进行处理。
而这个防火墙是基于对应用授权的,即(比方说)可以让MSN访问网络,而不允许QQ
Introduction
简单,易用
Unix系统上最常见的防火墙都是基于netfilter的,这种防火墙对于用户来说不够友好,而且,它很大成对上是“防外不防内”的。 而WindowsXP SP2之后所自带的防火墙除了可以进行端口过滤外,用户用的最多最方便的,就是当一个应用请求访问网络时会让用户选择该访问是否允许。
工作原理简述
首先,类似netfilter,先在网络相关的代码出下钩子,当用户访问网络时,首先经过我们的钩子
当钩子被触发时,释放一个(虚拟的)按键消息 input_report_key()
操作系统层通过scancode,keycode,keymap等的转换, 最终通过keybind(X环境)或者inputrc(BASH) 获得和用户的交互, 提示用户有程序请求访问网络, 要求用户做出相应选择。
用户层的守护进程(或别的控制工具,可以是第三方独立设计的工具) 通过读configfs或者 /proc 文件系统的对应节点获得当前请求访问网络的进程PID,然后通过该PID获得该进程的相关信息,请求用户确认
将用户反馈的结果通过configfs反馈回内核
优点
内核层和用户层完全分开
hotkey的形式给上层应用的设计带来了方便
不足及改进
首先,当前的设计方式不能做到阻塞网络访问, 即当用户访问网络后, 如果用户没有对该访问进行授权, 则只能对其进行默认的处理。 这种方式在用户体验上并不好
下一步可以考虑当用户访问网络时进行阻塞的设计 |
|