::: 中大計中電子報 :::NCU COMPUTER CENTER E-PAPER

第 018 期 × 2005-12-20 發行

連結
訂閱本報
本 期 焦 點
 
《技術新知》  郵件伺服器篇--寄件認證機制
《BB專欄》  Blackboard專欄(第七期)
 
轉 寄 給 朋 友 :
 
 
   
 郵件伺服器篇--寄件認證機制
 
電算中心 ‧mail server 工作小組 ≡
  http://www.cc.ncu.edu.tw/mailncucc@cc.ncu.edu.tw

本期主題介紹的是:郵件伺服器篇--寄件認證機制

Sendmail with SASL and TLS support


提要

Sendmail 提供了基本的 SMTP 協定(Protocal),並可透過郵件代轉機制 (Relay) 替指定的 IP 做代轉服務,然而並非所有用戶端 (Client) 皆具有固定 IP,此時便可透過 SASL (Simple Authentication and Security Layer,SASL) 提供使用者做認證以便提供 SMTP 服務。而 SASL 所提供的密碼交換協定是以明文 (Plaintext) 形式來傳遞,再安全上有相當大的疑慮,TLS (Transport Layer Security) 提供了解決方案,他可提供連線時期的加密傳輸,同時可避免密碼以明文方式傳遞,並確保郵件私密性。

系統環境

Ubuntu 5.10 (Debian)
Sendmail 8.12.10
SASL 2.1.21
OpenSSL 0.9.7e

介紹

SASL (Simple Authentication and Security Layer)

原始的 SMTP 不具備驗證能力,在 RFC 2554 (SMTP Service Extension for authentication) 中制定如何在 SMTP protocol 加上驗證機制,透過 SASL 協定便可進行使用者認證。RFC 2222 (Simple Authentication and Security Layer) 制定了基本規範。在設定 SASL 之前須決定 1.驗證機制 (authentication mechanism) 2. 驗證架構 (authentication framework)

驗證機制 (authentication mechanism)

驗證機制就是在初始連線時期規範 Server 與 Client 端如何應答。 大致上包含:

PLAIN
PLAIN 是最容易使用的機制,卻也相當危險,因為使用者的帳號密碼會以 base64 格式傳送,未進行加密保護。通常會搭配 TLS 使用。

LOGIN
LOGIN 不是正式支援的機制,通常是舊版的 MUA會使用到,例如 Outlook Express 5 之前版本。整體而言 LOGIN 和 PLAIN 相當類似。

KERBEROS
Kerberos 是一種網路認證協定。詳細資料可參考官方網頁

OTP(S/KEY)
OTP (One-Time Passwords),基於 MD5 演算法的單次密碼驗證機制,此機制無加密保護,因為密碼只用一次,沒有加密的必要。也因而每次連線都須改用新密碼。另外 SMTP Client 端須能產生 OTP 憑證。RFC 2444 (The One-Time Password SASL Mechanism)

DIGEST-MD5
DIGEST-MD5 認證方式,Client 和 Server 端共用一個 secret password,真實密碼不透過網路傳輸。驗證方式是由 Server 端送出 challenge 給 Client,而 Client 利用 secret password 計算 response 給 server。不同的 challenge 會算出不同的 response ,而擁有 secret password 的人都可對相同的 challenge 算出同樣的 response。這樣的驗證程序只須傳送 challenge 和 response,真實的密碼不會在網路上傳送,即使被 Sniffer 也沒關係。雖然近來有人提出 MD5 Collision 的討論,但 MD5 仍是主流加密演算法之一。RFC 1321 (The MD5 Message-Digest Algorithm) ftp://ftp.rfc-editor.org/in-notes/rfc1321.txt

CRAM-MD5
CRAM-MD5 認證方式曾經是在 LDAPv3 Server 上廣為推薦,已逐漸被 DIGEST-MD5 所取代,兩者的關係好比 PLANT 和 LOGIN。

ANONYMOUS
ANONYMOUS 在 SASL 上面是沒有意義的,之所以要進行認證就是為了不要讓人任意使用造成 Open relay。SASL 支援 ANONYMOUS 是為了支援其他的協定。

驗證架構 (authentication framework)

決定了驗證機制之後,驗證架構是決定 Server 端如何紀錄使用者憑證,以及如何檢驗 Client 所提供的密碼。大致包含了:PAM、SASLdb、Berkeley DB、SQL、LDAP。其中較為常見的是 PAM 與 SASLdb 兩種認證方式。

