關於本報

自由軟體鑄造場電子報
報主:中央研究院資創中心
創刊日期:2004-06-03
發報頻率:雙週刊
訂閱人數:3,349
官網:

近期電子報


訂閱便利貼


將貼紙語法置入您的網站或部落格當中, 訪客可以輸入mail取得認證信,並按下確認連結後, 快速訂閱您的報紙。
預覽圖
訂閱自由軟體鑄造場電子報報
自由軟體鑄造場電子報
-----------------------------------------------------------------------------------------------------
Plurk FaceBook Twitter 收進你的MyShare個人書籤 MyShare
  顯示內嵌語法

自由軟體鑄造場電子報
發報時間: 2011-03-09 05:00:00 / 報主:OSSF
[公益聯播]第四季早上講堂
本期目錄
[技術專欄] 以 Snort 實作入侵偵測系統
[源碼快訊] 【活動新聞】另類的自由風景-電信網路軟體 OpenBSC 的發展故事
[源碼新聞] 【社群採訪】- 創意十足的 Mozilla Firefox 社群 - Mozilla Taiwan
[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
[自由專欄] 大家都看不見 世界就很安全?談 Security by Obscurity 的資訊安全觀
[企業應用] 淺談 App Store 與開放源碼軟體授權的案例: VLC 的非法下架與 Miro Video Converter 的合法上架
[源碼快報] 白宮網站 WhiteHouse.gov 再度釋出 Drupal 程式碼
[源碼快報] Nokia 透露 Qt 未來計畫 開發者釋出 Android 版 Qt 實作
[源碼快報] 微軟 Windows Phone Marketplace 禁止使用類 GPL 授權
[源碼快報] 移除 PS3 Linux 支援功能 Sony 遭控違反電腦欺詐和濫用法
[技術專欄] 以 Snort 實作入侵偵測系統

老薯條(http://vulscan.wynetech.com.tw)/文  2011-03-/02

前言

在一般企業中通常會設置防火牆作為防止駭客入侵的第一道防線,有些企業甚至認為防火牆即是唯一需要的資安設備,但在實務上,防火牆並無法有效阻擋所有種類的網路攻擊行為。也因此有所謂的入侵偵測系統設備(既然無法阻擋攻擊,那就記錄攻擊行為,以便事後追查,當然目前也有所謂的入侵預防系統 (Intrusion Prevention System, IPS),除了可記錄惡意行為外還可直接阻擋正在進行中的惡意行為)。在本篇文章中,筆者將結合開源碼社群中最有名的入侵偵測軟體 (Snort) 與 Web 介面的管理軟體 (BASE) 實作一個網頁型的入侵偵測系統。

本系統所需套件如下表:
軟體名稱 網址 說明
Fedora 11 http://fedoraproject.org/ Linux 作業系統
Libpcap http://www.tcpdump.org/ 擷取網路封包的程式庫
PCRE http://www.pcre.org/ 正規化表示法的程式庫
Snort http://www.snort.org 網路型入侵偵測系統
PHP http://www.php.net 網頁程式語言
Apache http://www.apache.org 網站伺服器
BASE (Basic Analysis and Security Engine) http://base.secureideas.net 網頁式入侵偵測系統管理程式
MySQL http://www.mysql.com 資料庫軟體
ADOdb http://adodb.sourceforge.net/ PHP 資料庫程式庫
▲表 1

什麼是入侵偵測系統

入侵偵測系統依偵測型式可分為網路型入侵偵測系統(Network-based Intrusion Detection System,以下簡稱為 NIDS)及主機型入侵偵測系統(Host-based Intrusion Detection System,在此我們不多加討論主機型入侵偵測系統)。

NIDS

網路型入侵偵測系統通常部署在網域閘道上 (gateway),通過竊聽 (sniffer) 的方式,即時監測網路上的封包並比對攻擊模式,當發現有疑似入侵行為時能即時提出警告的防禦系統。一般而言 NIDS 網路部署如下圖示:

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 1

NIDS 部署在網域閘道上 (gateway) 監控所有的封包並與攻擊模式資料庫比對,一旦發現有符合攻擊樣式的網路封包,即觸發相關事件來通知管理者,相信細心的讀者一定會發現上圖中的入侵偵測系統 (Snort) 是接在 switch 裝置前的 hub,而不是與 switch 裝置直接連接,這是因為封包在這兩種裝置上傳遞方式不同的緣故。在 hub 上,封包是採用廣播的方式,當封包進入到 hub 時,將會以廣播的方式將封包傳遞給 hub 上所有的主機,但只有目的主機會接收此封包,也就是說,在 hub 上連接的主機都會接收到封包,只是沒收下來而已,在這個情況下,如果我們讓網卡進入所謂的混亂 (promiscuous) 模式,那網卡就會強制的將同一 hub 上的所有封包資訊接收下來(這也是一些以竊取資料為目的木馬程式的特徵),所以有些網管人員會特別注意相關 log 檔案是否有類似 (promiscuous) 的字串,不過 Snort 在啟動後,也會強迫網卡進入混亂 (promiscuous) 模式,藉此取得其它主機的封包。以 Linux 系統為例;讀者可利用 ifconfig 指令查看目前網卡的狀況,如下圖為一個正常模式的網卡,在此模式下,網卡僅會處理與本身相關的封包。

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 2

讀者可利用 ifconfig eth0 promisc 指令,讓網卡進入混亂 (promiscuous) 模式,如下圖即為一個進入混亂 (promiscuous) 模式的網卡,在此模式下,網卡會處理流經 hub 的所有封包,Snort 即是利用此特性處理網域內的所有封包並比對是否有惡意樣式的封包,所以 Snort 程式在執行時,會將網卡設定成混亂 (promiscuous) 模式。

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 3

而在 switch 裝置上,則是會保存一張對應表,對應接在 switch 上的每台主機埠口(即 switch 裝置上的埠會對應連接此實體埠主機的 MAC 資訊),一旦封包流進此 switch 即會先查詢此對應表,並直接將封包直接傳遞給目的主機,而其他不相關的主機無法接收到封包。因此,若無經過特殊的處理,Snort 直接連在 switch 上是無法取得其它主機的封包。這也是為什麼 Snort 主機不能直接接在 switch 上來從事監控作業,而必須接在 hub 上的原因。除非 switch 有提供所謂的 mirror 功能,可將 switch 上其它埠所接收到的封包複製一份到 Snort 主機所在的埠口上,否則 Snort 接在 switch 上是無法取得其它主機的封包(僅可取得流經自己主機的封包)。

NIDS 偵測的方式可分為特徵比對 (Signature-based) 方式與異常偵測 (Anomaly-based) 方式,如下所述:

特徵比對 (Signature-based)

特徵比對 (Signature-based) 又稱為「不當行為偵測 (Misuse detection)」,系統會先針對入侵特徵建立一「異常特徵資料庫」,只要 NIDS 偵測到的封包內容與資料庫的某個特徵相符,系統即會判別為入侵。此種方式的優點是不易誤判,因為個別的攻擊行為通常擁有特殊的特徵符號。就如同病毒碼一般可精確比對出攻擊模式。但就如上所言,此種方式是否能完整的檢測出惡意的封包,取決於「異常特徵資料庫」的完整性,異常特徵資料庫越完整,檢測出惡意封包的機率就越大,所以此種方式並無法檢測出未知的攻擊方式,因為需要先有攻擊行為才會有攻擊特徵,「異常特徵資料庫」才能加入此種攻擊特徵,最後 NIDS 才可藉此掃描出惡意封包。Snort 所採用的偵測方式,即屬於特徴比對的方式。

異常偵測 (Anomaly-based)

運用統計分析的方式,先定義出正常的系統模式(以下簡稱正常模式),而後當 NIDS 檢測出不符合正常模式的流量時,即判別為異常,此種模式的優點在於可偵測未知的攻擊行為,因為攻擊行為常會造成系統偏離正常模式而被檢測出來,但缺點是很難界定所謂的「正常的系統模式」,所以經常會有誤判的情況,也因此大部份的入侵偵測系統大都採用特徵比對的方式。

安裝 Snort

Snort 是一種以攻擊特徵碼為基礎的入侵偵測系統,利用事先建立好的已知攻擊資料特徵碼,來比對接收到的封包內容是否含有攻擊行為。若符合特徵碼即觸發相對應的動作。相關架構圖如下所示:

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 4

Packet Decoder(封包解碼器)

當 Snort 取得各種不同通訊協定的網路封包後,第一件事即將封包置入「封包解碼器」模組中做第一階段的封包處理與分析,以作為下一個階段(前處理器與偵測引擎)的資料來源。

Preprocessors(前處理器)

Snort 的前處理器為外掛程式 (plugin) 的架構,主要功能在於重新標準化網路流量(如重組封包、分段與重組 TCP stream、編碼的轉換等等),以使得網路流量能精確的被偵測引擎 (Detection Engine) 解析及匹配特徵碼。

Detection Engine(偵測模組)

Detection Engine(偵測模組)主要功能在於規則分析與特徵偵測,Detection Engine(偵測模組)將 Snort 的規則文件引入,並按照規則文件中的規則,逐一比對並分析網路封包,一旦發現封包有符合規則文件中定義的行為,即觸發該規則文件中所定義的處理方式,當所有的規則都不符合時,即會丟棄該封包。Snort 的規則文件分為兩個部份:
1. 規則表頭 (Rule-Header) 規則表頭是規則中第一個圓括孤之前的部份,通常是用來決定封包比對來源範圍(如:限定比對那些範圍的 IP)及比對成功時的動作(如:用 log 或是直接丟棄)。
2. 規則選項 (Rule-Options) 規則選項主要利用一至多個關鍵字設定欲偵測的流量特徵,規則選項依功能可區分為下列四個部份:
(1) Meta-data 用來設定欲顯示的相關訊息,如當規則觸發時所要產生的訊息或弱點的相關參考訊息。
(2) Payload 用來比對封包內容的規則,如比對是否需區分大小寫或特定字串等等。
(3) Non-Payload 用來比對各種協定的欄位值。
(4) Post-Detection 當封包內容與規則符合時,除了在規則表頭 (Rule-Header) 所定義的動作外,另外會觸發的動作指令如下規則範例:
alert tcp any any → any 5432 (msg:"someone access PSQL command:SELECT"; content:"select";)
規則描述如下表:
alert【處理方式】 產生警示的 log
tcp【來源通訊協定】 偵測 TCP 的封包
any【來源 IP】 偵測任何的來源 IP
any【來源 port】 偵測任何的來源埠
any【目的 IP】 偵測任何的目的 IP
5432【目的 port】 僅偵測 5432 埠的封包
【進階處理內容】 若符合內容含有「select」的字串,則將 msg 後的字串記錄起來。
▲表 2

上述規則的意義為:
當主機上的 5432 埠,如果有接收到內含有 select 字串的封包,則記錄一筆警示記錄(記錄內容為「someone access PSQL command:SELECT」)。

Logging and Alerting:當 Snort 偵測出惡意封包時,可以將該訊息記錄起來並觸發相關警告事件。
Output Modules:可將相關資訊輸出到檔案或資料庫等儲存媒介,在本解決方案中,我們會將相關的資訊儲存至資料庫中。

接下來,繼續安裝 Snort,假設讀者已安裝完成 Apache 與 MySQL,請讀者依序以下列步驟安裝相關套件:
1.   安裝 Libpcap 及 PCRE
yum install libpcap*
yum install libpcre*
2.   設定 ADOdb
http://adodb.sourceforge.net/ 取得最新的版本,解開後,將相關檔案置於 /usr/local/adodb 目錄即可
3.   安裝 Snort 的資料庫
(1)  新建一個名稱為 snort 的資料庫
(2)  在 Snort 原始碼的 schemas 目錄下有一個 create_mysql 檔案
利用 mysql –u [USER] –p [Password] snort
(新建立 Snort 所需要的資料庫表格)
4.   安裝 Snort
(1)  至 www.snort.org 取得最新版本的 Snort 解壓縮後,如下指令:
./configure && make && make install 即可安裝完成
(2)  接下來即為建立 Snort 所需的相關目錄:
mkdir –p  /opt/snort/etc   #放置 config 檔案目錄
mkdir –p  /opt/snort/rules   #放置規則檔的目錄
mkdir –p  /var/log/snort   #放置 log
(3)下一步即為取得 Snort 的規則集(目前 Snort 是必需付費方可取得最新的規則集,但讀者可至官方網站簡單註冊後,即可取得未註冊的版本)將相關的規則集檔案解壓縮後置於 /opt/snort/rules 即可。
(4)再來即為設定 Snort 的組態檔 (snort.conf),基本上僅需設定下列選項即可:
var HOME_NET any    #設定欲監控的主機(any 表示任意的主機均符合)
var EXTERNAL_NET any #設定外部主機範圍
output database: log, mysql, user =【資料庫使用者帳號】
password =【資料庫密碼】 dbname=snort host=localhost
#MySQL 資料庫的支援

在安裝完成後,即可開始測試 Snort,Snort 提供兩種工作模式:
(1)  監聽 (sniffer) 模式
在此模式下,Snort 僅是 sniffer(如 tcpdump)的功能,監聽所有來往的封包,但不會做攻擊模式的比對。
讀者以 snort –v 進入 sniffer 模式,如下圖示:

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 5

(2)  NIDS(網路型入侵偵測系統)
在此模式下,Snort 不僅會監聽所有來往的封包,並會做攻擊模式的比對。

4.   安裝 BASE 軟體
由於 BASE 軟體有繪圖及 Email 相關功能, 所以我們還必需安裝 PHP 相關的模組。
pear install Mail     #利用安裝 Email                            
pear install Image_Color-1.0.2.tgz  #安裝繪圖所需的模組
pear install Image_Canvas-0.3.0.tgz
pear install Image_Graph-0.7.2.tgz
安裝完成後,可利用 pear list 來檢查是否有安裝相關模組,如下圖示:

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 6

將 BASE 相關程式置於網站根目錄下的 base 目錄,(在此為 /usr/local/apache2/htdocs/base),後利用瀏覽器設定,如下步驟:
步驟1(檢查相關環境):

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 7

步驟2(設定 ADOdb 的所在目錄):

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 8

步驟3(設定資料庫相關的資訊):

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 9

步驟4(設定從網站登入的帳號及密碼資訊):

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 10

步驟5(產生相關的資料庫表格):

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 11

當一切順利完成後,讀者可利用瀏覽器瀏覽 http://〈base IP〉/base/ 即可瀏覽 BASE 的相關頁面
接下來即請讀者啟動 Snort,如下指令:
/usr/local/snort/bin/snort -c /usr/local/snort/etc/snort.conf  -D
(以常駐程式方式啟動 Snort,並將網卡設定成 promiscuous,讀者可利用 dmesg 查看是否有類似下列的文字「device eth0 entered promiscuous mode」)。
下圖為 Snort 偵測到 Teardrop(一種拒絕服務攻擊的手法)攻擊的畫面:

[技術專欄] 以 Snort 實作入侵偵測系統
▲圖 12

至此,讀者已成功建立網頁型入侵偵測系統。可由網頁介面來掌控入侵偵測系統的相關資訊。
[源碼快訊] 【活動新聞】另類的自由風景-電信網路軟體 OpenBSC 的發展故事
OSSF/編述 2011-03-08


近年來電信網路技術的蓬勃發展,讓手機改變了大多數人們的生活面貌。隨著技術不斷地日新月異,從 2G 到 3G、行動網路生活面貌的成形,這個改變還會繼續在持續中;然而在手機系統中仍有許多待面對的挑戰與發展空間。由與台灣關係密切的德國黑客 Harald Welte 所發起的 OpenBSC 計畫就是一個例子。它是一個很特殊的 GSM 網路基地台端 BSC(Base Station Controller,基地台控制系統)的自由軟體計畫。就像其他的自由軟體計畫一樣,一個創造性的想法、一種透明化的運作方式,就會帶動一整個領域出現了改變與發展的契機。

OpenBSC 社群資深的德國開發者 Holger Freyther,應軟體自由協會之邀請,將於近日抵台與國內自由軟體社群分享這套軟體發展的故事,同時也介紹它在一些實際案例當中所發揮的影響。本次活動除了公開邀集國內的社群朋友來一同對話;同時也邀請了曾經參與過自由軟體手機計畫的國內知名開發者 Jserv 黃敬群先生做在地的回應。歡迎有興趣的朋友可以踴躍參加!

◎ 活動時間:2011 年 3 月 9 日(三)下午 7:00 ~ 9:00
◎ 活動地點:蘋果優仕八德店 2 樓(台北市八德路一段15號,順發 3C 隔壁,八德路跟新生北路交叉口。)
◎ 主辦單位:中華民國軟體自由協會
◎ 活動網頁:http://registrano.com/events/openbsc
[源碼新聞] 【社群採訪】- 創意十足的 Mozilla Firefox 社群 - Mozilla Taiwan
李婉婷/採訪 2011-03-07

瀏覽器是一個十分貼近大眾、也十分重要的工具軟體,每天上網都需要透過它與外界聯繫,Firefox 的開發一直以來都是從易學易用的角度出發,而 Firefox 背後的 Firefox Taiwan 社群 (MozTW) 在推廣上也是秉持著這個理念進行,一直默默的在為使用者服務。不,他們其實一點都不默默,在各大社群活動場合都可以看到 MozTW 的身影,他們是活潑、有衝勁、有很多創意點子的一群人。MozTW 社群固定每個星期一會在台北市杭州南路的生態綠咖啡館聚會,每次聚會並沒有特定主題,跟其他社群相比,MozTW 的社群成員大多不是技術背景出身,反而是使用者佔的比例比較高,也因此在聚會中大家分享自己生活趣事的狀況也比較多。生態綠就像是下班後聊天放鬆的地方,這點也很符合 Firefox 易學易用、貼近生活的開發目的,或許也是這樣輕鬆的氣氛,MozTW 在辦活動時花招特別多,創意的點子也源源不絕。

曾經在一次社群聚會中,趙柏強 (Bob) 等人剛好就聊到 IE8 推出,要舉辦記者會,由於記者會當天正好訂在 4 月 1 日愚人節,於是 MozTW 的社群成員花了一個晚上的時間,架了一個「用 Firefox 體驗 IE8 功能 (http://moztw.org/events/ie8/)」的宣傳網站,乍看之下,還以為是在替 IE8 做宣傳,其實是想搭著 IE8 的順風車推銷自家瀏覽器,網頁內容盡是用 IE8 來突顯 Firefox 眾多好用的功能。Bob 笑著說:「還有朋友打電話來問說,是不是 Mozilla Taiwan 網站被入侵了?」而最諷刺的是,當天在 Google 搜尋列打上「IE8」,搜尋出來的結果第一筆結果不是微軟的官方網站,反而是這個他們靈機一動所想出來的網站。

以往在自由軟體大型活動中,只有廠商有攤位可以擺宣傳品,而現在不少大型活動都已經開放攤位給社群申請,社群可以在專屬的攤位放一些文宣品、小贈品來為自己的理念或軟體做宣傳。有這樣的福利其實可以歸功於 MozTW,MozTW 是第一個在國內大型自由軟體活動裡擺攤位的社群,這其實是源自於一個意外。在 2008 年時,由於 Mozilla 基金會當時贊助 COSCUP2008 因此有個攤位,這個攤位後來給了 MozTW 使用,此後大家發現有個可以讓社群伙伴定點聚集、發放推廣贈品的攤位還挺方便的,於是便開始了向活動主辦者爭取社群攤位的申請風潮。

除了舉辦一般的社群活動之外,MozTW 也嘗試走入校園,吸引年輕學子使用 Firefox,希望 Firefox 易學常用的特性,能作為使用者接觸自由文化的起點,讓同學體驗自由軟體的便利之處及價值所在。MozTW 也在網路上找尋願意合作的圖文部落客,設計了大家十分熟悉的 Q 版火狐吉祥物 - Foxmosa(小莎),並且利用小莎這個虛擬角色經營 PlurkTwitter 進行網路行銷,到目前已經長達兩年的時間了,MozTW 社群希望經營這樣的吉祥物能更貼近大家的生活。在推廣宣傳方面 MozTW 投入了不少心力、加入許多創意,跟國外的 Mozilla 社群相比,MozTW 的推廣策略是走在很前面的。

最後,熱情、活潑、創意十足的 MozTW 想對初步接觸自由軟體的開發者說:自由軟體是一個可以讓開發者,尤其是資工系的學生,可以自由地從事軟體研究及開發的神兵利器,自由軟體也很適合用來激發群體創意並加強參與者本身的技術能力。一般來說,傳統的商業軟體在開發上通常需要經過多層關卡的管理與決策,但若是透過自由軟體,使用者可以自由地開發自己有興趣的軟體,並且做完後可以放在網路上讓大家測試,是一個非常優異的實作媒介與學習客體,希望大家日後能多多利用自由軟體的這項優點來提升自己的軟體開發功力,並透過交互分享多人共工的開發方式,來結交人生路途上志同道合的好朋友。
[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
翁卓立/文 2011-03-04

DAR 簡介 想在 UNIX/Linux 系統上備份檔案有許多選擇,最知名的莫過於 tar 指令。傳統的 tar 指令只能打包檔案,不支援壓縮功能,但透過管線轉向的方式並搭配 gzip、bzip2 等指令,或是直接使用較新版本的 tar 指令,都可以同時打包並壓縮檔案。如果使用者不熟悉 tar 指令,亦可選擇安裝 zip/unzip 或 rar/unrar 等套件來備份與壓縮檔案。

DAR:
官方網站:http://dar.linux.free.fr/
原始檔網址:http://ncu.dl.sourceforge.net/project/dar/dar/2.3.10/dar-2.3.10.tar.gz (1.3MB)
(大多數 Linux 發行版本均有內建 DAR 套件,例如 Red Hat、SUSE、Gentoo 與 Ubuntu 等,可直接使用該發行版本的套件管理程式進行安裝。)

DarGUI:
官方網站:http://dargui.sourceforge.net/
下載網址:http://nchc.dl.sourceforge.net/project/dargui/dargui/0.5.2/dargui-0.5.2_i386.deb (2.3MB)

使用 tar 指令打包與壓縮檔案雖然方便,但 tar 指令卻存在著一個問題:tar 指令不支援以分割檔案的方式,進行檔案打包與壓縮。假設主機上的備份裝置只有 DVD 燒錄機,但打包好需要備份的檔案遠超過 4.37 GiB(或 4.7 GB),此時便無法直接將打包完成的檔案備份到其他儲存媒體上。就算使用 Double Layer 的 DVD 光碟片進行備份,也仍然有 8.75 GiB(或 9.4 GB)的容量限制問題。當然遇到此類問題時,仍然有許多解決辦法,例如直接複製檔案存入外接硬碟,或是藉由網路將檔案傳輸到另一部主機的硬碟空間。但這樣的解決方案,都無法將檔案備份到相對而言比較穩定的光碟儲存裝置之中,對於備份檔案的安全性而言,仍然無法讓人放心。有些人可能會透過 split 指令,先將打包後的檔案進行分割,再依序處理所有檔案。只是這樣的備份檔案需要先後使用二個指令,使用者不免覺得麻煩。

所幸在 UNIX/Linux 系統上打包與備份,並不是只有 tar 一種解決方案。大多數 Linux 發行版本中,都提供一套名為 DAR 的套件可以作為檔案打包、備份的另一種選擇。DAR 這套工具的全名為 Disk ARchive(磁碟備存),本身是以 Shell 命令備份檔案。 DAR 與 tar 相當類似,都是用於打包及壓縮檔案或目錄,二者最大的差異是,DAR 打包後的檔案,主要是輸出到磁碟儲存裝置。由於使用的是磁碟裝置,輸出檔案時自然會面臨各種磁碟裝置的容量上限問題,因此 DAR 採用了分割方式,也就是依照使用者指定的參數將輸出檔案進行切割,並儲存成數個分割檔案。這些分割檔案被稱為 slice,可以依照不同的輸出裝置調整檔案大小。例如,檔案輸出時要使用軟碟機、CD-R 光碟燒錄機、DVD-R 光碟燒錄機,或是已經快被眾人遺忘的 ZIP Drive 等裝置進行備份,即可依照上述輸出裝置的容量上限,調整每一個 slice 的大小。


[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲ DAR 是以 Shell 命令的方式進行作業。


由於打包檔案可能會佔用許多磁碟空間,即使事先指定以分割方式進行處理,仍然需要預留足夠的磁碟空間,才能存放這些打包後的分割檔案。如果系統上的磁碟剩餘空間不足,備份檔案時可能會發生些許問題。對此 DAR 提供了一項非常特別的設計。亦即,在建立每一個 slice 之後,可以暫停動作,讓使用者先行處理其他工作,或是直接執行 Shell Script,繼續該 slice 的後續處理。例如打包並切割後的檔案要備份到 CD-R 光碟片,即可要求 DAR 建立一個 slice 之後,先將該 slice 備份到 CD-R 光碟片中,完成後再切割出下一個 slice 及其它備份工作。


[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲ DAR 在每一個 slice 建立完成後,可以暫停執行以便讓使用者進行其他處理。

DAR 的主要特色

除了打包檔案的切割與壓縮功能外,DAR 也擁有許多其他備份工具無法兼備的特色。例如差異化備份功能,即為 DAR 最重要的特色之一。在大部份的情況下,前後二次備份系統之間,系統上的檔案多半只有一部份經過變動,如果二次均全數重新備份,將會相當耗時費力。但 DAR 所支援的差異化備份模式,可以自動比較二次備份,辨認出新增或變更過的檔案,並只處理這些檔案,所以能採用較有效的方式備份系統。如果系統發生問題需要回存備份檔案,只需要先回存先前的完整備份檔,再回存後續的差異備份檔,即可將檔案系統恢復至原先的狀態,即使原先的完整備份檔包括事後已經被刪除的檔案,也不會產生處理上的問題。

DAR 在進行備份作業時,也可使用過濾器,指定需要備份的檔案。例如需要連同檔案目錄一起備份時,可能有些不必要的檔案不希望被加入備份檔之中(例如暫存檔或不重要的記錄檔),此時就可以利用過濾器的功能,將這些檔案排除在備份檔案的範圍之外。相反的,如果有某些檔案一定要進行備份,就可使用過濾器的含括功能,將這些檔案列為必需備份的檔案之一。而且無論在建立或解開備份檔案時,都能套用過濾器功能。過濾器是以檔案名稱作為處理依據,但並未限定只能處理檔案,如果備份時需要或不需要子目錄,亦可使用過濾器進行處理。


[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲ DAR 可以利用過濾器功能,將檔案包含或排除在備份檔案之列。


由於備份時通常會產生一個相當大的檔案,因此經常使用壓縮模式。但有時候需要從備份中還原某一個檔案,而不需要將整個備份目錄回存,此時便需要備份工具提供直接存取功能,使用者才能在不需要解開整個備份,直接將某個檔案回存至系統中。DAR 就支援直接存取功能。需要使用直接存取功能時,DAR 會先讀取備份的索引目錄資訊,直接找到欲回存檔案在備份中的位置,並回存該檔案至系統中。如果備份時使用了分割功能將備份切成好幾個 slice,則 DAR 會告知使用者該檔案位於哪一份 slice 之中,並要求使用者提供該 slice ,即可回存該檔案。

除了上述功能以外,比較值得一提的是,DAR 還支援測試功能與管線功能。其中,測試功能可以直接測試備份,以確定備份中資料是否損毀,並將測試結果告知使用者。如果只想確認備份檔的正確性,不想花時間解開整個備份,選擇使用測試功能會比較方便。管線功能則允許 DAR 將備份結果輸出到標準輸出介面,或是轉向至其他軟體進行後續處理。相反的,DAR 也可以接收經由管線轉向而來的資料,並進行回存處理。操作管線轉向功能較為複雜,但 DAR 的功能也因此能發揮到極致。

雖然大多數人通常會在 Linux 系統中使用 DAR,這並不代表 DAR 只能在 Linux 系統中使用。相反的,使用者已經在許多不同的作業系統平台上測試過 DAR,而且執行時也沒有因而產生問題。這些作業系統包含 Windows、Solaris、FreeBSD、NetBSD 與 MacOS X 等等,幾乎涵蓋了所有主流的作業系統。而在 DAR 2.0.0 版之後,DAR 也開始提供應用程式介面(即 API),讓有意為 DAR 開發相關程式者,也能直接使用這些 API 進行資料處理。這樣的運作模式同時也為 DAR 帶來許多好處-若有使用者認為文字介面的 DAR 在操作上不夠便利,可以選擇使用利用這些 API 所開發的 DAR 圖形使用者介面,例如 KDar 與 DarGUI 。

DarGUI 簡介

從 DarGUI 的名稱之中即可得知,這套工具是以圖形前端介面操作 DAR 的應用程式。DarGUI 是以 GTK+ 進行開發,也由於大多數的 Linux 發行版本都支援 GTK+ 程式庫,因此大部份的 Linux 發行版本上都可以執行 DarGUI。會出現 DarGUI 自然是因為 DAR 的參數與選項很多,造成備份作業較複雜,對於剛接觸 DAR 的使用者來說,也是一項嚴苛的考驗。但有了 DarGUI 的輔助,即可使用最直覺的操作介面,直接利用 DAR 備份資料,減輕許多使用者的負擔。


[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲ DarGUI 提供了 DAR 的圖形操作前端介面。


事實上 DarGUI 並不是第一個 DAR 的圖形前端介面,先前也曾經出現過 KDar 這套軟體,提供了類似 DarGUI 的功能。但 KDar 在 2007 年 12 月釋出最後一個版本之後,已經長達三年不曾更新。再加上 KDar 是針對 KDE 所設計,而 KDE 這幾年來已經產生相當程度的變化,所以即使是「最新」版本的 KDar,也已經無法在目前大多數的 Linux 發行版本上執行。這樣的過程,也是促使 DarGUI 作者開發一套全新 DAR 使用者介面的主要原因。

由於 DarGUI 的主要特色都是基於 DAR 提供的功能,它只是 DAR 的前端介面,提供使用者以圖形介面進行操控,可以降低使用上的難度,減少不必要的困擾,卻依然能使用 DAR 提供的各式功能。例如使用者可以利用 DarGUI 直接查看 DAR 備份中的內容,或是在備份中點選開啟要解開的檔案。選擇欲解開的檔案時,亦可使用特定關鍵字進行搜尋,以過濾不必要的檔案。如果想要了解備份檔案的相關統計資訊,也能以 DarGUI 直接瀏覽相關資訊,例如備份中所包含的檔案數量,或是檔案壓縮的相關資訊等等。而在建立備份檔案時,使用者也能藉 DarGUI 的介面直接方便地進行處理。使用者只需要指定一些必要選項,例如 slice 的大小、是否採用壓縮功能,以及決定檔案或目錄的過濾關鍵字,即可立即備份資料。


[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲以 DarGUI 建立備份檔案相當方便,所有 DAR 所支援的選項都能且接在畫面上進行設定。


如果要進行的是差異化備份功能,或是要檢查備份的正確性,也能直接使用 DarGUI 進行處理。此外,DarGUI 還能使用比對功能進行檢查,找出備份檔案與原系統存放的檔案間是否有差異,方便使用者決定如何備份或回存。如果希望定期備份,DarGUI 也提供了排程功能。使用者可以指定定期備份的週期,或是在指定的時間點備份。由於作者也提到可能有許多功能並未被考慮到,作者相當歡迎任何人提出針對 DarGUI 功能上的看法與建議。目前仍然有許多人持續開發 DarGUI,只要提出的是技術上可行的建議方案,便會在後續版本中陸續加入這些新功能。

英文是 DarGUI 操作介面的預設語言,但 DarGUI 也支援數種不同的語言,包含法文、西班牙文、德文以及瑞典文。雖然 DarGUI 缺少熱心人士協助中文化,目前尚未支援正體中文,將來仍然有可能釋出 DarGUI 中文版本。但即使是使用英文介面,由於 DarGUI 已經簡化 DAR 的操作過程,只要事先熟悉軟體的使用方式,使用時也不至於發生太大問題。

[源碼密技] 以磁碟為主要處理對象的備份工具 - DAR & DarGUI
▲ DarGUI 目前仍是以英文介面為主,但本身已經提供了多國語系支援功能。

結語

使用開放原始碼的作業系統或是工具程式,在功能支援上永遠有無限的可能。比方,tar 指令不夠友善,便出現 DAR 這種改進後的備份工具;而 DAR 的操作介面為人垢病,便出現 圖形使用者介面的 DarGUI。或許目前這些工具的表現都稱不上盡善盡美、毫無缺點,但只要開發團隊持續維護,或具備相關技術能力的人可以提供支援,在不久的將來,這些軟體都可能提出更多新功能,以滿足各種不同的需求者。

作者簡介

翁卓立
逢甲大學資訊工程學系、台灣科技大學電子所畢業,目前擔任韌體研發工作,主要使用 Embedded Linux 進行產品開發。著有「Linux 進化特區:Ubuntu 10.04 從入門到精通」等書。
[自由專欄] 大家都看不見 世界就很安全?談 Security by Obscurity 的資訊安全觀
洪朝貴/文 2011-03-03

◎ 本篇文章傳達筆者意見,不代表自由軟體鑄造場電子報立場,回覆意見請見部落格原文網址:http://blog.ofset.org/ckhung/index.php?post/111c

趨勢科技張明正董事長日前接受彭博社訪問時表示:Android 系統因為開放原始碼,所以沒有蘋果下 iPhone 平台來得安全。這和幾年前李家同校長發表的看法類似:「開放型的操作系統雖然有很多優點,但極容易被人不法侵入,而且侵入以後,常可以通行無阻,如入無人之境。」這種「security by obscurity」的資訊安全觀,不僅挑戰著資訊安全專家和美國白宮的智慧,也挑戰著事實。

國際資訊安全專家的看法,與臺灣資訊界兩位大老正好相反。他們認為:好的演算法,應該攤在陽光下,讓所有資訊專家檢驗。如果沒有專家看得出漏洞,被檢驗的演算法才比較可能是安全的。上述資訊安全的基本原則,叫做 Kerckhoffs' principle。我在「見不得人的 DRM 演算法」一文當中,列舉過一些電腦高手對於這個議題的觀點。這裡再補充一個:近年來活躍於密碼學舞臺的世界知名資訊安全專家 Bruce Schneier 曾經說過

身為密碼與資安專家,我一直搞不懂開放原始碼議題為什麼會引起這麼大的騷動。在密碼學界,開放原始碼是資訊安全的先決條件;過去數十年來一直都是如此。公開的安全當然比私密的安全更安全:不論是加解密演算法、安全協訂、資安原始碼皆然。對我們來說,開放原始碼不只是一種商業模式,它根本就是工程師應有的聰明態度。

如果資安專家談的太抽象、太理論,那就讓我們談談真實世界所發生的資安問題吧。資訊界兩位大老談的都是作業系統;不過對於一般使用者而言,更需要謹慎守護的第一道防線,可能是雲端年代最重要的代步工具-瀏覽器。去年年初 Google 中國被入侵,臺灣多數大學基於其對瀏覽器的宗教狂熱,一直不敢公開談論這個資訊安全問題。到了去年年底,IE 瀏覽器的零時差攻擊,而中韓潰客很可能用到這個漏洞,導致行政院網站遭到惡意攻繫,再次突顯 IE 瀏覽器的資安問題。關心資訊安全的兩位大老,只批評「目前仍處於小眾的作業系統」的資訊安全;但對於 IE 所造成的這兩個影響既深且廣的資訊安全事件、對於眾多強迫用戶使用破敗舊版 IE 的自殘網站、對於至今沒有具體因應作為的資訊學界與資訊產業,卻反而沒有提出任何建議,這令人十分失望。

「還好我的電腦沒有被入侵。」那可能是你的感覺。今日最大規模的資安問題-botnet 殭屍網路-最可怕的地方,在於被入侵的受害用戶仍舊能夠繼續正常使用電腦,因而經常完全不自覺。操作殭屍網路的駭客潰客入侵你的電腦,用意多半不在你的資料,而在徵召你的電腦參與大規模的集體攻擊。他當然不希望驚動「電腦被徵召」的受害者,這樣那部電腦才會持續留在線上隨時待命-等待他發動攻擊金融機構或政府機關的命令。

殭屍網路的最重要傳染途徑,就是 IE 了。不過,IE 的用戶人口最多,所以光看這個數字還不足以說明 IE 比較不安全。Firefox 用戶的電腦當然也有機會被徵召進殭屍網路。拿上面連結的數據和 2009 年瀏覽器市佔率對照並相除,會發現:IE 與 Firefox 的中鏢率比值為 5:3。真的嗎?大家都看不見 IE 的原始碼,所以封閉原始碼的 IE 真的就比開放原始碼的 Firefox 更安全嗎?

當然,挑戰 Kerckhoffs 原理的資訊界兩位大老,談的都是作業系統,而不是瀏覽器。那更好,就來談談作業系統的中鏢率吧。「IE 助長殭屍網路」那篇文章裡面,沒有作業系統相關數據,無法定量分析。搜尋 Linux botnet,發現 2009 年出現首宗(似乎也是唯一的一宗)Linux 殭屍網路事件。被入侵的,並不是一般用戶的電腦。一般 Linux 用戶的電腦,需要以個案方式手動入侵,對於經營殭屍網路的潰客來說,不符合經濟效益。被入侵的,是沒有設定密碼的某些網路分享器不管 Windows 桌機的中鏢率是否真的高達 25%,至少可以確定 linux 桌機的中鏢率,是零。也就是說,我在 Linux 下生活了 15 年,到目前為止,我的電腦還沒有榮幸被徵召加入殭屍網路。

這個例子除了說明使用開放原始碼的 Linux 遠比使用封閉原始碼的 Windows 安全之外,還提醒我們三件事。第一,大多數諸如網路分享器之類的裝置,之所以採用開放原始碼的 Linux,而不是採用封閉原始碼的 Windows,資訊安全當然也是重要的考量之一。如果 Linux 不安全,資訊廠商當然寧可花錢取得授權,改用「比較安全的 Windows」。第二,系統再怎麼安全,產品再怎麼優,如果用戶沒有資訊安全意識-例如連密碼都沒設定-那麼一樣會曝露在風險當中。一位負責任的資訊安全專家,會提醒大眾要提高資訊安全意識,不要仰賴任何產品-防毒軟體也好、Linux 也好-而不是淡化嚴重的資安問題,甚至扭曲事實,找不相關(甚至正好顛倒是非)的藉口來搪塞。第三,在這個案例裡面,只有特定型號的分享器受害。這再次驗證了資安專家早就提出的建議:類似生物多樣性的「作業系統/瀏覽器多元化」,有助於提升網路社會整體的資訊安全。詳見 Schneier 的專訪O'Donnell 與 Sethu 的學術論文摘要。一位真正關心社會整體資訊安全的專家,必須要關心這個議題。

李校長的專長是演算法,而不是資訊安全。當然,一位學術成就遠低於李校長的部落客,讀者也不需要將他的話照單全收。問問搜尋引擎吧:請看看「李家同 演算法」和「李家同 資訊安全」,會搜出什麼樣的天壤之別。相較於他令人敬佩的學術成就,和許多技術文章的高水準,李校長那篇文章的專業程度,令向來敬佩他的我訝異得說不出話來。以他對於資訊教育界及對於社會整體龐大的影響力,卻對大眾提出違背事實的資訊安全建議,非但沒有協助自由軟體界讓數位高牆倒下,反而協助微軟強化數位高牆,令人感到多重的不安與十分的不解。讓數位高牆倒下

至於張董顛倒黑白的動機,就很容易理解了;甚至可以得到一點點諒解。張董的任務是賺錢,而不是拯救世界。這不是在指責趨勢科技,而是要請消費者認清資本主義社會的現實-不論你喜不喜歡。2005 年 Sony 藉由音樂光碟入侵消費者電腦的時候(請搜尋 Sony rootkit),部落客於 10 月底揭露其劣行,一開始主流媒體都不願意報導;而資訊安全界則只有 F-Secure 與 Sysinternals 兩家小的防毒軟體公司積極回應。諸如 McAfee 與 Symantec 一開始都不願意真的移除入侵的程式碼;他們甚至還替 Sony 的行為辯解,誤導消費者。至於趨勢科技,則遲至 2006 年才低調推出反安裝工具。難怪 Sneier 這樣評論這些資訊安全大廠:「Sony rootkit 事件突顯了什麼呢?說得好聽一點,這些公司無能;說得不客氣一點,那是欠缺專業倫理呀。」回到這次張董發言事件,難怪部落客們會立即反駁,會調侃張董是資訊不安全專家,認為他可能只是害怕將來 Windows 退流行,就沒生意可做,才會出此下策。詢問報 (the Inquirer) 倒是打趣地指出,趨勢科技不用太擔心自由軟體用戶的批評-趨勢科技不會「失去」這些客戶,因為他們從來就不需要買防毒軟體。

但是 Sony 事件對我們的啟發還不僅止於此。如果 Sony 會在你的電腦開設後門,那麼微軟與蘋果會不會?如果按照張董和李校長的建議,大家都把頭埋到沙子裡,反而只剩下微軟和蘋果可以看得見一切,那麼這個社會將會更加安全,還是更加危險?這不是假設性的問題,這是發生過很多次,甚至現在還存在於你的(以及可能存在於兩位資訊大老的)電腦、手機、隨身聽裡面的事實。請搜尋「Windows phone home」、「Windows stealthy update」、「Windows 盜版警察」、「Apple secret url」、「MobileMe secretly」。這裡的重點已經不是潰客入侵。這裡的重點是:如果「收你錢、不給你看原始碼、告訴你把頭埋在沙子裡比較安全」的資訊廠商,恰恰就是入侵你電腦的潰客呢?封閉原始碼真的比較安全嗎?到底對誰比較安全呢?

最後,提醒消費大眾幾件事。第一,請不要為了合理化自己的「選擇」,而強迫自己「相信」謊言。我選擇使用 Ubuntu,Slax,與 SimplyMEPIS,是因為這些版本的 Linux 方便性等等諸多考量;但並不會因此而天真地認為我的選擇,就一定也比其他版本的 Linux 或比 BSD 更安全。盲目的品牌忠誠,只會讓你變成任人宰割的肥羊。「我可以繼續使用封閉原始碼的 Windows 嗎?」如果因為環境的現實因素不配合,身旁找不到熱心的小學三年級 Linux 玩家可以幫忙你解決問題,那當然也只好繼續用 Windows。哦,要記得安裝防毒軟體。如果我必須用 Windows, 會比較相信開放原始碼的 ClamWin;但是請不要因為繼續用 Windows, 就跟著催眠自己相信那些「自身利益與社會利益」衝突的公司。「提出有利於社會整體資訊安全的建議-例如丟棄 IE
轉寄『第 168 期 以 Snort 實作入侵偵測系統』這期電子報

寄信人暱稱  寄信人email
收信人暱稱  收信人email

  • 社群留言
  • 留言報主