關於本報

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

近期電子報


訂閱便利貼


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

自由軟體鑄造場電子報
發報時間: 2011-01-12 16:00:00 / 報主:OSSF
[公益聯播]捐款芳名錄
本期目錄
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
[源碼秘技] GoAccess,一個 Apache Log 的程式分析
[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
[源碼報報] 俄羅斯總理簽署政令 政府機構改用開放源碼
[源碼報報] 微軟、Apple、EMC、Oracle 共同買下 Novell 專利
[源碼報報] KDE、文件基金會加入開放創造網路
[源碼報報] MapQuest 在美推出基於 OpenStreetMap 的地圖服務
[源碼報報] MPL 改版草稿 Beta 版初試啼聲
[源碼報報] Google 開啟 OSPO 開源影片匯集大門
[接案/工作] 自由軟體鑄造場誠徵活動企劃及業務推廣專員
[非商業廣告] 【Linux 教育應用交流分享座談會】即日起開放報名!
[新進專案] 新進專案列表 01/10
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
老薯條(http://vulscan.wynetech.com.tw)/文

前言


即時通訊軟體 (Instant Messenger) 的出現,改變了人們溝通的方式,彈指之間,即可將相關訊息傳遞至遠方。但資訊安全往往與便利性相扞格。越便利的使用即代表發生資安危機的機率越高。如過去曾發生某知名大企業內的員工利用即時通訊軟體將企業內的研發機密洩漏給競爭對手,而造成企業極大的損失(目前一般企業還是著重在電子郵件的審查,對於即時通訊的控管倒不是那麼注重)。鑑於即時通訊軟體所衍生的問題,現在一般企業也越來越注重相關問題,而利用內部行政手段(如明令禁止或道德勸說)等方式來防堵即時通訊軟體的使用,有些公司甚至會購買即時通訊側錄軟體來監控即時通訊軟體的使用。但其實一套即時通訊側錄設備的價格並不是那麼親民,也不是每個企業都能負擔的起。因此在本期中,筆者將介紹開源碼社群中的相關解決方案-IMSpector,在本文中即是使用 IMSpector 解決方案來實作一即時通訊側錄解決方案。本解決方案希望能達到下列功能:

*可記錄即時通訊軟體交談的訊息
*可禁止即時通訊軟體使用傳遞檔案功能
*可過濾即時通訊軟體訊息內容,當出現敏感的關鍵字時,能即時的過濾

本次解決方案將使用下列開源碼軟體

軟體名稱 說明 官方網址
Fedora 11 作業系統 http://fedoraproject.org/
Imspector 即時通訊系統過濾軟體 http://www.imspector.org
▲ 表一


什麼是 P2P (peer-to-peer)


以分享的觀點來看,P2P 可說是天生的分享架構。在 P2P 架構中,如下圖示:
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖一

沒有所謂的用戶端或伺服器的角色,只有平等的同級節點 (Node),各節點可充當用戶端和伺服器等角色。P2P 架構一個最重要的特色即為在架構中的各個節點 (Node) 都能同時提供資源(以檔案下載為例,在 P2P 的架構中有越多人加入,下載的速度就越快,因為加入的節點 (Node) 均會貢獻自己的上傳頻寬),這與傳統的「伺服器端-用戶端」(Client-Server) 的架構不同(傳統的架構是越多人下載,速度就越慢,因為伺服器的負擔就越重)。

什麼是 IMSpector


IMSpector 是一種即時通訊 (Instant Messenger) 側錄軟體,通常安裝在閘道器 (gateway) 上,側錄來往即時通訊軟體的訊息。除了可側錄通訊雙方的通話內容外,IMSpector 並提供關鍵字過濾功能(一旦通話內容含有所設定的關鍵字即會自動攔截並封鎖)及 ACL(Access control list,可用來設定可通訊的用戶對象)及禁止傳遞檔案的功能,據官方網站的說明 IMSpector 可支援下列即時通訊的軟體:

1.MSN:這是微軟所開發維護的即時通訊軟體,也是目前應用最廣泛的即時通訊軟體
2.Jabber/XMPP(eXtensible Messaging and Presence Protocol,前身為 Jabber):是一種以 XML 為基礎的開放式即時通訊協定,XMPP 主要的關鍵特色在於分散式的即時通訊架構,以及使用XML 串流。目前以 Google Talk 為代表性軟體
3.AIM (AOL Instant Messenger):是一個由 AOL 以廣告收入來支持的個人即時通訊軟體
4.ICQ:意近英文「I seek you(我找你)」,為最早出現的即時通訊軟體之一
5.Yahoo! Messenger:由雅虎 (Yahoo) 開發維護的即時通訊軟體
6.IRC (Internet Relay Chat):網路聊天室,為最早期的即時通訊軟體


安裝 IMSpector


在本解決方案中,我們需將把 IMSpector 裝在閘道器 (gateway) 上,以記錄來往的即時通訊封包,架構圖如下:
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖二
在此我們將會先利用 iptables 建立 NAT(Net Address Translation) 來實作閘道器功能,並將 IMSpector 軟體安裝在此主機上。

1.建立 NAT 主機
在這邊不多加說明 NAT 的原理,請讀者自行參閱相關文件說明。
請依序下達下列指令:

echo "1">/proc/sys/net/ipv4/ip_forward   #開啟主機 ip forward 功能,否則將無法正常的連線

iptables -t nat -A POSTROUTING -o XXX.XXX.XXX.XXX -s 192.168.1.0/24  -j MASQUERADE

(利用 MASQUERADE 功能設定 NAT 功能,在本例中,對外實際 IP 為 XXX.XXX.XXX.XXX,並允許 192.168.1.0 網域的內部主機均能以此真實 IP 上網。請讀者自行依據本身環境自行調整。在設定完成後,讀者可將內部主機的閘道器 (gateway) 指向此台主機,如果可正常上網即表示設定正確。)

2.安裝 IMSpector

即請讀者至 http://www.imspector.org 取得最新版本(截至目前為止,筆者取得的版本為 0.9,解開後請執行下列指令進行編譯與安裝)
make                      #編譯相關軟體
make install              #將相關的檔案安裝至系統上

在安裝完成後,接下來說明 IMSpector 相關的檔案及目錄。如下表所示:

檔名 說明
/usr/etc
/imspector/
imspector.conf
IMSpector 主要設定檔
/usr/etc
/imspector/
badwords.txt
惡意關鍵字列表,凡是在通話內容中含有此檔案所設定的惡意關鍵字,即會被攔截。如在此檔設定「機密」,凡是在通話中有談到機密即會被封鎖
/usr/etc
/imspector/ acl.txt
ACL 表,通訊對象控制列表,可在此檔案加上允許通訊或禁止通訊的對象相關格式如下: [allow|deny]  id1 id2….  允許或禁止與某個用戶通訊,如  allow admin@company.com(即是允許與 admin@company.com 通訊)  [allow|deny]  all  允許或禁止與所有的用戶通訊
/usr/lib/imspector/ 放置 IMSpector 相關的程式庫,如下所示: /usr/lib/imspector/*protocolplugin.so  (為解析相關即時通訊軟體的程式庫)  /usr/lib/imspector/*loggingplugin.so  (為記錄相關即時通訊軟體通訊內容的程式庫)  /usr/lib/imspector/*filterplugin.so  (為過濾相關即時通訊軟體通訊內容的程式庫)
▲ 表二

在完成 IMSpector 安裝後,即可先設定 imspector.conf 中的一般功能參數,如下表示:

參數 說明
port=16667 IMSpector 啟動時,所使用的埠,預設為 16667
log_typing_events=on 設定要記錄交談的訊息
user=root           
group=root
IMSpector 運作時所使用的權限,在本例僅為實驗需要而使用 root 帳號,在實際上線時,建議讀者使用其它一般帳號。
plugin_dir=/usr/lib/imspector 設定 IMSpector 程式庫的所在位置
icq_protocol=on 
irc_protocol=on 
msn_protocol=on 
yahoo_protocol=on  gg_protocol=on  jabber_protocol=on
開啟 IMSpector 所支援的即時通訊協定
▲ 表三

由於 IMSpector 運作在 16667 埠,但即時通訊軟體所使用的埠未必是 16667 埠,因此我們需要將即時通訊所使用的埠,利用 iptables 轉埠到 IMSpector 所服務的埠以供 IMSpector 記錄,請讀者下達如下的指令:

iptables -t nat -A PREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667
(將送往 MSN 服務埠的資料,轉向到 16667 埠,以供記錄)

iptables -t nat -A PREROUTING -p tcp --destination-port 5050 -j REDIRECT --to-ports 16667
(將送往 YAHOO MESSAGER 服務埠的資料,轉向到 16667 埠,以供記錄)

iptables -t nat -A PREROUTING -p tcp --destination-port 6667 -j REDIRECT --to-ports 16667
(將送往 IRC 服務埠的資料,轉向到 16667 埠,以供記錄)

iptables -t nat -A PREROUTING -p tcp --destination-port 5222 -j REDIRECT --to-ports 16667
(將送往 Jabber/XMPP 服務埠的資料,轉向到 16667 埠,以供記錄)

iptables -t nat -A PREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667
(將送往 ICQ/AIM 服務埠的資料,轉向到 16667 埠,以供記錄)

iptables -t nat -A PREROUTING -p tcp --destination-port 8074 -j REDIRECT --to-ports 16667
(將送往 Gadu-Gadu 服務埠的資料,轉向到 16667 埠,以供記錄)


3.啟動 IMSpector

在設定完成後,即可啟動 IMSpector,如下指令:

imspector -c /usr/etc/imspector/imspector.conf

您可以加上 -d 參數(除錯模式,會將所有的記錄訊息顥示在營幕上)
在啟動後,可利用 netstat –an | grep 16667,驗證 IMSpector 是否有正常運作(檢查 16667 埠是否在 LISTEN 狀態,如果在 LISTEN 狀態即表示 IMSpector 已啟動成功(正在 16667 埠服務),如下圖示:
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖三

接下來,我們將以微軟的 MSN 軟體為例來測試相關的功能,我們將測試下列情況:
1.記錄 MSN 交談訊息
2.設定關鍵字過濾,一旦發現 MSN 交談的訊息含有關鍵字即封鎖
3.設定 ACL 控制以限制 MSN 所能連接的對象
4.其它功能(禁止傳檔)


以檔案記錄 MSN 交談訊息


請讀者按照下列步驟實作:
1.用戶端主機需將預設閘道 (gateway) 指向 IMSpector 所在的主機
2.利用 MSN 與遠方友人通訊完後,在 /var/log/imspector 下即會記錄相互交談的記錄,
目錄的排列格式如下:

{protocol}/{local id}/{remote id}/{year}-{month}-{day}

其中 protocol 為所使用的通協協定,在本例即為 MSN
Localid:為本地端的用戶帳號
Remoteid:為通訊對方的用戶帳號
yy-mm-dd:記錄的訊息以通訊日期為檔名
如與遠方的 badabge 連絡,目錄名稱即為 /MSN/johnwu/badabge/,相關的記錄檔即會置於此目錄下

記錄檔名稱即為 yyyy-mm-dd
記錄的訊息格式(以 csv 格式區分各欄位)如下圖示:
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖四

格式說明如下:

(1)ip:port :用戶端的主機 IP 及埠
(2)UNIX 格式的主機時間
(3)1:表示發出的訊息 0:表示接收到的訊息
(4)事件型態:   
1:表示傳送文字訊息
2:表示正在傳輸檔案
3:表示使用者正在輸入文字
4:表示使用者使用 WEBCAM
(5)0:表示此訊息沒有被過濾掉,1:表示此訊息已被過濾
(6)訊息的種類,通常如果有設定過濾惡意字功能,當訊息內容含有惡意關鍵字時,會在此欄位填上 badword 等種類字串。否則在一般的情況下,此欄位會為空。
(7)當使用檔案傳輸時,傳輸的檔名及長度會寫入此欄位
(8)側錄到的交談內容(如上例的 test,中文測試等字串)

設定惡意字串,以過濾惡意的即時通訊內容


1.設定/usr/etc/imspector/imspector.conf如下的參數

badwords_filename=/usr/etc/imspector/badwords.txt
(存放惡意字列表的檔案,您可將欲過濾的惡意字存放至此檔案)

badwords_replace_character=* 
(當惡意字出現時,可用來取代的文字)

badwords_block_count=1
(當惡意字出現的次數達到此設定值時即封鎖訊息,不然即僅置換惡意字,如上例為,即使只出現一次欲過濾的惡意字也會封鎖)

filtered_response=The message or action was blocked
(當訊息被封鎖時,顯示給使用者的文字訊息)

2.設定 /usr/etc/imspector/badwords.txt,將「豬頭」加入到此檔案中
3.利用 MSN 與好友談天,假如內容含有惡意字,即會出現如下圖的警示訊息
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖五


設定 ACL 以限制 MSN 所能連接的對象


1.設定 /usr/etc/imspector/imspector.conf 如下的參數
acl_filename=/usr/etc/imspector/acl.txt #可限定可通訊的對象
acl.txt 格式如下:

prefix:參數
prfix:有 deny(拒絕)及 allow(允許)兩種選項
參數:有 all(指所有的用戶)或個別的用戶
如 deny all(即拒絕所有用戶的連接),一般我們會使用「正面表列」或「負面表列」的方式來設定。

如正面表列(原則禁止,例外通行。即只允許與特定對象通訊,其餘一概禁止。)
allow student@hotmail.com.tw(允許連接的用戶名稱)
allow student1@hotmail.com.tw(允許連接的用戶名稱)
deny all    #禁止所有的通訊

負面表列(原則通行,例外禁止。即不允許與特定對象通訊。)
deny forbid@hotmail.com   #禁止連接用戶名稱
allow all                  #允許所有的通訊

在設定完成後,如果利用 MSN 去連接被禁止的用戶,將會出現如下圖示的警示文字訊息。
[源碼秘技] 以 IMSpector 側錄即時通訊軟體
▲ 圖六


設定 ACL 以限制 MSN 所能連接的對象


在 /usr/etc/imspector/imspector.conf 設定如下的參數
block_files=on   #禁止即時通訊軟體傳檔的功能

設定完成後,使用者即無法使用檔案傳輸的功能


結論


在本解決方案中,筆者僅簡單的介紹以檔案方式儲存相關的通訊內容。而在 IMSpector 中也有提供以資料庫(支援 MySQL,PostgreSQL)來儲存相關的通訊內容,以供側錄資料能更有效的被運用。從另一個角度思考,也許讀者可結合前期筆者所介紹的 Logfmon(偵測檔案異動軟體),而實作出一個當偵測到惡意字時,即會發出 email 通知管理者,來增強 IMSpector 的功能。
[源碼秘技] GoAccess,一個 Apache Log 的程式分析
翁卓立/文
  • 下載位址:http://ncu.dl.sourceforge.net/project/goaccess/0.4.1/goaccess-0.4.1.tar.gz (115KB)

  • 簡介


    如果因為任何理由,在 Linux 主機上要進行網頁伺服器的架設,相信大多數人都會直接選擇使用 Apache 這套網頁伺服器軟體。一方面這套網頁伺服器軟體的佔有率高,使用上比較穩定而不容易產生意料之外的問題;另一方面則是網路上可以搜尋到的相關文件非常多,甚至 Apache 官方網站中便有一個非常完整的文件系統,可以讓系統管理員在需要時進行查詢。

    而在架設網頁伺服器之後,接下來除了要建立網站的內容以外,通常大多數的系統管理員也會隨即安裝一些網站流量的統計工具。因為 Apache 本身雖然有非常完善的記錄檔功能,可以將伺服器發生的任何事件一一記載在記錄檔之中,但記錄檔畢竟不是相當容易直接由人類進行判讀的一種資料,有些時候很難直接從記錄檔所提供的資訊判斷出當時所發生的事件為何。再加上網站運作一段時間以後,記錄檔的內容與資料量都會大幅攀升,如果要在數量如此龐大的檔案中搜尋特定資料,有時候會給人大海撈針的感覺。透過網站流量的統計工具輔助,則可以先將記錄檔的內容進行分析,再依照事件相關的屬性加以分門別類,即可使用較為容易被人類閱讀的方式呈現網站流量的統計資料。

    網站記錄檔的分析與統計工具可以輕易的在網路上找到許多相關的軟體,而這些軟體絕大多數都是以網頁方式呈現。或許是這些軟體的作者認為,既然已經架設了網頁伺服器,表示使用者一定有網頁空間可以放置這些統計後所產生的報表網頁。雖然這樣的想法並沒有錯,但是對於只想在第一時間查到網站相關的統計資料者而言,這樣的作法多少有些麻煩。因為這意味著使用者必須先找到一部可以執行瀏覽器的電腦,再利用此電腦瀏覽網站流量的統計資料。或許現在大多數的電腦都是採用圖形介面,所以問題不大。但如果使用者想要快速查詢到相關的統計資料,或是目前所使用的電腦只有文字終端機介面(例如 Ubuntu 的伺服器版本,預設情況下並未安裝圖形操作介面),便很難使用瀏覽器前往查詢網站統計資料的報表。

    這樣的問題並非毫無解決之道,因為除了採用網頁方式呈現的統計報表之外,也有專門針對文字終端機介面所設計的網頁記錄檔分析軟體,例如本文所要介紹的 GoAccess 即為最好的範例之一。GoAccess 是一套採用文字終端機介面所設計的 Apache 記錄檔分析程式,本身利用 ncurses 程式庫進行開發,因此雖然使用的是文字介面,但在畫面呈現上仍然具有相當水準。由於 GoAccess 是以即時方式進行記錄檔的分析,並將最新的資料直接呈現在畫面上,因此如果系統管理員需要即時得知目前網頁伺服器相關的運作統計資料,便可以透過此工具程式進行查詢。而不必像其他統計軟體一樣,因為是採用分析記錄檔再產生網頁資訊的運作模式,因此如果要取得最新的資料,多半需要重新執行一次統計軟體,以便產生最新的報表。

    [源碼秘技] GoAccess,一個 Apache Log 的程式分析
    ▲ 圖1  GoAccess 的執行畫面


    安裝 GoAccess 的注意事項


    安裝 GoAccess 並不是一件非常困難的工作,對於已經非常熟練軟體安裝相關流程的系統管理員而言,只要注意幾個小細節便可以直接完成安裝動作。如果要直接以原始檔編譯的方式進行 GoAccess 的安裝,則必須先行檢查系統中是否有 GoAccess 所需要的程式庫套件。安裝 GoAccess 之前,系統上至少需要先完成 ncurses、GLib2 這二套程式庫的安裝,其中 GLib2 的版本只要大於 2.0.0 版即可。如果希望 GoAccess 可以直接從來源 IP 位址取得對方的地理位置,則可以安裝 GeoIP 程式庫。此程式庫並非必要安裝,因此如果對 GeoIP 的功能不感興趣,可以不需要安裝。

    安裝上述程式庫可以直接從原始檔編譯著手,但如果使用的 Linux 發行版本本身有套件管理機制,或許從套件管理系統中直接進行安裝會是比較容易的作法。以 Debian、Ubuntu 為例,直接使用 APT 安裝 libncurses5-dev、libglib2.0-dev 與 libgeoip-dev 這三個套件,即可同時完成 ncurses、GLib2 與 GeoIP 程式庫的安裝動作。如果使用的是 Red Hat、Fedora 或是 CentOS 這些發行版本,則可以利用 YUM 安裝 ncurses-devel、glib2-devel 與 GeoIP* (包含 GeoIP-data、GeoIP-devel)等套件。

    安裝 GoAccess 時,一樣也可以使用套件管理的方式進行,如此一來可以減少一些等待編譯、設定的時間浪費。以 Debian  發行版本為例,在「/etc/apt/sources.list」之中加入一行「deb http://ftp.de.debian.org/debian sid main」,接著依序執行「sudo apt-get update」、「sudo apt-get install goaccess」即可進行安裝。Ubuntu 也可以使用相同的安裝方式,只是「/etc/apt/sources.list」檔案中要加入的網址必須變更為「deb http://ubuntu.mirror.cambrium.nl/ubuntu/ natty main universe」。至於 Red Hat、Fedora 等版本所使用的 RPM 格式,目前 GoAccess 的官方網站並未提供 RPM 格式,但是在網路上可以找到網友自行建立的 RPM 套件。例如「http://marco-ziesing.de/archives/101-goaccess-fur-fedora-13.html」這個網頁提供了一套 0.3.3 版的 GoAccess RPM 檔,如果不想從原始碼重新編譯,直接使用此 RPM 套件檔也是一個選擇。如果讀者有使用 Git 的習慣,亦可直接使用「git clone git://goaccess.git.sourceforge.net/gitroot/goaccess/goaccess」指令取得最新版本的 GoAccess。


    GoAccess 的特色


    GoAccess 與其他的記錄檔分析軟體最大的不同之處,在於 GoAccess 只能支援 Apache 的記錄檔格式。由於許多網頁伺服器(甚至是其他種類的伺服器軟體)也會使用 Apache 伺服器的記錄檔格式,因此並不能就此認定 GoAccess 只能處理 Apache 伺服器的記錄檔。只是 Apache 畢竟是較為知名的網頁伺服器軟體,因此 GoAccess 才會強調本身是一套 Apache 記錄檔的分析軟體。但如此一來,卻會造成部份使用者的誤解,誤以為 GoAccess 只能在網頁伺服器使用 Apache 的情況下使用。

    在處理記錄檔的時候,GoAccess 會先進行記錄檔的解析動作,接下來才會從這些已經經過解析的資料中收集需要的資訊,並且以文字終端機的介面加以呈現。由於 GoAccess 每一個畫面需要呈現的資訊較多,因此標準的 80 行 24 列的終端機介面,並無法順利執行 GoAccess。一般而言,至少需要將行數調整至 97 行以上,列數調整至 40 列以上,才能執行 GoAccess 進行記錄檔的分析動作。執行 GoAccess 並且收集到相關的資料之後,GoAccess 便會以報表的方式呈現在終端機的畫面之中,讓使用者直接以鍵盤熱鍵的方式進行操作。GoAccess 使用的熱鍵數量並不多,但如果不記得相關的按鍵定義,也可以直接從線上輔助訊息中取得鍵盤的使用方式,並不需要強行記憶相關的熱鍵設定為何。

    [源碼秘技] GoAccess,一個 Apache Log 的程式分析
    ▲圖2  終端機至少要有 97 行 40 列的解析度,才能執行 GoAccess

    GoAccess 也是以報表的型式呈現資料統計後的結果,雖然使用的是文字介面,但因為畫面安排得當,所以並不會給人無法找到所需資料或報表的印象。GoAccess 提供的報表項目相當多元化,數量多達十數個,幾乎已經涵蓋了大多數網頁流量分析軟體所會提供的報表類別。統計報表包括基本的統計資訊、頻寬統計、最常前來拜訪的主機名單、最常被存取的檔案、圖片、Flash動畫等等各種資料。而像是參照位址(Referrer URL)、參照主機、訪客主機所使用的作業系統為何,還有當伺服器回應「404 Not Found」訊息時客戶端所使用的網址為何,也會一併被記載下來,這可以協助管理員進行網站的內容檢查,確認網站內容中是否使用了不正確的連結而造成使用者操作錯誤的情況發生。除此之外,客戶端所使用的瀏覽器種類也可以被統計出來,這可以讓網站設計人員了解目前瀏覽器大致的使用潮流,並依據此項統計資訊加以修改網站的設計走向,讓網站可以符合大多數人的使用習慣。而不是只針對某種特定的瀏覽器進行最佳化,其他的瀏覽器則置之不理。

    [源碼秘技] GoAccess,一個 Apache Log 的程式分析
    ▲圖3  GoAccess 可以針對作業系統或瀏覽器進行統計

    如果網站已經放置到公開的網路中,一段時間之後勢必會有搜尋引擎的機器人前來擷取資料。如果想查看關於這些搜尋引擎機器人的統計資訊,亦可在 GoAccess 的統計報表中取得相關訊息。由於搜尋引擎的機器人會在收集到資料後,將網站相關的資訊建立在搜尋引擎的資料庫之中,因此在網站運作一定的時間之後,便會開始出現有來訪者是經由搜尋引擎而找到自己網站的情況。如果希望了解大多數人在搜尋引擎是以何種關鍵字查到自己的網站,可以利用 GoAccess 的關鍵字統計報表進行了解。得知網站相關的關鍵字統計資訊,便能依照來訪者的需求,設計更多可能引起來訪者興趣的網頁,以便提高回訪率與停留時間。

    若系統管理員想得知最常前來存取網頁伺服器的主機位址為何,則可以利用 GoAccess 的主機統計資訊進行查詢。主機統計資訊會依照來源主機前來存取網頁的次數加以排序,讓系統管理員可以很快了解大多數前來存取網站的主機網址為何。如果有異常的存取現象出現,也可以利用此功能進行了解。如果安裝 GoAccess 時有使用 GeoIP 程式庫,甚至還可以查出來源主機的所在位置,這在特定情況下也是相當有用的統計資料。除了這些來源主機相關的資料以外,GoAccess 也可以進行 HTTP 狀態碼的統計,讓系統管理員得知網站最常回應的 HTTP 狀態碼為何。如果發現某一種狀態碼經常出現,亦可進行進一步的查詢,以確認網頁伺服器本身是否有問題發生。

    雖然 GoAccess 是以文字介面進行設計,但仍然在使用介面上稍微下了一點功夫。如果覺得預設的畫面有些單調,亦可透過切換顏色配置的方式選擇另一種不同的顯示模式。雖然礙於文字介面的因素,導致 GoAccess 無法提供太多的顏色配置方式,但仍然不失為一個可以提供使用者介面一些變化的選擇。只是 GoAccess 畢竟強調的還是本身的分析能力,所以大多數人恐怕對於 GoAccess 是否可以改變顏色配置並不會太過在意。

    [源碼秘技] GoAccess,一個 Apache Log 的程式分析
    ▲圖4  GoAccess 的顏色配置也可以加以變更,但預設可以選擇的配置項目並不多


    GoAccess 支援的記錄檔格式


    Apache 網頁伺服器主要使用二種記錄檔格式,分別是 Common Log Format (CLF) 與 Combined Log Format (ELF)。二者記錄檔的格式稍有差異,也都有一定數量的愛好者。但無論系統管理員採用的是何種記錄檔格式,基本上 GoAccess 都可以進行解譯與分析,不會有任何問題。如果網頁伺服器有設定要以虛擬主機的方式運行,GoAccess 也能正確處理。此外,如果其他網頁伺服器也能支援以 Apache 的記錄檔格式進行事件的記錄動作,理論上 GoAccess 也能加以解讀。例如 GoAccess 的官方網站便提到 Nginx 這種 HTTP 伺服器軟體,如果將記錄檔格式設定為 Apache 的格式,即可使用 GoAccess 作為記錄檔的分析工具。

    有些記錄檔分析程式可能是因為設計上的考量不周,因此無法處理過大的記錄檔,或是處理到一半會發生問題。但 GoAccess 本身並沒有限制記錄檔的容量上限,基本上只要磁碟空間足以讓網頁伺服器繼續寫入記錄檔的資料,GoAccess 便能持續進行處理。

    GoAccess 的執行速度


    由於執行網頁伺服器的主機對於系統效能都非常敏感,尤其是大型網站的使用情況下更是如此,所以記錄檔分析軟體的運行效率,也就成了許多人在採用相關軟體時一個主要的考量重點。根據 GoAccess 官方網站的說法,如果使用 AMD Sempron 2.31GHz 的處理器,搭配 2GB 的系統記憶體,則在開啟 GoAccess 所有功能的情況下,GoAccess 每秒鐘可以處理十萬行的記錄檔資料。如果僅使用預設的功能,則 GoAccess 的處理效率會稍有成長,來到每秒鐘十萬八千行的水準。當然 GoAccess 的運作速度會依照系統硬體的不同而有所增減,一般來說,如果 CPU 的時脈越高、記憶體的容量越大,則 GoAccess 在處理記錄檔的時候,將會有更佳的表現。


    結語


    雖然 GoAccess 已經足以應付大多數的網頁記錄檔分析工作,但開發團隊並未停止研發腳步,仍然持續構思可以增加的新功能。例如對於 UTF-8 編碼的更佳支援、可以支援 IPv6 的分析,甚至增加更多執行時的選項,還有讓執行效能更進一步等等。可以想像的是,在不久的將來,GoAccess 在功能上將會更加完善,將來甚至有可能成為所有網頁伺服器管理員必裝的管理工具之一。


    作者簡介


    翁卓立
    逢甲大學資訊工程學系、台灣科技大學電子所畢業,目前擔任韌體研發工作,主要使用 Embedded Linux 進行產品開發。著有「Linux 進化特區:Ubuntu 10.04 從入門到精通」等書。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
李婉婷、陳瑞霖/文

要製作精美的海報、手冊、月曆等,透過多數軟體仍然都需要花上一段時間來完成。辛苦做好的成品如果只用一次豈不是太可惜了。本次要介紹如何將完成的作品製作成模板,以方便多次套用,並將 Scribus 的文件轉為 PDF 格式,以利印刷或是散布給他人觀賞。

模版


我們可以從別人已經做好的模版中挑選自己想要的樣式,利用現成的模版做修改,省下製作的時間,若找不到自己屬意的樣式,也可以自己製作一個模版,之後若需要類似版型時就可以直接拿來使用了。

套用現有模版:

套用模版可以從軟體中選擇,或是到官方網站去下載模版來編輯。首先,如何從 Scribus 中叫出別人已經做好的模版呢?請至功能表上的【檔案】選擇【從模版新建】。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 1

你可以選擇依照分類選擇你要套用的模版。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 2

如果對軟體內附有的模版不滿意,可以到下面這個網站去尋找符合自己需求的模版,下載別人分享出來的模版。
網站連結:http://scribusstuff.org/

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 3

到這個網站後,在左邊欄位中選擇「Scribus Templates」的選項,就可以看到中間出現許多熱心網友們貢獻的模版。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 4

選好中意的模版後,點進去進行下載。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 5

按下「download」。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 6

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 7

下載完儲存好以後,打開文件會看到很多附屬於這個模版的檔案,選擇其中的 sla 檔就可以開啟 scribus 模版進行編輯。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 8

無論是從網站下載或是從軟體中找到模版,開啟模版時會跳出「字體替代視窗」。因為每個人電腦裡有的字型不盡相同,因此會出現這個視窗問你想要將這份模版中所用到的、但你沒有的字型轉換成哪些字型。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 9

選好字型後就可以開始編輯了。有的模版檔案在製作時有鎖定一些物件,只要點滑鼠右鍵,按一下【鎖定】讓前面的勾勾消失就解除鎖定了。模版上的所有元素不論是底圖或是文字都可以隨意改變,不會被侷限。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 10


自己製作模版:

當找不到適合的模版時,就只好自己做一個然後儲存成模版檔案,以便往後持續使用。做好的檔案可以從【檔案】選擇【儲存為模版】。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 11

選擇模版檔案要存放的位置。儲存成模版後,所有在檔案裡用到的圖片檔都會跟著連同一起儲存,所以最好是再開一個資料夾以方便管理檔案。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 12

選好存放位置後會出現一個視窗,此視窗可以詳細紀錄此模版的相關資料,這樣就存成新的模版了。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 13

使用別人做好的模版,可以省下不少時間;或者是把自己辛苦製作的檔案存成模版,未來做類似檔案只需花少少的時間就能製作完畢。別忘了分享自己製作的模版檔案,讓其他使用 Scribus 的使用者能夠觀摩噢。

PDF 輸出


由於 Scribus 採用的格式是 sla 檔,並不是常見的檔案格式,我們必須轉成 PDF 檔才能交付印刷或是分享給週遭的朋友。以下將說明 Scribus 的 PDF 輸出功能。

按〔儲存為 PDF〕 按鈕。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 14

在進入「PDF 輸出」視窗前,先會跳出「印前檢驗器」。「印前檢驗器」會完整的檢查文件當中的所有頁面中的物件,從主頁開始,各個文件框以及圖片框。最常出現的問題像是影像解析度過低,或者是找不到圖片存放的路徑,而使得圖片框是空白的。「印前檢驗器」中。在這邊可以逐一確認各頁面中潛在的問題數量多寡,以紅綠燈方式表示,綠燈表示沒問題,黃燈是有小錯誤,紅燈是嚴重錯誤。可以直接點選黃燈或紅燈的項目,會直接跳至該項目,檢示錯誤發生的地方,省下逐步找尋錯誤的時間,立即將錯誤處修政。假如瀏覽過後認為並不影響輸出的成品,則可按〔忽略錯誤〕跳至下個步驟。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 15

接下來會出現「儲存為 PDF」的選單,這裡我們將進一步說明各頁籤所提供的功能。

「輸出到檔案」顯示檔案儲存位置以及檔案名稱,按〔更改〕可以變更儲存目錄以及存檔檔名。「逐頁輸出單個檔案」,可使每頁輸出成個別檔案。

一般頁籤:
  • 「輸出範圍」可以選擇整份 Scribus 文件輸出成 PDF 檔,或者是選擇範圍內某幾頁輸出。

  • 「旋轉」則可以選擇將輸出的文件旋轉 0⁰、 90⁰、 180⁰、 270⁰。

  • 「檔案選項」可以自行選欲出輸出之 PDF 的相容格式 (PDF 1.3, PDF 1.4, PDF 1.5),以及裝訂邊要放在左邊或者是右邊。

  • 「圖片壓縮方式」可以選擇圖片壓縮方式以及壓縮的品質。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲一般頁籤

字體頁籤:
  • 「可用字體」為檔案中所有使用到的字體。

  • 「要嵌入的字體」可在「可用字體」中選取欲使用的字型。

  • 〔Embed All〕則可以一次將所有「可用字體」的字型全部內嵌。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲字體頁籤

附加頁籤:
  • 「啓用報告效果」可將 PDF 檔以簡報型式播放。

  • 「特效」可自行挑選欲呈現之效果;可個別調整每一頁面之特效模式,也可以選擇全部套用。


[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲附加頁籤

檢視器頁籤:
  • 「文件樣式」可依瀏覽習慣設定頁面間的呈現方式。

  • 「視覺外觀」則是輸出的 PDF 文件在檔案管理員中的顯示圖標示,可以選擇系統中預設的 PDF 圖示,或者以縮圖的方式顯示 。


[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲檢視器頁籤

安全頁籤:
  • 「使用加密」可以選擇是否對輸出後的 PDF 檔加上密碼保護:分為所有人的密碼(可以修改內文)以及使用者密碼(可以觀看文件)。

  • 「設定」為允許開啟檔案者能進行的動作,例如:列印檔案、更改檔案、複製文字和圖片與添加注釋和表單域。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲安全頁籤

顏色頁籤:
  • 「一般」設定中可選擇輸出此檔案的用途,以避免產生色差之疑慮。


[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲顏色頁籤

所有設定完成後點選「儲存」,將檔案轉成 PDF 檔。此時,若製作過程中使用到高解析度的圖片,會增加輸出的時間。
「儲存 PDF」視窗,顯示輸出的進度。

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲顯示輸出的進度

手冊輸出成 PDF 檔完成了!

[源碼秘技] 用自由軟體 Scribus 來輸出文件(4)- 製作模板並轉為 PDF 輸出
▲圖 16

有了 PDF 檔之後,要分享給別人觀賞或是請廠商輸出成手冊都很方便。Scribus 輸出成 PDF 的這項功能是不是很實用呢?

結論


Scribus 在輸出方面有加密、鎖住之類的功能,不輕易讓其他人複製檔案中的文字及圖片,對於使用者隱私及安全上有所保護。模版功能則方便之後要做類似檔案時使用,著重在內容的修改,是不是很方便且省時省事啊?對使用者來說是套嚴謹且好用的排版軟體,大家一起來學吧!

[源碼報報] 俄羅斯總理簽署政令 政府機構改用開放源碼
謝良奇/編譯

俄羅斯總理 Vladimir Putin 日前簽署了一份政府命令,要求該國政府單位在 2015 年前,轉換至開放源碼軟體。該紙文件規劃出聯邦機構轉為使用包括 Linux 在內等自由軟體的基礎工作。

事實上,去年 10 月就已經有消息傳出,俄羅斯政府正計畫以基於 Linux 的開放源碼作業系統,取代微軟的產品。俄羅斯政府當時坦承投入近 500 萬美元,發展國家作業系統。該計畫希望讓政府電腦擺脫微軟 Windows 與其他私有軟體,其主要目的為節省成本、改善安全性,並且減少對外國軟體廠商的依賴。之後,去年 12 月,Putin 就簽署要求政府單位轉換至開放源碼軟體的該紙命令。

針對自由或開放源碼軟體的轉換將從 2011 年第 2 季開始,交通部 (Ministry of Communications) 將確認政府機構所需的基本軟體套件。同樣在第 2 季,該部會與其他機構將為使用者支援中心和支援軟體開發者的機制提出建議。

這一份列舉 25 點項目的文件,描述了該國政府為了擺脫私有軟體並轉為如 Linux 等自由和開放源碼軟體,所需採取的特定步驟。於 2010 年 12 月 17 日通過的該紙政府命令,影響所及包括所有的聯邦機構。根據轉換時程,先導政府機構將在 2012 年第 2 季開始使用基本的開放源碼軟體套件。

文件中的每一個項目都描述了必須執行的特定行動、負責執行的機構、執行時間、預期結果。例如,某項命令要求針對有行政權力之聯邦機構中使用的自由軟體,建立並維護單一倉儲。另一項命令則要求制定轉移至使用自由軟體的計畫,其中包含所屬預算機構的轉換計畫。

開放源碼作家 Glyn Moody 在部落格中表示,Putin 對開放源碼軟體的支持極為重要。過去針對部份俄羅斯政府轉移至開放源碼軟體的嘗試,多數失敗的原因都是缺乏政治支援。

他說,不過一旦計畫出自 Putin 之口,他猜想許多人會很快地落實此一計畫。一旦如此,其他開展自由軟體的計畫或許會突然更具有吸引力。

俄羅斯過去數年內已經朝自由軟體的方向在移動。2008 年,該國政府要求學校在所有電腦中安裝自由軟體套件。想要使用私有軟體的學校,則必須自掏腰包。

相關網址:
1.Putin 指示俄國政府移至開放源碼
http://news.yahoo.com/s/pcworld/20101228/tc_pcworld/putinordersrussiangovttomovetoopensource
2.Vladimir Putin 要求俄羅斯政府在 2015 前轉換至自由軟體
http://news.yahoo.com/s/mashable/20101227/tc_mashable/vladimir_putin_orders_russian_government_to_switch_to_free_software_by2015

轉寄『第 165 期 以 IMSpector 側錄即時通訊軟體』這期電子報

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

  • 社群留言
  • 留言報主