linux l7-filter
- 下載 Layer 7 Patches & Protocol definitions
- 安裝 kernel source
重新編譯、安裝 Layer 7 Patches 更新過的 kernel source
cd /usr/src/linux
patch -p1 < /usr/local/src/netfilter-layer7-v2.0/kernel-2.6.13-2.6.14-layer7-2.0.patch (選用與核心版本對應的 patch 檔)
make oldconfig (如果之前已經有編譯過 kernel source, 需先執行 make mrproper)重點: Layer 7 match support (EXPERIMENTAL)... [N/m/?] (NEW) -> m
(亦可全部按 Enter 接受預設值, 再 make menuconfig 進行調整)
make menuconfig (若需進一步設定 kernel config 才執行; make menuconfig 需求套件: ncurses-devel)
重點 (以 kernel 2.6.13 為例, 不同的核心版本排列方式不一定相同):
Code maturity level options --> [*] Prompt for development and/or incomplete code/drivers
Networking --> Networking options -->
[*] Network packet filtering (replaces ipchains) -->
IP: Netfilter Configuration -->
<M> Connection tracking (required for masq/NAT)
[*] Connection tracking flow accounting
<M> IP tables support (required for filtering/masq/NAT)
<M> Layer 7 match support- make menuconfig
- make (此命令已完成make bzImage及make modules的工作)
- make modules_install
- make install
- 安裝 Layer 7 Protocol definitions:
cd /usr/local/src/l7-protocols-2005-12-16
make install 安裝 Layer 7 Patches 更新過的 iptables
至 http://netfilter.org/ 下載 iptables source
解包至 /usr/local/src, 本篇以 iptables-1.3.4 為例
cd /usr/local/src/iptables-1.3.4
patch -p1 < ../netfilter-layer7-v2.0/iptables-layer7-2.0.patch
chmod +x ./extensions/.layer7-test
make KERNEL_DIR=/usr/src/linux
make install KERNEL_DIR=/usr/src/linux若原本已安裝 iptables 套件的處理
cd /sbin
mv iptables iptables.old
ln -s /usr/local/sbin/iptables iptableschkconfig iptables on
vi /boot/grub/menu.lst (改成預設以新的 kernel 開機)
reboot使用 iptables layer-7 filter
iptables -t mangle -A PREROUTING -m layer7 --l7proto yahoo -j DROP (禁止 Yahoo! Messenger 封包)
L7-filter 支援的所有通訊協定: L7-filter Supported Protocols
亦可使用 -j MARK 參數搭配 QoS 頻寬管理, 詳情可參考: cbq.init 設定手札
iptables 封包過濾圖: http://linux-ip.net/nf/nfk-traversal.png
此編文章參考自 Jamyy's Weblog: L7-filter 安裝實錄
迴響
我只是愛你的有趣博客
我想說,你真的幫助我理解的主題 linux l7-filter | ??