Linux 防火墙 实作 Layer 7 封包过滤


要手动编译新版本的核心 并介入 layer7 封包过滤选项的话,必要 俱备以下套件:

  • linux kernel source
  • iptables source
  • l7-filter patch
  • l7-filter protocols

在本文当中,所重新编译的版本如下:

  • kernel:2.6.24.4
  • iptables:1.4.0
  • l7-filter patch:2.17
  • l7-filter protocols:2008-02-20

为了利便管理 ,把以上套件均放在 /usr/src/kernels。

可以选择任何可下载网路档案的器材,如 lynx、wget,或 mozilla、firefox 等等器材下载,在此范例应用 wget,行动 如下:

将套件解压缩。

更新 kernel

为了安装利便,我们为 linux-2.6.24.4 这个目录建位一个软连结,以便切换目录。

更新 kernel patch,增进 layer7 filter 选项。

若您想延续应用旧版 kernel 的选项的话,您可以把 .config 档案复制到新 kernel 的目录下,此时重新选择项目时就会延用之前的设定。

为 kernel source 上 layer7 的 patch。

选择 layer 7 相关选项

在 kernel 选项里,必要 把相关的设定选择起来才可以,以下为完备 有关 layer 7 的项目。

较为重要 的是 "layer7" match support 项目与 IPv4 connection tracking support (required for NAT) 项目,若您不知道的话就请把 Core Netfilter Configuration 与 IP: Netfilter Configuration 里的选项整个选起来即可。

编译并安装新版核心

重 kernel 2.6 开始,编译核心 就变得更为简单,只必要 几个 make 的指令即可,安装完后会自动批改 GRUB 的选项,不需手动批改,减少了手动批改错误的危险。

更新 iptables patch

  • iptables 1.4.0 (含) 之前版本

更新 iptables 需留意是否在现有的 kernel 中 netfilter 子系统相切合,若应用了不在 kernel 所声援的模组,在设定 iptables 会出现错误。以下指令可新增 laery7 模组的指令。

设定 KERNEL_DIR 与 IPTABLES_DIR 环境变数,并开始编译安装。

  • iptables 1.4.1.1 (含) 之后版本

在 iptables 1.4.1.1 之后的 layer 7 模组已经不必要 应用 patch 行动来批改,只要把批改档复制到 extensions 资料夹即可。

安装通讯定议档

应用 layer7 模组时,会参考 /etc/l7-protocols 目录下的定议档,各通讯协定的封包特徵会在 l7-protocols 的套件里,解开之后直接安装即可。

重新开机

重新编译了核心 之后,必要 重新启动电脑手法套用新的核心 套件,请应用 uname 指令查察 是否设定乐成 。

测试

MSN Messenger

以下测试会拒绝连出 MSN Menssenger 封包,在 iptables 的 OUTPUT 政策里,我们在 X-Window 执行 GAIM 连出时,会发现 msnmessenger 的封包被 DROP。

语法:

iptables -A OUTPUT -m layer7 --l7proto msnmessenger -j DROP

BitTorrent

第二个测试拒绝连出 BitTorrent 封包,我们在设定好拒绝 bittorrent 封包后,在本机应用 BT 下载档案均失败,可从 iptables 指令查出。

语法:

iptables -A OUTPUT -m layer7 --l7proto bittorrent -j DROP

若您把 layer7 安装在网路闸道 (Gateway) 上的话,那么请应用 PREROUTING 或 FORWARD 连线才会有效 。iptables 可参考 ()

后记:

若您操持在您的防火墙上应用 layer7 封包过滤功能的话,那么所需的记忆体与 CPU 会更多,若您的应用者连线数同一时间超过百人,并且频繁的取存网路的话,那么也许必要 考虑应用较高效能的网路卡与更多的记忆体。若您在启用 layer7 功能后发现网路变得很慢的话,那么就必要 检查您的网卡与记忆体是否足够。

相关内容