我开始研究智能防火墙,但在此之前,我需要清楚地了解一个非常基本的防火墙是如何工作的。由于我和我的团队对 C 语言最熟悉,我们将使用它。
有人可以举一个用C编写的非常基本的防火墙的例子。
开发正确的防火墙并非易事。您需要全面了解底层操作系统的网络堆栈以及 OSI 模型所有层的各种协议。
netfilter/iptables 项目负责 Linux 上使用最广泛的数据包过滤软件,它是开源的,应该可以让您很好地了解防火墙中的内容。它当然不属于“非常基本”的类别,但我会警惕任何声称“非常基本”的防火墙软件。
通常,大多数 Linux 防火墙都是 shell 脚本的编译,这些脚本组织要发送到的字符串iptables
,或者有时ebtables
根据桥接是否在使用命令。此外,tc
如果正在使用流量整形,他们会与实用程序进行对话。
Shorewall就是这样一个防火墙的一个例子,但它的作用远不止于此。它允许您设置各种类型的 NAT、围绕 VPN 的安全性等等。
看起来您想完全在 C 中执行此操作。我建议您获取 iptables 的源代码并熟悉其内核对应物提供的 ioctl 挂钩。那时,您将能够开始编写自己的包装器来完成您需要做的事情。
注意:Root 需要是运行您的应用程序的用户,请确保您针对(或围绕)它进行设计。