史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 資訊系統安全備援防護技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2007-08-09, 11:58 AM   #1
Admin1
管理員
 
Admin1 的頭像
榮譽勳章
UID - 112827
在線等級: 級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時級別:29 | 在線時長:972小時 | 升級還需:48小時
註冊日期: 2007-02-18
VIP期限: 0000-00
文章: 3507
精華: 0
現金: 1702 金幣
資產: 10196 金幣
預設 打造應用層防火牆(Layer 7 Filter)

與一般的 Packet Filter 防火牆不同,應用層防火牆是在 OSI Model 中的第七層(應用層)運作,因此它可以針對各種應用程式的封包進行過濾。比較常見的應用有阻擋 MSN 通訊、限制 P2P 連線使用的頻寬、限制網路電視等等,只要是應用層防火牆有支援的協定皆可以管控。Linux 預設的情況下是不支援 L7 filter(應用層防火牆)功能的,必須要自己 patch kernel 與 netfilter 才能讓 Linux 支援此項功能。


所需套件:
1.kernel source (eg. linux-2.6.22.tar.gz)
官方網站: http://kernel.org/

2.netfilter source (eg. iptables-1.3.8.tar.bz2)
官方網站: http://netfilter.org/

3.l7-filter kernel version (eg. netfiilter-layer7-v2.13.tar.gz)
官方網站: http://sourceforge.net/project/showf...group_id=80085

4.Protocol definitions (eg. l7-protocols-2007-07-27.tar.gz)
官方網站: http://sourceforge.net/project/showf...group_id=80085

各個套件的用途如下。
1. kernel source:Linux 的核心原始程式碼
2. netfilter source:Linux 防火牆(netfilter)的原始程式碼
3. l7-filter kernel version:kernel 版的 l7 filter。(也有 userspace 版的)
4. Protocol definitions:定義各種應用層的協定的檔案。

註:
l7-filter 完整的支援協定列表可參考此網址:
http://l7-filter.sourceforge.net/protocols

實做的步驟:
  1. Patch, Configure and Compile Kernel
  2. Patch and Compile Netfilter
  3. 安裝Layer 7 Protocol定義檔
  4. 設定防火牆



一、Patch, Configure and Compile Kernel

假設使用的 kernel 版本為 2.6.22。

1. 將下載回來的 kernel source 解壓縮後,放到 /usr/src/kernels 目錄中
引用:
tar zxvf linux-2.6.22.tar.gz
mv linux-2.6.22 /usr/src/kernels

2. 將下載回來的 l7-filter kernel version 解壓縮
引用:
tar zxvf netfiilter-layer7-v2.13.tar.gz

裡面有幾個比較重要的檔案:
iptables-for-kernel-2.6.20forward-layer7-2.13.patch
==>netfilter 的 patch 檔,適用於 kernel-2.6.20 之後的版本

iptables-for-kernel-pre2.6.20-layer7-2.13.patch
==>netfilter 的 patch 檔,適用於 kernel-2.6.20 之前的版本

kernel-2.4-layer7-2.13.patch
==>kernel 的 patch 檔,適用於 kernel-2.4

kernel-2.6.22-layer7-2.13.patch
==>kernel 的 patch 檔,適用於 kernel-2.6.22

3. 將 kernel 的 patch 檔複製到 kernel source tree 的根目錄(/usr/src/kernels/linux-2.6.22)
引用:
cp kernel-2.6.22-layer7-2.13.patch /usr/src/kernels/linux-2.6.22

4. Patch Kernel
引用:
cd /usr/src/kernels/linux-2.6.22
patch -p1 < kernel-2.6.22-layer7-2.13.patch

5. 設定 kernel
Patch Kernel 後,現在我們手上所擁有的 Kernel 已經可以支援 Layer 7 Filter,接下來我們必須要 "啟用" 此項功能。

引用:
cd /usr/src/kernels/linux-2.6.22
make menuconfig
Code maturity level options ---> Prompt for development and/or incomplete code/drivers

Networking ---> Networking options ---> Network packet filtering framework --> 將 Core Netfilter Configuration 與 IP: Netfilter Configuration 這兩個項目中所有的項目皆啟用。

註:
最重要的項目分別是 Netfilter Xtables support、Netfilter connection tracking support、Layer 7 match support,但官方手冊建議最好把與 netfilter 有關的選項都開啟。

6. 編譯與安裝 kernel
引用:
make clean
清除已前complie留下的舊檔案,由於我們是第一次compile,此指令可有可無。


引用:
make bzImage
編譯 Linux 系統核心。


引用:
make modules
編譯模組。


引用:
make modules_install
安裝模組,預設會安裝到 /lib/modules/2.6.22 目錄下。


引用:
make install
安裝 Linux 系統核心,會自動進行下列事項:
a. 將 bzImage 改名為 vmlinuz-2.6.22 並複製到 /boot
b. 建立 initrd-2.6.22.img 並複製到 /boot
c. 將 System.map 複製到 /boot 並改名為 System.map-2.6.22
d. 修改 /boot/grub/grub.conf


二、Patch and Compile Netfilter

假設使用的 netfilter 版本為 1.3.8。

1. 將下載回來的 netfilter source 解壓縮後,放到 /usr/local/src 目錄中
引用:
tar jxvf iptables-1.3.8.tar.bz2
mv iptables-1.3.8 /usr/local/src

2. Patch Netfilter
引用:
cp iptables-for-kernel-2.6.20forward-layer7-2.13.patch /usr/local/src/iptables-1.3.8

cd /usr/local/src/iptables-1.3.8

patch -p1 < iptables-for-kernel-2.6.20forward-layer7-2.13.patch

3. 編譯 netfilter
引用:
make KERNEL_DIR=/usr/src/kernels/linux-2.6.22
註:KERNEL_DIR 必須要指到我們之前已經 patch 好的 kernel source


4.安裝 netfilter
引用:
make install KERNEL_DIR=/usr/src/kernels/linux-2.6.22
這裡務必要注意,netfilter 預設是會安裝到 /usr/local/sbin 目錄下,不會覆蓋系統原來的版本(在 /sbin 目錄),所以當你執行 "iptables" 這個指令時會使用到的依然是系統原來的版本,而不是你自己編譯的版本。若要使用自己編譯的 netfilter 務必要使用絕對路徑來呼叫,例如 /usr/local/sbin/iptables。


當kernel與netfilter都編譯與安裝完成後,記得要重新開機並使用新的系統核心啟動Linux。


三、安裝Layer 7 Protocol定義檔
tar zxvf l7-protocols-2007-07-27.tar.gz]
cd l7-protocols-2007-07-27
make install

註:定義檔預設會安裝到 /etc/l7-protocols。


四、設定防火牆

當一切都準備就緒時就可以使用netfilter來過濾Layer 7的封包,指令格式如下:
引用:
iptables [specify table & chain] -m layer7 --l7proto [name of protocol] -j [action]
例如若我們要阻擋MSN通訊,則可以使用以下指令:
引用:
iptables -A FORWARD -m layer7 --l7proto msnmessenger -j DROP
iptables -A FORWARD -m layer7 --l7proto msn-filetransfer -j DROP
Admin1 目前離線  
送花文章: 8870, 收花文章: 2195 篇, 收花: 5820 次
有 4 位會員向 Admin1 送花:
alife0504 (2007-09-19),michael0703 (2008-03-04),shyu2033 (2007-10-03),zazoo (2007-08-11)
感謝您發表一篇好文章
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 04:49 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1