關於本報

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

近期電子報


訂閱便利貼


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

自由軟體鑄造場電子報
發報時間: 2010-11-11 05:00:00 / 報主:OSSF
[公益聯播]人才招募
本期目錄
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊
[名家專欄] (商業炒作之前的)雲端簡史-SaaS 篇
[源碼密技] 瀏覽器即為作業系統-CorneliOS
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
[源碼報報] 防止小筆電採用 Android 微軟將向 Acer、Asustek 收取權利金
[源碼報報] 倫敦證券交易所轉換 Linux 平台 締造交易速度世界記錄
[源碼報報] 宣稱 Android 使用 Java Card 技術 Gemalto 控告 Google 與 3 大手機製造商
[源碼報報] 全球最快超級電腦天河一號採用 Linux
[新進專案] 新進專案列表 11/08
□ 關於本報 □
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊
老薯條(http://vulscan.wynetech.com.tw)/文  2010/11/05

前言

相信曾經架設過網站(尤其是小有名氣的網站)的讀者,都曾有過這種不愉快的經驗,也不知道招誰惹誰了,常常在短時間內遭受到大量使用者的連線請求,如果網 站未做好適當的防護,常常就反應不及而當掉,此種的攻擊模式,稱為拒絕服務攻擊(Denial of service,簡稱為 D.o.S),在本文中,筆者將介紹 mod_evasive 模組,這是最有名的網站伺服器 apache 所支援的模組,主要功能即是用來阻檔拒絕服務攻擊。所需的套件如下:

Apache 2.2.16(官方網址為:http://httpd.apache.org/
mod_evasive(下載位址為:http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz

什麼是拒絕服務攻擊(Denial of service ,簡稱為 D.o.S)

如果我們將網路視為一條高速公路,車流量在短時間內大量的擁上公路,而由於先天的設計不良,當公路負荷不了時會讓所有的車輛卡在公路上而動彈不得。拒絕服 務攻擊即是使用類似的概念,由於通訊協定設計上的瑕疵,允許在短時間內可發出大量的封包來攻擊某個受害主機,直至該主機因無法有效處理而停擺。以下我們就 來說明拒絕服務攻擊的攻擊型式。

TearDrop

當封包資料在網路上傳輸時,會根據 MTU (Maximum Transmission Unit),來設定最大的切割長度並紀錄被切割封包的位移值 (Offset),當封包到達目地端後,目的主機利用位移值 (Offset) 來重組封包以復原資料。如下圖示:
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊

TearDrop 攻擊則是利用 IP 封包重組的漏洞。攻擊者先假造含有不正確位移值的封包,當這些封包到達目的主機後,可能會在重組的過程中,因為無法處理不正確的位移值 (Offset),而可能造成一些系統當機。
在 linux 系統下,讀者可利用 ifconfig 指令來查詢 MTU 資訊,如下圖示(每個片段會是 1500):
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊

Land 攻擊

在 TCP/IP 協定的定義中,IP 封包的來源位址可自行定義(不一定為有效位址,可假造任何的來源 IP),land 攻擊即是利用此種特性,利用 IP Spoofing(IP 欺騙)的技術,將 SYN 封包的來源位址與目的位址設定為相同位址。當目的位址接收到此類封包後根據 three-way handshake 動作,它會回應 SYN-ACK 封包給來源位址,由於來源位址與目的位址相同,所以受害主機會回應 ack 封包,而在受害主機上建立空連接。在大量的 land 攻擊下,會建立大量的空連接,將受害端主機的資源消耗殆盡。

SYN Flood 攻擊

TCP 採三向式握手 (three-way handshake) 以建立連線(如下圖示):

[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊


SYN Flood 攻擊即利用上述第三步驟,在接受目的端的 SYN-ACK 封包後,並不回應 ACK 封包來建立連線。如此可迫使受害者主機端需維護一份非常大的半連接列表,而被害主機將會因需耗費大量的主機資源來維護此份半連接列表。而可能造成受害者主 機因資源耗盡而中止服務。

利用 ICMP 封包的攻擊

ICMP (Internet Control Message Protocol) 是一種「錯誤偵測與回報機制」,主要目的在於偵測遠方主機是否存在。如我們常用的 ping 指令即是使用 ICMP 協定。如下圖示:(代表 10.4.1.254 仍是存活狀態)
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊

在每個網域中均會有一個廣播位址,在 linux 系統下可利用 ifconfig 取得相關資訊,如下圖示:
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊

我們 ping 廣播位址(如上圖的 10.4.1.255),則所有在網域中仍存活的主機均會回應給來源位址。如下圖所示:
[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊


由於 ICMP 強調的是「偵測」與「回報」,偵測只需送出少許的封包,而 ICMP 回報封包卻可能回覆大量的封包(如上例的廣播),利用 ICMP 通訊協定特性來攻擊,可分為下列幾種攻擊:

1.Smurf 攻擊

利 用廣播的特性,假造一個 ICMP 的封包(來源位址為受害者的 IP 位址),而目的位址為該網域的廣播位址。當該封包送往網域的廣播位址後(上例為 10.4.1.255),該網域所有仍存活的主機即會回應封包給 ICMP 封包的來源位址(受害者的 IP),即可能使受害者的 IP 在短時間內無法承受這麼大的網路流量而癱瘓掉。從另一角度來看,由於網域內充滿了回應的封包,也可能造成該網路擁塞的情況發生。此種攻擊可怕的地方,在於 可利用少量的網路封包(難以被網管人員察覺)即可瞬間創造出極大量的封包流。舉例來說,假設目標網段中有 200 台電腦,攻擊者只需要送出 10K bps 的 ICMP 封包流至該網段的廣播 (broadcast) 位址的,即可能瞬間產生高達 20 Mbps 的資料量回傳到受害者的主機上,即使受害者主機有再大的頻寬,Smurf 攻擊都可以輕易地耗盡這樣的頻寬資源。除此之外,由於此種攻擊手法是以 ICMP 通訊協定來完成,而 ICMP 通訊協定又常被大眾所忽略,也因此成為安全上的一大漏洞。

2.Ping of Death

根據 TCP/IP 的規範,一個封包的最大長度為 65536 位元組。但儘管一個封包的長度不能超過 65536 位元組,可是 TCP/IP 並未規範經切割 (Fragment) 後的封包,至目的機器重組時的長度不能超過 65536 位元組。Ping of Death 即是利用傳送超過 65536 位元組的 ICMP 封包至受害者主機;由於封包最大僅可容許 65536 位元組;當受害者主機接收並重組此超過 65536 位元組,即可能造成系統因無法處理此類封包而當機。上述的 D.o.S 攻擊都是用單一主機發送大量的偽造封包來攻擊受害者主機,因此很容易被發現並且單一機器效能不足,無法達到 D.o.S 的目標,所以在實務上均是採用 DDoS (Distributed Denial of Service) 攻擊,稱分散式阻絕服務攻擊。基本上,DDoS 攻擊是 DoS 攻擊方式的一種變形,它首先利用許多已知系統的安全漏洞或誘使系統管理者執行木馬程式等方式,來入侵系統並取得管理者權限後(此時被入侵主機即稱為 bot 主機),執行特定的程式,等待攻擊者的連線,當攻擊者攻克多台主機後,它會將這些被攻破的主機組成攻擊大軍,在同一時間同時攻擊某一台受害者主機。並造成 該主機無法正常運作。如下圖示:

[技術專欄] 以 mod_evasive 阻擋 D.o.S 攻擊


mod_evasive簡介

mod_evasive 是 apache 的 3rd party 模組,apache 官方並未提供相關的模組。
mod_evasive 主要的防治原理是利用一個 HASH TABLE 的資料結構來儲存相的 HTTP 要求 (Request),而後利用下列規則來決定是否要拒絕對方的連線。
*在一定的時間區間內,同一個來源的 IP 是否存取同一個頁面是否超過所設定的次數。(如設定同一個 IP 在同一個頁面中,5 秒內僅能存取 10 次,超過此次數時會拒絕該來源 IP 的連線)
*在一定的時間區間內,限制同一個來源的 IP 最大的 HTTP 存取數量。

由上述的說明,我們可以知道 mod_evasive 主要是利用限定來源的 HTTP 存取方式來避免遭受到拒絕服務攻擊。

安裝 mod_evasive

首先請讀者先行取得最新的 mod_evasive 原始碼(筆者取得的版本為 1.10.1),請至下列網址取得:

wget http://www.zdziarski.com/blog/wp-content/uploads/2010/02/mod_evasive_1.10.1.tar.gz

下 載並解壓縮後,編譯 mod_evasive 的過程很簡單(在這邊假設讀者已成功安裝了 apache 2.2.16 版本,安裝路徑為 /usr/local/apache22/),執行下列指令 /usr/local/apache22/bin/apxs -i -a -c mod_evasive20.c #以Apache的apxs 來編譯 apache 的模組,其中「-i」表示編譯完成後要直接安裝該模組,「-c」即為編譯。假如編譯成功會將 mod_evasive20 安裝到 /usr/local/apache22/modules 目錄,讀者可查看在 /usr/local/apache22/modules 目錄下是否有 mod_evasive20.so 檔案。接下來我們繼續來說明 mod_evasive 所提供的參數,說明如下:

*DOSHashTableSize
設定處理記憶體的大小,即是儲存 mod_evasive HASH 資料值的地方,DOSHashTableSize 的大小,需根據網站流量狀況來設定,數字越大表示處理越快,所以當網站流量越大,此值就需要越大。

*DOSPageCount
設 定在某個時間區段中,同一個來源 IP 存取同一個頁面的最大存取次數,假如在該時間區段中超過所設定的次數,mod_evasive 即會發出 403(Forbiden) 來中斷該來源 IP 的存取。時間區段的長短可以在 DOSPageInterval 中設定。

*DOSSiteCount
設 定在某個時間區段中,同一個來源 IP 可同時發出 HTTP 存取的最大次數,假如在該時間區段中超過所設定的次數,mod_evasive即會發出 403(Forbiden) 來中斷該來源 IP 的存取。時間區段的長短可以在 DOSSiteInterval 中設定。

*DOSPageInterval
設定 DOSPageCount 的時間區段,單位為秒,如果沒設定此值,預設為一秒。

*DOSSiteInterval
設定 DOSSiteCount 的時間區段,單位為秒,如果沒設定此值,預設為一秒。

*DOSBlockingPeriod
當發現有疑似攻擊(超過上述所設定的最大次數)時,需暫時停止對方存取的時間,如果沒設定此值,預設為 10 秒,在這段時間內,使用者會接收到 403 (Forbidden) 的訊息。

*DOSmailNotify
設定管理者的 Email 位址,當系統有疑似被攻擊時,即會寄發警告信至管理者的信箱中。

*DOSSystemCommand
當發現有疑似攻擊,即需自動執行的指令。Ex:DOSSystemCommand  “/bin/mail -t %s (%s指的是 DOSEmailNotify設定的email address)”

*DOSLogdir
設定 mod_evasive 的記錄檔位置,如果沒設定此值,預設存放 log 的目錄為 /tmp。當 mod_evasive 發現有疑似攻擊時,會在該目錄下新增一個 dos_[ip] 的檔案,讀者可查看目錄下的相關檔案即可得知攻擊的惡意來源 IP。


系統設定

在使用 mod_evasive 之前,我們必須先設定相關的設定在 /usr/local/apache22/conf/httpd.conf,新增下列相關參數 LoadModule evasive20_module   modules/mod_evasive20.so #設定使用 evasive20_module 的模組。

<ifmodule dosevasive22_module>
DOSHashTableSize 3097 
DOSPageCount 2      
DOSSiteCount 50
DOSPageInterval 1      
DOSSiteInterval 1
DOSBlockingPeriod 10
</ifmodule>
DOSmailNotify #設定當發現疑似攻擊時的,要寄發管理者的電子郵件信箱
DOSLogdir /tmp #設定LOG檔案儲存的目錄位置。在設定完成後,讀者利用 apachectl start 即可重新啟動 apache。
mod_evasive 提供了一支 test.pl 的測試程式,讀者可執行 perl test.pl 來測試 mod_evasive 是否有正常的運作(如果設定正常 perl.pl 會回傳 403 forbiden 等相關的訊息),mod_evasive 模組已經提供了充足的預防拒絕服務攻擊的機制。
[名家專欄] (商業炒作之前的)雲端簡史-SaaS 篇
洪朝貴/文  2010-10-28

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

雲 端並不是新技術,雲端技術始於 1969 年左右。購買昂貴的雲端方案之前,應先了解雲端技術的歷史,以免被過度的商業炒作給欺騙,不只花冤枉錢、浪費資訊人力,甚至還將自己單位的資料鎖入封閉的 雲端。本文簡介一些成熟、免費、自主的雲端 SaaS 方案,作為企業/學校/組織採購更昂貴雲端產品之前的實驗建議,並作為比較用的低標準。

Telnet 是最早的 SaaS (Software as a Service)。從 1969 年開始發展,在 1983 年最終版定稿。它等於是文字版的(VNC 下詳)。像我習於用文字瀏覽器 lynx 上網、用文字工具 mutt(過去用 pine 和 elm)收信、用文字編輯器 vim 編輯文書檔...等。對於我們這些習於使用文字工具完成絕大多數工作的人而言,telnet 就是不折不扣,將整個桌面的所有應用軟體放在遠端伺服器的最強大雲端工具。

有鑑於 telnet 安全性不足,Tatu Ylönen 在 1995 年研發了全程加密的 ssh。 到後面版本的 ssh 具有 X Forwarding 功能,甚至連雲端上執行的任何圖形介面應用軟體也可以傳回本地顯示,所以使用 ssh -X 連線的用戶,就是最早、最全面的 SaaS 用戶。時至今日,仍然沒有任何一項更新的雲端技術,在技術本質上超越 ssh -X;新的雲端技術唯一的差別是方便性與控制細節的多寡。例如:透過 ssh -X 編輯同一個文字檔,其實就是 wiki;古代的 write 與 talk 指令,其實就是最陽春的即時通(即時通當然也是 SaaS)。當然現在的 SaaS 發展出很多新的功能,例如:可以用部分取代微軟 Office 文書軟體的 wiki, 具有歷史記錄、版本比對、用戶自我註冊等額外功能。但是這並不表示 wiki 在技術本質上超越 ssh -X。任何可以用複雜雲端技術實現的功能,原則上也都可以寫一個「本地版」的應用軟體,再透過 ssh -X 將之雲端化,達到相同的效果。筆者認為:導入雲端運算最重大的意義,在於 web 2.0 共筆工作文化;但是如果貴單位並不特別在乎雲端技術在「工作文化」層面的重大優點,也不想處理「改變工作文化」的巨大挑戰,那麼用最簡單且免費的 ssh -X 來實現 SaaS 的雲端應用,除了省錢、省力之外,其實還有很多好處:

1.這是最成熟、應用軟體最豐富的 SaaS 雲端技術-每一套既有的應用軟體,都可以變成 ssh -X 所提供的 SaaS 服務,不必重新發明輪子
2.可以完全採用既有的、熟悉的檔案格式封存資料,對於資料的永久保存,有完整的自主性
3.很容易用簡單的 scripting 語言替既有的 SaaS 軟體擴充功能,甚至混搭 (mashup)
4.如果真的需要開發新應用,那麼既有的 API 就是 PaaS,程式設計師不必浪費時間學習未經網路大量測試且專屬於特定廠商的新 API

Ssh -X 的使用方式,對於各種版本的 Linux、BSD、Mac OSX...等作業系統的用戶,都很方便;但對於 Windows 用戶而言,則必須在本地機加裝 X Window Server(沒錯,在地端的是 X server;在雲端的才是 X client)-例如 Xming X Server。發展於 1999 年的 VNC 則可以直接讓 Windows、Linux、MacOS 用戶,不分作業系統,任意使用彼此的桌面(前題是,如果肯提供對方密碼的話)。若考慮安全性,應該透過 ssh tunnel 使用 VNC。也有一些 SaaS 應用架構於 VNC 之上,例如廣播教學工具 iTalc。至於從 Windows 上開始發展的類似功能,最早出現於 1998 年的 RDP

到了 www 時代,真正具有 web 2.0 文化及共創共享效果的 SaaS 雲端技術,除了 wiki 之外,最廣泛使用的便是 1990 年代末期出現的 Content Management Systems 了。 請拿這三個字加上「comparison」上網搜尋。諸如 Xoops、Joomla、Drupal...等,各自都提供了許多便利的雲端應用。還記得有一陣子「所有應用系統改採 web 化」的年代嗎?當初若採用這些現成的 SaaS 方案架設企業/組織的私有雲,不僅自主、省錢,而且:

1.無障礙、無歧視
2.若是對外的網頁,有助於網頁行銷
3.可用擴充套件(plugins 或 extensions)模組化地增加新功能
4.直接整合人事系統、採購系統、公告系統等系統,每位員工只需要單一帳號密碼(可用存取權限控管)
5.學一次,到處通用,不必叫員工學一大堆或使用習慣不同的系統

請參觀一下世界各地採用上述 CMS 的知名網站(可以用「Joomla sites」搜尋到使用 Joomla 的成功案例),再對照一下採用昂貴複雜專屬軟體、耗費大量人力所製作出來的「自殘網站」-例如:造成敝校無法處理的內傷的公文線上簽核系統、造成全國各大學資訊教授對於資訊安全漏洞避不敢談的「指定特定版本 IE」的校內網站。對於 2002 年左右(xoops 等系統逐漸成熟時)之後所開發的 web 系統而言,如果當初選擇開發工具時,能夠放下非理性的品牌忠誠度,改用上述的 CMS 取代昂貴複雜的專屬工具,今天就不至於在 IE 市佔率逐漸下滑的背景之下,被迫持續拋售自身點閱率,犧牲自己拯救微軟了。以歷史為殷鑑,您可以了解:為什麼真正懂技術、懂得 SEO 的人,要採用這些自由軟體架設 SaaS 雲端服務。免費,只是一個給外行人看的最淺顯的優點而已。

在商業炒作之前,早就已經廣泛使用的其他重要雲端工具還有很多,例如:

1.檔案分享:Sun 於 1984 年開始研發的 nfs、微軟 1990 年代修改自 IBM 所研發的 smb(就是網路芳鄰,不過無法跨網域,算是不太及格的雲端產品)
2.收發信件:各家 web mail 提供的服務
3.文件編輯:各家 wiki 提供的服務、google doc、...
4.線上地圖、線上翻譯、線上相簿、...

上 述 SaaS 的雲端配置,每一種都支援所有作業系統的客戶端 (client)。也就是說,不論用戶使用 windows、linux、MacOS,都可使用上述雲端服務。為什麼這一點很重要?理由和上述的 web 化歷史很像:雖然今天多數人用的是 windows,但沒有人敢說五年後的主流作業系統是什麼。隨著微軟潰堤的勢態越來越明顯,最聰明的做法既不是直接丟棄 windows,更不是完全忽略其他作業系統,而是照顧所有作業系統的客戶端。這樣的雲端方案,將有助於組織/企業本身緩步擺脫「內建不尊重用戶的盜版警察」的作業系統,將有助於台灣與國際潮流接軌。

此外,上述 SaaS 的雲端配置,多數都可以找到自由軟體的伺服器端 (server) 工具。(其中大概只有線上地圖很難用自由軟體方案取代;至於用 wiki 取代 google doc 則需要犧牲一點排版美觀。)就連微軟的 rdp,也有 xrdp 伺服器端方案。為什麼這一點很重要?因為專屬的雲端方案,會遇到複雜昂貴的連線人數授權計價問題;而自由軟體則完全沒有這個問題。是有些自由軟體的雲端廠商,也會收取服務費用;但你可以確定的是,售權費這部分一定省下來。如果要花錢使用他人架設的雲端服務,錢應該花在可擴充性 (scalability) 與穩固性 (reliability) 上面,而不應該花在購買新的軟體上面。

最 後,近年來才開始流行的社交工具:twitter、plurk、facebook,這些也都是 SaaS 雲端。從這些工具的特性,或許你可以看出文章中不斷重複的這句話的意思:雲端的重點在於改變工作文化,而不在於導入複雜昂貴的工具。從來沒考慮過如何使用 這些工具(或更古老的工具-blog)行銷自身的單位,真的可以不必花冤枉錢盲目追逐雲端熱潮。

本文所介紹的 SaaS 雲端方案,並不是唯一的、也不見得是最好的、最適合貴單位的方案;本文的用意也不在於否定所有「收費的公有雲端訂用服務」或「收費的私有雲端架設服務」。 那麼為什麼應該要求您的資訊人員認識並深度分析這些既有免費方案?因為這可以作為導入雲端的低成本實驗,更可以作為採購昂貴方案之前,拿來比較的低標準。 如果廠商(不論是小廠商,或是雲端資歷不佳的跨國大廠都一樣)所推銷的雲端方案並沒有比這些方案強很多,但卻貴很多,又需要學習很多專屬系統的封閉技術, 那麼消費者就應該提高警覺了。這時,您或許更能理解筆者為什麼會認為政府所推動的「百億雲端 兆元產值」有相當大的成份其實是砸大錢又傷害國家競爭力的過度商業炒作。
[源碼密技] 瀏覽器即為作業系統-CorneliOS
翁卓立 /文  2010-10-28

前言

許多人都知道,電腦的開機過程是先經由 BIOS 進行基本的檢測,再將控制權交給開機啟動程式 (Boot Loader),以便載入作業系統。作業系統一旦載入記憶體並開始執行,便表示作業系統將會持續執行,負責所有軟硬體相關的工作,直到系統關機為止。多年 以來這樣的操作模式已經成為眾人使用電腦的基本模式,大多數人也相當習慣這樣的執行方式。

官方網站:http://www.cornelios.org/
下載網址:http://ncu.dl.sourceforge.net/project/cornelios/CorneliOS/CorneliOS 0.9.9r21/cornelios_gpl_9J2120.zip (34.7MB)

時 間回到 2008 年 9 月,當時搜尋引擎的巨擘 Google 公司推出 Google Chrome 瀏覽器,並吸引所有資訊相關媒體的目光焦點。當時許多人都在猜測,Google 的下一步會不會是推出作全新的作業系統,與微軟公司的 Windows 作業系統一較高下。但當年仍然是 Google 大中華區總裁的李開復先生便明確表示,Google 並沒有研發作業系統的計畫,因為如果將所有的服務改由雲端服務提供,瀏覽器便會取代作業系統。也就是說,「瀏覽器就是未來的作業系統」。

多 年下來 Google 的確推出許多以網路為主的服務,包括電子郵件、文書處理、行事曆等眾人皆知的服務,一律可以直接由瀏覽器執行。雖然目前大多數的電腦都需要先行開機才能以 瀏覽器執行這些服務,但從以上的使用經驗看來,如果可以設計一套電腦系統,一開機便直接執行瀏覽器作為操作介面,理論上是可以達到以瀏覽器作為作業系統的 目的。除了可以從 Google 所提供的服務驗證這樣的可能性以外,網路上也有一些軟體系統朝著相同的目標邁進,也就是讓瀏覽器成為下一代的作業系統。例如本文所要介紹的 CorneliOS 便是最好的例子。

[源碼密技] 瀏覽器即為作業系統-CorneliOS
CorneliOS 的操作介面

以瀏覽器為主要操作介面的 CorneliOS

CorneliOS 本身是一套相當容易使用的網頁桌面環境,也可以作為網頁作業系統使用,或是當成網頁文書處理平台。之所以可以使用這些不同的名詞稱呼 CorneliOS,是因為 CorneliOS 本身便是以網頁型態設計的操作介面,也可以視為全新的作業系統平台。CorneliOS 本身可以在大多數的瀏覽器軟體中執行,跨瀏覽器的特性也讓 CorneliOS 更加開放,無論原先使用何種作業系統的使用者,都能快速上手使用。再加上 CorneliOS 內建許多日常生活中經常需要使用的工具軟體與應用程式,也可以讓導入 CorneliOS 的過程更加順利。系統本身已經提供各種領域的工具程式,使用者自然不需要擔心在使用新系統之後,還需要另外尋找工具才能進行日常工作的處理。

[源碼密技] 瀏覽器即為作業系統-CorneliOS
CorneliOS 內建許多基本的應用程式

除 了提供工具程式與基本的應用軟體之外,CorneliOS 最值得注意的一點,是本身還內建一套完整的內容管理系統 (Content Management system ; CMS)。由於大多數的 CMS 系統都是以資料庫系統作為後端資料庫,再使用瀏覽器作為操作介面,因此也一樣使用瀏覽器作為操作介面的 CorneliOS,自然是內建 CMS 的最佳平台。有了內建 CMS 的功能,使用者便可以輕鬆的設定與管理自己所擁有的網站,甚至連同後端的資料庫管理系統也能相當方便的進行管理。此資料庫管理系統也可以幫助使用者在系統 中快速的建立任何採用資料系統的應用程式,以便讓資料庫管理系統的功效發揮到最大。

採用雙授權模式

如同前文所述,CorneliOS 是一套以網頁介面為基礎的作業系統,亦可稱為網頁作業系統 (WebOS)。像 CorneliOS 此一類型的作業系統,除了操作介面主要使用瀏覽器以外,另外一個特色是所有的應用程式與檔案,都會儲存在 CorneliOS 的主機端,且允許使用者可以在任何時間、任意地點直接存取這些檔案或是應用程式。如果將 CorneliOS 的安裝過程以較為簡化的方式加以說明,可以將 CorneliOS 想像成一套在網頁伺服器之中執行的軟體系統,如果常見的網頁應用服務一般。只是與這些網頁系統較為不同的是,CorneliOS 會在網頁伺服器的安裝目錄下建立一些系統目錄與檔案,例如 UNIX/Linux 系統常見的 /bin、/var 等目錄,並且提供各種常用的應用程式。基本上 CorneliOS 並不會特別在意網頁伺服器的種類或是版本,大多數常見的網頁伺服器平台,都能進行 CorneliOS 的安裝作業。

至於與使用者較為相關的客戶端,則是相容於大多數主要的瀏覽器軟體。無論是 IE、Firefox 或是 Google Chrome,都能作為 CorneliOS 的客戶端軟體使用。而在軟體授權方面,CorneliOS 則是同時提供二種授權方式。一種是基於 GPL 授權的開放原始碼方式,另一種則是以商業軟體的方式釋出。無論是何種授權方式,目前都已經有使用者採用。此外,雙授權模式的運作辦法,也讓打算採用 CorneliOS 的使用者,擁有更多的選擇性。

多重使用者的作業系統

與目前大多數主流的作業系統相同,CorneliOS 本身也是一套多重使用者的作業系統。也就是說,只要安裝一套 CorneliOS 的系統在伺服器端,所有的使用者都能在此系統中擁有一個自己的帳號。除了可以擁有個別的帳號與密碼之外,每一個使用者都可以有自己的使用者目錄 (Home Directory),並且擁有自己的桌面外觀與不同的工作區域。

[源碼密技] 瀏覽器即為作業系統-CorneliOS
CorneliOS 本身是以多重使用者的方式進行設計

而 為了要讓在 CorneliOS 系統可以達到共享與保護系統上所有目錄與檔案的目的,CorneliOS 使用了虛擬檔案系統 (Virtual File System) 的概念,並提供許多進階的功能與特色。例如檔案本身的存取控制,還有自動備份等機制,在日常的使用上會是非常方便的功能。

CorneliOS 的應用程式

已經內建許多應用程式的 CorneliOS,可以提供不少基本的軟體功能,讓大多數的使用者可以在安裝完作業系統後,可以立即使用這些軟體進行所需要處理的作業事項。在 CorneliOS 系統之中,所有的應用程式基本上都可以視為是一個小型的網站,且所有的應用程式都是使用 CorneliOS CORA 開發框架 (Framework) 所開發而成。除了使用了 CorneliOS CORA 開發框架以外,應用程式本身也可能會使用其他的 CorneliOS 技術。例如 CornelioSCRIPT 可以作為基本的描述語言使用,而擴展式的 HTML 標籤,則是提供了更多的網頁變化性,進而讓 CorneliOS 的應用程式呈現更多元化的執行樣式。雖然在 CorneliOS 系統上開發應用程式,可能需要額外學習一些程式語法或相關技術,但事實上開發 CorneliOS 的應用程式並不如想像中的困難。相反的,在 CorneliOS 系統中開發應用程式會是相當簡單的過程,具有程式設計的基本能力,即可自行開發。

[源碼密技] 瀏覽器即為作業系統-CorneliOS
CorneliOS 提供 CORA 開發框架作為應用程式開發平台

除 了使用 CorneliOS 本身所提供的應用程式以外,基本上使用者也可以利用 CorneliOS 作為應用程式的開發平台,以便建立自己獨有的網站應用程式,或是作為社群平台使用。CorneliOS 本身內建一套名為 CIOS 的開發框架,可以讓使用者快速並且相當容易的建立一套社群系統專案,而且採用此種方式所建立的社群系統也可以是功能相當多元化的使用環境,不會因為採用的 開發方法較為簡單,而無法建立相對而言較為複雜的系統。

CorneliOS 本身是以相當完善的方式開發而成,軟體開發過程主要使用的是 Scrum 方式,以及軟體工程方法學之中的極限編程 (Extreme Programming) 技巧。除了使用的開發方式相當先進以外,CorneliOS 中大多數的程式或模組都經過相當程度的測試,因此在軟體品質上並不會有太多問題。只不過目前 CorneliOS 的軟體是以「開發者預覽」 (Developer Preview TWO ; DP2) 的方式散佈,而且多半是處於 Alpha 或 Beta 階段,因此並不太建議在重要環境中使用,也不太適合直接提供給一般使用者使用。

CorneliOS 的內容管理系統

內容管理系統可以說是 CorneliOS 的一大重點特色,因為一般而言內容管理系統都是以獨立運作的形式存在,很少與作業系統共同結合。但因為 CorneliOS 並不希望只是提供基本的作業環境平台,而是希望提供更多實際上的應用環境,以便讓使用者有更好的操作環境,所以將內容管理系統整合在一起,也可以因此而減 少使用者在選擇與安裝軟體時的時間浪費。

[源碼密技] 瀏覽器即為作業系統-CorneliOS
CorneliOS 的內容管理系統允許使用者建立任意數量的子網站系統

CorneliOS 的內容管理系統在操作上相當簡單,可以讓使用者在系統中建立任意數量的小型網站,並以相當容易使用的網頁介面進行設定與管理等工作。除了在設定與管理方面 有許多方便的工具與介面可以使用以外,CorneliOS 的內容管理系統也可以讓使用者以樹狀顯示方式檢視網站內容,或是以 FTP 方式進行網站內容的存取。而支援 SQL 語言的網站應用程式,則可以讓使用者建立各種不同的子網站。例如新聞公佈網站、線上論壇,或是個人的部落格等等。基本上在使用方式上並沒有硬性規定應該如 何使用,大多數的網站應用都能以此系統進行架設。

結語

網頁瀏覽器的地位日益重要,除了日常的網頁瀏覽以外,也開始有軟體開發者利用網頁介面作為作業系統使用。也許現今使用網頁介面作為作業系統還是比較新穎的觀念,也不見得可以提供足以取代現有作業系統的平台。但相信在不久的將來,還是可以見到更多這種革命性的作業系統出現。

作者簡介

翁卓立
逢甲大學資訊工程學系、台灣科技大學電子所畢業,目前擔任韌體研發工作,主要使用 Embedded Linux 進行產品開發。著有「Linux 進化特區:Ubuntu 10.04 從入門到精通」等書。
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
陳瑞霖、李婉婷/文  2010-11-04

本年度的 10/23 為中研院一年一度的 Open House 開放參觀日,筆者亦於是日協助推廣 Open Source 方面的使用知識,並為此著手製作大富翁遊戲測驗為參觀民眾說明。於是本期電子報的「用自由軟體 Scribus 來輸出文件(2)」,推出特別篇,以大富翁棋盤的製作為範例,教導大家如何用 Scribus 編輯框格形狀,以及利用旋轉、鎖住、群組、參考線、圖層等功能來編排更為出色的框格海報。

新建檔案

大富翁棋盤的尺寸為 20 英寸乘以 20 英寸的正方形。選擇【目錄】的【新建】,在【新建】檔案對話視窗中,依照下列步驟操作:
1. 尺寸選擇自定。
2. 預設單位選擇英寸 (in)。
3. 頁面大小的寬度選擇 20,高度選擇 20。
4. 頁面邊緣參考線左右上下都選擇 0.5 in。(圖 1)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 1

選擇背景

我們要將正方形版面新增有顏色的背景,透過〔插入形狀〕達成。(圖 2)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 2

**除了長方形形狀外,按下〔插入形狀〕按鈕的下拉選單還可以新增其他形狀。(圖 3)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 3
把形狀大小拖放到符合整個頁面大小,接著按右鍵點選【屬性】,在最下面的【顏色】選項,選擇填滿的顏色為 Aquamarine2,透明度 Shade 40% 。(圖 4)
**注意,要選擇填滿色彩而不是線條色彩。
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 4

**如果覺得用滑鼠拖不出想要的大小,可以嘗試利用屬性視窗中的第一項功能【X, Y, Z】,直接輸入想要的寬度及高度數值(圖 5)。另外在【屬性】對話視窗中也可以調整新增形狀如何對齊,輸入形狀在頁面上的 X-座標及 Y-座標,以及維持圖形的寬高比。
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 5

使用參考線

前面新增檔案時邊緣留了 0.5 英寸的空間,而大富翁每格高 2.5 英寸。為了接下來操作的便利,我們在這邊先介紹參考線的使用。

**請先把背景圖層改為隱形(在【視窗】的【圖層】中的〔眼睛〕打勾取消),不然會看不到之後新增的參考線。

選擇【頁面】的【管理參考線】。(圖 6)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 6

我們要新增水平參考線以及垂直參考線各四條,座標分別為 0.5 in、19.5 in、3.0 in、17.0 in。
1. 在水平參考線這部分先按〔增加〕。
2. 選擇參考線的位置,輸入 0.5 in 這條,然後在白色框格內任意處按一下。接續增加 19.5 in、3.0 in、17.0 in 這 3 條參考線。
**一般軟體的習慣是數值設定好在新增,但在 Scribus 中是反過來的,要先增再設定數值。
3. 垂直參考線的新增,可按照步驟 1. 2. 方法新增。
4. 按〔確定〕。(圖 7)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 7
**可以在右邊的預覽視窗中,看到新增的參考線在頁面上的相對位置。

新增完後可以看到頁面上的參考線,總共八條。(圖 8)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 8

製作大富翁的格子
我們在這邊要用插入表格及文字方塊的方式製作大富翁的格子。除了插入表格及文字方塊外,還會用到【群組】及【鎖定】功能。

1. 先新增圖層,按【視窗】->【圖層】,跳出圖層對話視窗。
2. 在新增的圖層名稱上點兩下,將新的圖層命名為「格子」。(詳細圖層說明後面還會做介紹。)(圖 9)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 9


大富翁四個角的格子,大小為 2.5 英寸乘以 2.5 英寸方塊,所以我們可以按〔插入文字框〕按鈕 ,新增一個 2.5 英寸乘以 2.5 英寸大小的文字方塊。(圖 10)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 10
**假如拖曳不出想要的大小,可以參考前面的敘述,直接在〔屬性〕對話視窗,填入適當的數值制定想要的大小。

參考線的用意就是可以在排版的時候方便精準的讓頁面上的物件對齊頁面上的某一條線,讓頁面看起來更整齊美觀。現在要讓參考線發揮作用了,選擇【頁面】->【吸附到參考線】。(圖 11)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 11


現在就可以讓文字方塊輕易對齊參考線,而不是純粹拿來「參考」用。(圖 12)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 12


接下來要製作棋盤每邊的格子,按下〔新增表格〕按鈕,填入行列數分別為為 1 行 5 列。(圖 13)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 13


在正方形下方的邊拉出要規劃的範圍(此處仍可利用【屬性】調整邊框大小)。

新增好表格後,按住 Shift 鍵選擇角落的文字方塊與剛剛新增的表格,在選取好後,選擇【物件】->【群組】,將文字方格與表格群組(圖 14)。
** 按住 Shift 鍵後用滑鼠就可以點選數個物件。
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 14

進入【屬性】對話視窗的【線條】,選擇 2 pt 寬的實心線條,線條顏色選黑色。(圖 15)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 15

將群組好的文字方格與表格移到先前設的 17.0 in 水平參考線位置,快移到參考線時有沒有被吸到?我們可以透過參考線讓頁面上的物件排好,像是對齊某條線。是不是見識到參考線的威力了呢?

**也許會覺得奇怪,怎麼有些格子的框線沒有顯示,別擔心,等到解除群組所有的方格就會出現框線了。
**也可以透過新增形狀方式製作格子,但要調整較多選項,製作較麻煩。

物件的複製與旋轉

做完一邊框格以後,想必大家都知道只要做了一邊其他三邊以複製方式製作一模一樣的邊框格,之後用旋轉的方式完成,因此接下來要介紹旋轉的功能。

複製完成後,複製的物件是在原來的邊框格上,只要把複製出來的表格移到想要的位子即可。(圖 16)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 16

從【視窗】開啟【屬性】的【X, Y, Z】。前面介紹過座標和大小的調整,在同一個地方有座標旋轉的功能。將剛剛複製好的表格,旋轉 90 度、180 度、270 度,這樣四邊的框格就完成了。(圖 17)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 17

除了調角度外,你還可以選擇旋轉的基準點。(圖 18)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 18

利用前面的方法,將剩下 2 邊完成。(圖 19)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 19
新增色塊

在其中一邊新增色塊,選擇〔插入形狀〕,寬度要兩格寬,高度選 0.7 in。(圖 20)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 20

新增另一塊色塊。(圖 21)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 21

利用前面的方法,複製另外三邊的色塊。色塊的顏色,一樣在【屬性】->【顏色】做調整,就不在此贅述。(圖 22)
[源碼密技] 用自由軟體 Scribus 來輸出文件(2)-製作大富翁棋盤
▲圖 22

現在色塊蓋過格子的
轉寄『第 161 期 以 mod_evasive 阻擋 D.o.S 攻擊』這期電子報

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

  • 社群留言
  • 留言報主