PAM
通常 Unix-like 上的系統密碼檔是 /etc/passwd,不過近來因安全性考量,密碼部分可能會在 /etc/shadow,這些檔案僅有 super user 可以存取。若要使用 Unix 系統上的密碼檔,一般會透過 saslauthd 這個 daemon 提供存取密碼檔的工作,但是透過 saslauthd 認證,僅能使用 plaintext password,因為 saslauthd 需要真實密碼才能夠進行驗證。

SASLdb
SASLdb 是 SASL 所支援的其中一種 auxprop (Auxiliary Property Plug-ins),上面所提過的 LDAP、SQL 等等也是 auxprop。使用 SASLdb 不必透過 saslauthd daemon,但是因為他是另外建立一個密碼檔,需要特別注意將需要使用認證的程式都能夠存取 SASLdb。
需要產生或者維護 SASLdb 可以直接使用 Cyrus SASL 內建的工具 saslpasswd2。例如:
#saslpasswd2 -c -u hostname testuser
Password:
Again (for verification):

選項 -c (create),-u (Hostname), 最後是 username。

TLS (Transport Layer Security)

RFC 3207 (SMTP Service Extension for Secure SMTP over Transport Layer Security)中制定了 STARTTLS 的 SMTP 擴充機制,用來保障 TCP 通訊的隱私性與完整性,與 SASL 結合,可避免密碼以明文型是在網路上傳輸。另外,這裡需要特別注意,TLS 僅是在連線時期加密,當郵件送達 Server 端時仍是未加密的,若需要完整加密可以參考 PGP 或是 GnuPG 

憑證 (Certificate)

要保障 TLS 連線時的私密性,便是透過憑證 (certificate) 來確保 Server 的可信度。而憑證需從具公信力的 CAs (Certificate Authorities) 取得。
談到憑證就需先提到公鑰 (Public key) 與私鑰 (Private Key) 的加密技術。以公鑰加密的資料只有私鑰可以解的開,反之,以私鑰加密的資料可由公鑰解密。這樣可以保障什麼事情呢?
接收加密:第三方可以使用公鑰加密資料傳送,僅有私鑰擁有者可解密。
傳送加密:以私鑰加密過的文件,可使用對應的公鑰解開,確保此文件來自私鑰擁有者。(此動作通常稱為簽署)

而取得一份公鑰時,要如何確保該公鑰所宣稱之擁有者為實呢?此時便需要第三方具備公信力的 CA 來背書,而具有 CA 背書的公鑰稱為憑證 (Certificate)。基於信任 CA 的立場,可相信該公鑰確實為期所宣稱之擁有者。

公私鑰加密僅在 TLS 的連線初期使用,運作流程大約如下:
1. Client 對 SMTP Server 發出 STARTTLS 要求加密連線
2. Server 發出具備 CA 背書的憑證,並加上 CA 本身的根憑證
3. Client 端檢驗兩個憑證之可信度。
4. 若 Client 接受憑證便開始 session key 的協商。
而實際連線時期加密動作是使用該 session key 來進行。

憑證由許多政府單位或公司所成立之 CA 取得,例如:
VeriSign
政府憑證管理中心(GCA)

安裝與設定

安裝 SASL v2
Ubuntu(Debian)
$sudo apt-get install sasl2-bin libsasl2

Tarball
$cd /tmp
$wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-2.1.21.tar.gz
$tar zxvf cyrus-sasl-2.1.21.tar.gz
$cd cyrus-sasl-2.1.21
$./configure
$make
$sudo make install
$sudo ln -s /usr/local/lib/sasl2 /usr/lib/sasl2

安裝 OpenSSL
Ubuntu(Debian)
$sudo apt-get install openssl

Tarball
$cd /tmp
$wget http://www.openssl.org/source/openssl-0.9.8a.tar.gz
$tar zxvf openssl-0.9.8a.tar.gz
$cd openssl-0.9.8a
$./configure
$make
$sudo make install

安裝憑證
一般我們會從 CA 取得三個檔案
1. CA 本身的根憑證 (CA_cert.pem)
2. 向 CA 所申請的公鑰及私鑰 (server_cert.pem, server_key.pem)
將三個檔案放在 /etc/mail/certs/

