讓你的郵件更安全 加密保護(hù)郵件服務(wù)器
SSL(Security Socket Layer)協(xié)議由Netscape公司設(shè)計開發(fā),主要用來提供對用戶和服務(wù)器的認(rèn)證;對傳送的數(shù)據(jù)進(jìn)行加密和隱藏;確保數(shù)據(jù)在傳送中不被改變(即數(shù)據(jù)的完整性),現(xiàn)已成為該領(lǐng)域中全球化的標(biāo)準(zhǔn)。
Stunnel是一款可以加密網(wǎng)絡(luò)數(shù)據(jù)的TCP連接工具,可工作在Unix、Linux和Windows平臺上,采用Client/Server模式,將CIient端的網(wǎng)絡(luò)數(shù)據(jù)采用SSL加密,安全傳輸?shù)街付ǖ腟erver端再進(jìn)行解密還原,然后發(fā)送到訪問的服務(wù)器。
StunneI很好地解決了SSL不能對現(xiàn)有舊的應(yīng)用程序傳輸數(shù)據(jù)加密的問題。在Stunnel出現(xiàn)之前,要實現(xiàn)安全的數(shù)據(jù)傳輸,只能依靠在應(yīng)用程序之中添加SSL代碼的方式來提高安全性。Stunnel基于OPenSSL,所以要求安裝OpenSSL,并進(jìn)行正確的配置。Stunnel可以向不啟用SSL的服務(wù)器端軟件提供保護(hù)卻不需對守護(hù)進(jìn)程的編碼做任何修改,Stunnel的工作原理如圖所示。例如,可以使用Stunnel保護(hù)POP3、SMTP和IMAP服務(wù)器。StunneI最新版本為stunel-4.33.tar.gz,其官網(wǎng)為www.stunnel.org。
1.安裝編譯Stunnel
StunneI安裝非常簡單,筆者在此就不在累贅,使用下面的命令完成對StunneI的安裝:
#wget http://www.stunnel.org/download/stunnel/src/stunnel-4.33.tar.gz #tar zxvf stunel-4.33.tar.gz #./configure;make;make install |
圖Stunnel工作原理
下面使用Stunnel封裝一些流行的郵件服務(wù)器。
2.保障IMAP安全
IMAP(Internet MessageAccess Protocol)是用戶從不同的計算機(jī)訪問郵件的一種方式。其工作方式為在一臺中央計算機(jī)上存儲信息,并且允許用戶訪問信息的一個拷貝。用戶可以讓本地工作站和服務(wù)器同步, 此外也可以為郵件創(chuàng)建一個文件夾, 并且具有完全的訪問權(quán)限。通過Stunnel封裝IMAP有兩種方法。
1).通過stunnel直接運行IMAP服務(wù)
如果有使用SSL協(xié)議連接的IMAP客戶端,則推薦使用這種方法。首先關(guān)閉imapd守護(hù)進(jìn)程,然后使用重啟腳本(/etc/rc.d/rc.1ocal)中的命令行代替imapd,使用如下命令:
/usr/sbin/stunel -p /usr/local/ssl/certs/stunel.pem -d 993 -r localhost:143 |
這個命令使用IMAPS端口(993)上指定的文件運行Stunnel,imapd端口監(jiān)聽程序的代理,在143端口上運行。如果允許非SSL IMAP客戶端連接到標(biāo)準(zhǔn)的IMAP端口(143),可以配置SSL IMAP客戶端連接到端口I MAPS(993)代替:
/usr/sbin/stunel -p /usr/local/ssl/certs/stunel.pem -d 993 -l /usr/sbin/imapd |
2).使用xinetd運行安全的IMAP
從守護(hù)進(jìn)程的概念可以看出,對于系統(tǒng)所要通過的每一種服務(wù),都必須運行監(jiān)聽某個端口連接所發(fā)生的守護(hù)進(jìn)程,這通常意味著資源浪費。
為了解決這個問題,Linux引入了"網(wǎng)絡(luò)守護(hù)進(jìn)程服務(wù)程序" 的概念。xinetd能夠同時監(jiān)聽多個指定的端口,在接受用戶請求時,能夠根據(jù)用戶請求的端口不同,啟動不同的網(wǎng)絡(luò)服務(wù)進(jìn)程處理這些用戶請求??梢园褁inetd看做一個管理啟動服務(wù)的管理服務(wù)器,把一個客戶請求交給程序處理,然后啟動相應(yīng)的守護(hù)進(jìn)程。如果使用xinetd運行IMAP服務(wù),修改配置文件(/etc/xinetd.d/imapd)如下:
service imap { disable=no socket_type=stream wait=no user=root port=143 server=/usr/sbin/stunel server_args=stunel imapd -l /usr/sbin/imapd -imapd log_on_succes+=USERID log_on_failure+=USERID #env=VIRTDOMAIN=virtual.hostname } |
然后向超級服務(wù)程序傳遞SIGHUP信號,重新載人xinetd配置:
killall -USR1 xinetd |
3.保障POP3安全
為了使用SSL連接POP3郵件服務(wù),要重新配置文件腳本如下:
service pop3s { disable=no socket_type=stream wait=no user=root server=/usr/sbin/stunel server_args=stunel pop3s -l /usr/sbin/ipop3d -ipop3d log_on_success+=USERID log_on_failure+=USERID } |
如果客戶端軟件不能使用基于SSL的POP3郵件用戶代理MUA,則可以使用POP3重新定向的方法。
4.保障sMTP安全
如果一個正在運行的SMTP服務(wù)器需要允許出差在外的員工向內(nèi)部網(wǎng)絡(luò)發(fā)送多個郵件,則可以進(jìn)行如下設(shè)定:
/usr/local/sbin/stunel -d 25 -p /var/lib/ssl/certs/server.pem -r localhost:smtp |
這樣就只能保障終端用戶和郵件服務(wù)器之間的安全SMTP傳輸。郵件發(fā)送到域之外的郵件服務(wù)器將不在安全范圍之內(nèi)。
Stunnel安全工具可以為兩個網(wǎng)絡(luò)或多個網(wǎng)絡(luò)的郵件服務(wù)器提供安全保障。即使用戶是一個系統(tǒng)管理員,而不是開發(fā)者,Stunnel也是一個強(qiáng)大的工具,因為可以向不啟用SSL的服務(wù)器端軟件添加SSL。例如, 以上提到的使用Stunnel保護(hù)POP3、SMTP和IMAP服務(wù)器。惟一不盡人意的地方是,需要使用這些服務(wù)器的安全版本,客戶機(jī)必須是可識別SSL的。Stunnel也有些局限性, 比如在服務(wù)器端, 當(dāng)前只能夠透明地代理Linux客戶機(jī)。在客戶機(jī)端,不容易執(zhí)行充分的證書驗證。
【編輯推薦】