跳到主要內容

打造應用層防火牆(Layer 7 Filter)

打造應用層防火牆(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

留言

這個網誌中的熱門文章

WUSON的CISSP課後筆記整理-葉柏毅Alex Yeh

  CISSP考試心得-Alex Yeh 心智圖 心智圖PDF Structure Architecture Framework Approach Methodology Domain 口訣 Domain 1. Security and Risk Management   C、I、A+GRC(安全和風險管理) Domain 2. Asset Security   盤點、分類、保護(資產安全) Domain 3. Security Architecture and Engineering   時時都安全、處處都安全(安全架構和工程) Domain 4. Communication and Network Security   處處都安全(通信及網路安全) Domain 5. Identity and Access Management (IAM)   I + 3A(身分識別及存取控制) Domain 6. Security Assessment and Testing   查驗、訪談、測試(安全評鑑及測試) Domain 7. Security Operations   日常維運、持續改善(安全維運) Domain 8. Software Development Security   時時都安全、處處都安全(軟體開發安全) 美國法定目標(FISMA)/ 資通安全法 CIA C機密性:資料不被偷 I完整性:資料不被竄改 A可用性:資料隨時可用 Integrity完整性 Data Integrity(資料完整性) Authenticity(資料真偽;真實性) Non-repudiation 不可否認性(法律上):傳送方不能否認未傳收;接受方不能否認未收到。 FISMA NIST FIPS 199 NIST SP 800 資產Asset:有價值Value的東西,且值得保護 Assets 通常指資訊系統 資料 電腦系統 操作系統 軟體 網路 資料中心(機房) 人(最重要) 業務流程 資安目標(定義): 透過安全管制措施,保護資訊資產不受到危害,以達到CIA目標 進而支持組織的業務流程 將安全融入組織業務流程(人事/採購),產銷人發財 支持組織的「產品」及「服務」持續交付 為公司創造價值,實現公司的使命及願景 公司最高經營階層的管理作為就叫做治理. 管理是達成目標的一套有系統的

[補充]Common Attacks

  參考來源: Wuson - Common-attacks  , Wiki 如翻譯或解釋有誤,歡迎提出更正。 Brute force: 蠻力攻擊 (英語:Brute-force attack) ,又稱為 窮舉攻擊 (英語:Exhaustive attack)或 暴力破解 ,是一種 密碼分析 的方法,即將密碼進行逐個推算直到找出真正的密碼為止。 Advanced Persistent Threat (APT) :高級長期威脅(英語:advanced persistent threat,縮寫:APT),又稱高級持續性威脅、先進持續性威脅等,是指隱匿而持久的電腦入侵過程,通常由某些人員精心策劃,針對特定的目標。其通常是出於商業或政治動機,針對特定組織或國家,並要求在長時間內保持高隱蔽性。高級長期威脅包含三個要素:高級、長期、威脅。高級強調的是使用複雜精密的惡意軟體及技術以利用系統中的漏洞。長期暗指某個外部力量會持續監控特定目標,並從其獲取數據。威脅則指人為參與策劃的攻擊。 Multi-vector, polymorphic attacks Buffer Overflows: 緩衝區溢位 (buffer overflow),在 電腦學 上是指標對 程式設計 缺陷,向程式輸入 緩衝區 寫入使之溢位的內容(通常是超過緩衝區能儲存的最巨量資料量的資料),從而破壞程式執行、趁著中斷之際並取得程式乃至系統的控制權。 Mobile Code: ActiveX, JavaApplet, Flash, JavaScript Malicious Software (Malware) Drive-by download attacks: 路過式下載 ,網頁掛馬攻擊 (Drive-by Downloads) Spyware Trojan Horse Keyloggers Password Crackers Spoofing欺騙 Masquerading,偽裝 Sniffers,竊聽 Eavesdropping,竊聽(隔牆有耳) Tapping,竊聽 Emanations 流出 and TEMPEST Spontaneous emission of electromagnetic radiation” (EMR) subject to TEMPEST eavesdropping 受 TEMPE

The Effective CISSP考試攻略

  資料來源: https://wentzwu.com/the-effective-cissp%e8%80%83%e8%a9%a6%e6%94%bb%e7%95%a5/ The Effective CISSP考試攻略 考試的難易 一個好的考試,通常會讓你準備的很辛苦!但通過考試後會讓你一直駡,怎麼考出來的題目沒有想像中難!但這就是一個好的考試!這種考試通常有一定的門檻及鑑別度。 到2020/07/01止,台灣有337位CISSP;2019/05/31是304位;2018/12/31是287位。 即使您在資訊軟體產業有相當的資歷,或已有資安的經驗,仍請不要忽視CISSP考試對資安治理、管理及技術的涵蓋面與勺鑽度。 一般而言,有十年以上工作經驗的朋友,可以將考試的目標訂在: 三個月到一年內 , 投入250小時到1000小時 作題目不少於2500題 考試的掌握度 CISSP考試大綱 要儘可能弄懂、裏頭的專有名詞不可以有看不懂的;必須能達到看得懂、說得出,並搭配作題目2500題以上,才能達到參加CISSP考試的基本門檻了。 作題目的最低標準:課本提供的線上題庫的全部題目,外加其它題庫1500題以上,都必須達到90%以上的水準。 答題技巧 考試的作答,基本上要以官方CBK、指定教材及NIST的指引為準。 除了K書,答題的技巧也要刻意練習及培養。 CISSP考試的題目,基本上都是透過社群運作,讓大家參與出題,所以題庫很大並且不斷在更新。因此,請著重在觀念的理解,力求以實力考過,不要迷信題目作很多或作考古題就會過。 應考策略 建議選擇在週一請假,並選在下午考試。 週六及週日可以用大塊的時間準備考試,讓自己進入戰鬥狀態。 睡個好眠後,週一上午持續複習;讓自己一直處於考試的戰鬥狀態。 下午考試當天,我個人不喝有刺激性的飲料(如咖啡)、習慣補一顆維他命B群(或考試前一個小時補充液態維他命),以及中午只吃輕食;進入考場前會先至洗手間用肥皂液洗手、深呼吸及舒展筋骨。 考試作答 作答時先刪去不可能的答案,再選一個對的或 最佳的 答案。 若是考簡體中文,不確定的題目可以標記(mark)起來,繼續作下一題,最後再回來作答。 若是考新版的英文試(CAT 1