編譯 Sendmail
在 Ubuntu 5.10 下使用 aptget 安裝的 Sendmail 預設已編入 SMTP AUTH(SASL)與 STARTTLS(SSL),不用重新編譯就可以使用 SASL 及 SSL。
檢查是否已編譯 SASL 與 STARTTLS
$sendmail -bt -d0.1
Version 8.13.2
Compiled with: DNSMAP LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8
MIME8TO7 NAMED_BIND NETINET NETINET6 NETUNIX NEWDB NIS NISPLUS
PIPELINING SASLv2 SCANF SOCKETMAP STARTTLS TCPWRAPPERS USERDB
USE_LDAP_INIT XDEBUG

若無 SASLv2 與 STARTTLS 則須重新編譯 Sendmail。
$sudo tee -a /usr/src/sendmail-8.13.2/devtools/Site/site.config.m4
APPENDDEF(`conf_sendmail_ENVDEF",`-DSASL")
APPENDDEF(`conf_sendmail_LIBS",`-lsasl")
APPENDDEF(`conf_sendmail_ENVDEF",`-DSTARTTLS")
APPENDDEF(`conf_sendmail_LIBS",`-lssl -lcrypto")
dnl The following lines are used to enable the STARTTLS function
define(`CERT_DIR", `/etc/mail/certs")dnl
define(`confCACERT_PATH", `CERT_DIR")dnl
define(`confCACERT", `CERT_DIR/CA_cert.pem")dnl
define(`confSERVER_CERT", `CERT_DIR/server_cert.pem")dnl
define(`confSERVER_KEY", `CERT_DIR/server_key.pem")dnl
define(`confCLIENT_CERT", `CERT_DIR/server_cert.pem")dnl
define(`confCLIENT_KEY", `CERT_DIR/server_key.pem")dnl
dnl 設定 mechaninsms
define(`confAUTH_MECHANISMS",`CRAM-MD5 DIGEST-MD5 LOGIN PLAIN")dnl
TRUST_AUTH_MECH(`CRAM-MD5 DIGEST-MD5 LOGIN PLAIN")dnl
FEATURE(`access_db")dnl
^D

$cd /usr/src/sendmail-8.13.2/
$./Build -c
$cd sendmail
$sudo ./Build install
$kill -HUP"head -1 /var/run/sendmail.pid"

修改 saslauthd
#vi /etc/default/saslauthd
START=yes # unmark,以便開機自動執行
MECHANISMS="pam" # 設定欲使用之認證架構

測試

測試是否支援 SASL 

tester -01:42- [/usr/bin]-socrates-t localhost 25
Trying 127.0.0.1...
Connected to localhost.localdomain.
Escape character is "^]".
220 localhost.localdomain ESMTP Sendmail 8.13.2/8.13.2/Debian-1; Mon, 28 Nov 2005 01:42:02 +0800; (No UCE/UBE) logging access from: localhost.localdomain(OK)-localhost.localdomain [127.0.0.1]
ehlo localhost
250-localhost.localdomain Hello localhost.localdomain [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5 LOGIN PLAIN
250-DELIVERBY
250 HELP

參考資料

SASL

Cyrus

參考網址

http://antispam.ncu.edu.tw/server/Sendmail-sasl-tls.html

 

 
   
 Blackboard專欄(第七期)
 
電算中心 ‧郭景淵≡
  http://bb.ncu.edu.tw/bin/index.plcenter28@cc.ncu.edu.tw

本期焦點內容:

《一》系統公告
1. 社群開放讓老師、助教及學生自行建立組織與討論區【電算中心訊】
2. 學期末快接近了,請老師自行將課程做匯出備份【電算中心訊】

《二》教育訓練消息
1. 12/29(四)Blackboard網路教學平台舉辦第五次BB教育訓練【電算中心訊】
2. 第四次BB教育訓練錄影檔及BB教學投影片完整版文件已放置到線上教育訓練中心(BlackBoard Training Center)【電算中心訊】

《三》實用小技巧

1. BB教材發佈與電子書連結方式【電算中心/郭景淵】
2. BB的小幫手-工作與行事曆【電算中心/郭景淵】

《四》軟硬體專欄

1. (硬體)網路附加儲存系統設備-離線備份保障BB課程【電算中心/郭景淵】
2. (軟體)BB週邊擴充模組介紹-Horizon Wimba 的EduVoice和Questionmark的適性化測驗結合成語音考試【電算中心/郭景淵】

《五》操作問與答

1. 請問一下,校外人士可以使用BB嗎?還是本校學生才可以使用? 【電算中心/郭景淵分析】
2. 老師反應說bb系統好像這一兩個禮拜天都有問題沒辦法使用呢? 【電算中心/郭景淵分析】

《六》使用心得徵稿


《一》系統公告
1.社群開放讓老師、助教及學生自行建立組織與討論區【電算中心訊】

具有本校BB師生及助教身份的人請您注意啦,自本學期起只要具有上述身份的成員,就可以在社群標籤頁中自行建立組織及討論區,組織功能幾乎跟課程設定使用上一模一樣。目前社群建立我們是採取開放政策,也就是您可以自行建立無需申請,不過每個學期會清空一次,所以如果需要永續經營的成員,請向系統管理者申請! 此外,社群討論區建立者具有開啟及關閉論壇文章管理、編輯、移除及匿名的權限,如果需要這些功能,可以要求建立者修改選項!請各位老師助教及學生善加使用,相信會對您課程外的教學更有幫助! →回本期焦點內容

2.學期末快接近了,請老師自行將課程做匯出備份【電算中心訊】

學期末將近,老師們應該在課程內放置相當多的課程資料了,為了方便各位老師課程以後可以複製,或是課程資料有毀損時可以立即匯入,老師可以自行在控制面板的「封存課程」項目中做課程備份,萬一有意外時即可由系統管理者來做回復,請各位助教及老師務必定期做備份工作。此外,目前課程容量目前預設為600MB,有額外需求請聯絡計中人員。 →回本期焦點內容

《二》教育訓練消息
1. 12/29(四)Blackboard網路教學平台舉辦第五次BB教育訓練【電算中心訊】

各位Blackboard系統的使用者您好,本單位將於2005年12月29日 (四)舉辦Blackboard網路教學平台教育訓練,歡迎各位老師協同助教及有興趣之人士參與本活動。

主題:94上第五次BB教育訓練
時間:2005/12/29 12點00分至13點00分(中餐請自理)
地點:電算中心地下室I-002電腦教室
內容:教育訓練前一個禮拜會在BB上公佈。
期待您的蒞臨!本活動無須報名,助教與老師皆可自由參加,如有問題請洽電算中心郭景淵(E-mail:center28@cc.ncu.edu.tw,校內分機57533)→回本期焦點內容

2. 第四次BB教育訓練錄影檔及BB教學投影片完整版文件已放置到線上教育訓練中心(BlackBoard Training Center) 【電算中心訊】

若欲觀看教育訓練錄影檔請先至「課程資訊」 > 「瀏覽器外掛程式」下載Real Player以順利觀賞串流檔影片!
◎ 94上第三次BB教育訓練: 內容:註冊選項說明, 區域可用性, 社群建立與使用, 電子書連結方法, 課程封存與匯入匯出, 工作功能介紹, 行事曆安排。 →回本期焦點內容

《三》實用小技巧

1. BB教材發佈與電子書連結方式【電算中心/郭景淵】

在本校的BB系統中,針對跨校修課的學生來說,如果老師所指定的指定參考用書在ebrary有提供的話,那只要直接進入Blackboard就可使用了,還蠻方便的呢!透過ebrary這類提供URL Referral機制的全文電子書或資料庫,則可以經由出版社的設定馬上和線上教學系統整合,使得暫無發展整合計劃的學校可以立即享有線上使用eReserve的便利唷! 至於怎麼來使用呢?我們可以透過ebrary的標籤頁進入,建議是先按住右鍵另開視窗,這樣才不會找不到回BB的路。然後搜尋裡面的藏書後,將內容反白複製起來,然後copy到BB所要張貼的項目中即可。 →回本期焦點內容

2. BB的小幫手-工作與行事曆【電算中心/郭景淵】

BB裡面的工作以及行事曆是功能裡面最基本,也是老師最少用到的。其實,它的提醒功能對於頻繁使用BB的老師是非常有幫助的。而且兩者皆是預設放在「我的機構」內,一登入就可以看到的,非常的醒目!要告知重要性與目前狀態的設定方式 「我的工作」設定追蹤後,即會出現在「我的機構」版面,它可以設定優先權及工作狀態,讓老師很方便掌握目前課程的規劃。而行事曆的部份,則可檢視已安排之事件,裡面可根據當日、週、月、年來檢視事件,在查詢部分也可以做快速跳躍,也可輸入日期,以查看特定日期的事件,對於老師時程的掌控是有相當的助益的。 →回本期焦點內容

《四》軟硬體專欄

1. (硬體)網路附加儲存系統設備-離線備份保障BB課程【電算中心/郭景淵】

針對日益增加的課程,除了擴充系統的硬碟容量供老師上課放置教材之外,為了強化現行系統設備的備份備援機制以及風險管理考量,以及保障學校老師在BB上所放置的課程教材內容。所以我們之前採購的一台鴻佰NAStorage 8200T5網路附加儲存系統來做為離線備份之用,已經正式上線運作,可立即提供BB系統一個良善的備份環境,不過系統仍須手動操作備份,這是最美中不足的地方。 →回本期焦點內容

2. (軟體)BB週邊擴充模組介紹-Horizon Wimba 的EduVoice和Questionmark的適性化測驗結合成語音考試【電算中心/郭景淵】

BB不僅是系統和工具業者需要互相合作,現在工具廠商間的合作更使得老師可使用更多樣化的語音工具於教學中,使用教育科技所帶來的效率, 使得老師可更專心於教學活動及教學內容的規劃。我們提出兩個使用如此整合系統的範例如下:
Virginia Commonwealth University
http://www.vcu.edu/web/blackboard/wimba.html
U. Penn
http://ccat.sas.upenn.edu/bb/tutorial/wimba.html
這兩個學校都應用了整合技術,讓老師和學生可在線上課程內使用語音工具。對學生來說,在語言課程,他可以耹聽老師的示範或說明,而他同時也可在線上練習,以下是整合後的Demo Site,可以讓人進一步了解語音工具如何使用於課程中。
http://www.horizonwimba.com/demos/blackboard.php
同時,也有老師希望能提供學生適性化的語言測驗,而且還要讓同學們能夠開口講並做評分,這樣才能知道他們上課有沒有預習或複習。經由Questionmark及Horizon Wimba公司的合作,他們把測驗系統和語音工具整合在一起。同時,透過這樣的整合,也讓學校在推廣語言教學時,可以把觸角伸向遠距教學的領域。
http://www.horizonwimba.com/solutions/assessments.php
如果再跟線上教學系統整合,那就更加便利了;學校透過網際網路,可以開設線上語文課程,招收位於全世界的學生,對於我國推廣華語文教學也有相當大的助力唷! →回本期焦點內容

《五》操作問與答

1. 請問一下,校外人士可以使用BB嗎?還是本校學生才可以使用?【電算中心/郭景淵】

Ans:原則上是本校師生才能夠使用BB系統,但是外校人士也可以透過「預覽」按鈕來觀看開放的課程及社群。不過如果您的成員中,有一個具備BB師生身份的人,就可以在社群中自行建立組織及討論區,組織功能幾乎跟課程設定使用上一模一樣。 目前社群建立我們是採取開放政策,也就是您可以自行建立無需申請;不過因為我們會定期清掉一些沒有再用的組織,所以如果您有需要長久時間使用的話,請務必先向我們申請,申請資料包含:建立者帳號姓名、課程建立名稱、課程代號(必須要英文或數字),希望各使用單位能夠配合,謝謝! →回本期焦點內容

2. 老師反應說bb系統好像這一兩個禮拜天都有問題沒辦法使用呢?【電算中心/郭景淵】

Ans:BB系統每週日清晨都會做備份備援的動作,因此這段時間有時候會出現系統暫停服務的情況,不過並非不穩定,只是在備份時如果有寫入的動作,會讓系統備份增加負擔,目前計中已經在檢討BB的備份方式,除此之外,我們也將請廠商提出解決之道,使得BB系統穩定度上可以更為加強,所以這段時間有不便之處,敬請見諒! →回本期焦點內容

《六》BB使用心得專欄徵稿
1.來稿請附照片,中文12號新細明體或英文12號Times New Roman,直式橫書(由左至右,由上至下),每行間距18pt。
2.目前因經費考量,因此無論校內外提供稿件者,均無提供稿費。
3.凡投稿至電算中心BB電子報之稿件,均已同意將文章及照片授權中央大學電算中心使用,未來本單位得將稿件製作成刊物、數位形式檔案及譯稿等形式,供中央大學電算中心作為教學、研究、公共服務用途與網際網路使用。→回本期焦點內容

 

     

計中電子報 雙週刊、週二發報
㊣ 版權所有 轉載必究 ㊣
*如對本報有任何建議,請與我連絡*
↘聯絡電話:(03)4227151轉57535
↘聯絡信箱: center18@cc.ncu.edu.tw
發行人:許健平
總編輯:嚴文淑
發行單位:中央大學電子計算機中心
開發平台:中央大學電子計算機中心