在各種操作系統(tǒng)中,Linux已經(jīng)流行。因此,越來(lái)越多的主流數(shù)據(jù)庫(kù)廠商將它們的產(chǎn)品移植到Linux操作系統(tǒng)平臺(tái),例如Sybase、Oracle和IBM等。此外,可以使用的自由軟件越來(lái)越多。自由軟件庫(kù)中已經(jīng)包括了Sybase ASE for Linux、Oracle for Linux、Informix for Linux等數(shù)據(jù)庫(kù)軟件以及其他各種軟件。
在上述幾種Linux平臺(tái)上的數(shù)據(jù)庫(kù)產(chǎn)品中,Sybase ASE的性能很好,緊湊的程序分發(fā)包里包含了全部文檔、數(shù)據(jù)庫(kù)備份和監(jiān)視等工具,同時(shí)它對(duì)系統(tǒng)的要求不高(系統(tǒng)配置為32MB內(nèi)存,包含文檔的全部安裝需要200MB硬盤(pán),否則需要120MB硬盤(pán))。它的安裝、配置過(guò)程與其他產(chǎn)品相比也很簡(jiǎn)單。這些優(yōu)勢(shì),連同Sybase數(shù)據(jù)庫(kù)產(chǎn)品本來(lái)的用戶基礎(chǔ),使得它成為L(zhǎng)inux平臺(tái)上出色的數(shù)據(jù)庫(kù)軟件。
但是,Sybase ASE在正常安裝完成后,數(shù)據(jù)庫(kù)超級(jí)用戶的賬號(hào)沒(méi)有設(shè)置口令。這樣,Internet上每一個(gè)知道服務(wù)器端口號(hào)的用戶或者本機(jī)上的所有可登錄用戶都可以以超級(jí)用戶身份對(duì)數(shù)據(jù)庫(kù)隨意操作。這應(yīng)該說(shuō)是一個(gè)非常大的安全漏洞。下面將逐步介紹Sybase ASE for Linux 的安裝過(guò)程,以及安裝完成后需要采取的安全配置和較為安全的系統(tǒng)。
一、Sybase ASE的安裝
首先下載Sybase ASE for Linux軟件包,網(wǎng)上可以比較容易找到RPM格式的二進(jìn)制發(fā)行包,包括sybase-ase-11.0.3.3-1.i386.rpm(主程序包)、sybase-doc-11.0.3.3-1.i386.rpm(文檔包)。RPM是Redhat公司的軟件包管理程序,使用它可以非常方便地安裝和卸載程序包,并保持它們之間的依賴關(guān)系。
然后,以超級(jí)用戶的身份鍵入命令:
#rpm -i sybase-ase-11.0.3.3-1.i386.rpm
屏幕會(huì)顯示Sybase公司的版權(quán)說(shuō)明,鍵入“yes”表示同意。接下去安裝程序會(huì)提示將在系統(tǒng)中創(chuàng)建一個(gè)用戶sybase和相應(yīng)的組,并要求為該賬號(hào)設(shè)置相應(yīng)的口令。Sybase數(shù)據(jù)庫(kù)安裝的缺省目錄是/opt/sybase。安裝時(shí)要注意磁盤(pán)分區(qū)有足夠的空間(大于200MB)。
下一步可以重新以sybase登錄繼續(xù)配置,也可以使用 #su - sybase 改變身份為sybase來(lái)繼續(xù)對(duì)sybase進(jìn)行安裝。屏幕上將會(huì)出現(xiàn):
1.Release directory:/opt/Sybase
2.Edit / View Interfaces File
3.Configure a Server product
4.Configure an Open Client/Server product
Ctrl-a Accept and Continue, Ctrl-x Exit Screen, ? Help.
Enter the number of your choice and press return:
選擇3來(lái)配置服務(wù)器,在該選項(xiàng)中將會(huì)一同配置服務(wù)器監(jiān)聽(tīng)端口。在下面每一個(gè)屏幕提示下,數(shù)字表示具體選項(xiàng),Ctrl-a表示已經(jīng)配置完畢,進(jìn)行下一步,Ctrl-x表示放棄剛才的選擇,退回上一步,下面省去同樣的提示。選擇3后,出現(xiàn)以下提示:
Product Date InstalledDate Configured
1.SQL Server11 Sep 1998 06:47
2.Backup Server 11 Sep 1998 06:47
首先選擇1配置SQL服務(wù)器,出現(xiàn)以下提示:
1.Configure a new SQL Server
2.Configure an existing SQL Server
3.Upgrade an existing SQL Server
然后選擇1來(lái)配置一個(gè)新的SQL服務(wù)器。配置備份服務(wù)器可以在SQL服務(wù)器配置完成后再來(lái)。由于是第一次安裝,所以選擇配置新的服務(wù)器,后面2個(gè)選項(xiàng)分別提供了重新配置或者升級(jí)原服務(wù)器的功能
接下來(lái)的提示要求選擇服務(wù)器的名字,具體如下:
ADD NEW SQL SERVER
1.SQL Server name:SYBASE
默認(rèn)為SYBASE。這與sybase的交互式訪問(wèn)工具isql的默認(rèn)服務(wù)器名字是一致的。
完成上述配置后,出現(xiàn)如下顯示:
SQL SERVER CONFIGURATION
1.CONFIGURE SERVER'S INTERFACES FILE ENTRY Incomplete
2.MASTER DEVICE CONFIGURATION Incomplete 3.SYBSYSTEMPROCS DATABASE CONFIGURATION Incomplete
4.SET ERRORLOG LOCATION Incomplete 5.CONFIGURE DEFAULT BACKUP SERVER Incomplete
6.CONFIGURE LANGUAGES Incomplete 7.CONFIGURE CHARACTER SETS Incomplete
8.CONFIGURE SORT ORDER Incomplete 9.ACTIVATE AUDITING Incomplete
以上關(guān)系到數(shù)據(jù)庫(kù)的具體內(nèi)容,包括端口號(hào)、設(shè)備、語(yǔ)言和字符集等。下面假定不改變默認(rèn)名,直接按Ctrl-a接受。
第1項(xiàng)配置服務(wù)器端口,選擇后出現(xiàn)下面的提示屏幕:
SERVER INTERFACES FILE ENTRY SCREEN
Server name:SYBASE
1.Retry Count:0
2.Retry Delay:0
3.Add a new listener service
選擇增加一個(gè)監(jiān)聽(tīng)端口,出現(xiàn)下面的配置TCP端口的屏幕:
EDIT TCP SERVICE
1.Hostname/Address: localhost.localdomain
2.Port:
3.Name Alias:
4.Delete this service from the interfaces entry
其中的主機(jī)名在一般情況下由安裝程序自動(dòng)從環(huán)境中提取,通常不需要改動(dòng)。但是,如果用戶配置的是遠(yuǎn)程服務(wù)器的話,此處應(yīng)該修改為相應(yīng)的服務(wù)器地址。第二項(xiàng)的端口號(hào)用戶可以自由選擇,通常選擇在1024以上。同樣,如果是配置遠(yuǎn)程服務(wù)器,端口號(hào)應(yīng)該修改為正確的端口地址。這2個(gè)參數(shù)會(huì)記錄在/opt/sybase/interfaces文件中,也就是說(shuō)在配置完成后,用戶也可以手工修改該文件來(lái)重新改變連機(jī)端口的參數(shù)。
第2項(xiàng)配置數(shù)據(jù)庫(kù)主設(shè)備。數(shù)據(jù)庫(kù)主設(shè)備可以是一個(gè)新的物理設(shè)備,也可以是磁盤(pán)中的一個(gè)文件,大小可以根據(jù)需要和存儲(chǔ)設(shè)備的空間大小調(diào)整。
后面各項(xiàng)的配置在普通應(yīng)用下,基本上不需要修改缺省值。按照提示繼續(xù)做下去,依次分別是配置Sybase系統(tǒng)進(jìn)程數(shù)據(jù)庫(kù)、錯(cuò)誤日志、缺省備份服務(wù)器、字符集、數(shù)據(jù)庫(kù)排序和激活審計(jì)等。其中的缺省備份服務(wù)器和激活審計(jì)配置對(duì)于數(shù)據(jù)庫(kù)安全較為重要。
在管理員希望對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份時(shí)需要備份服務(wù)器功能,它的原理是在一個(gè)特定的端口監(jiān)聽(tīng)備份申請(qǐng)(該端口號(hào)必須與前面數(shù)據(jù)庫(kù)端口號(hào)區(qū)分開(kāi)),將數(shù)據(jù)庫(kù)的數(shù)據(jù)備份到指定的設(shè)備中去(例如“/tmp/sybase.mybackup.19990909”)。選擇該項(xiàng)后,出現(xiàn)如下顯示:
SET THE SQL SERVER'S BACKUP SERVER
1.SQL Server Backup Server name:SYB_BACKUP
審計(jì)功能在缺省狀態(tài)下并不打開(kāi)。如果管理員認(rèn)為需要,則可以參照下面的屏幕創(chuàng)建一個(gè)單獨(dú)的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)系統(tǒng)審計(jì)信息。
ACTIVATE AUDITING
1.Install auditing:no
2.sybsecurity database size (Meg):5
3.sybsecurity logical device name:sybsecurity
4.create new device for the sybsecurity database:no
二、 安裝后的安全問(wèn)題與相應(yīng)的配置
按照DoD52.00.28-STD信任計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn),即通常所說(shuō)的桔皮書(shū),Sybase ASE的設(shè)計(jì)標(biāo)準(zhǔn)為C2級(jí),它提供了4種安全機(jī)制,分別是訪問(wèn)控制、認(rèn)證控制、角色劃分和數(shù)據(jù)庫(kù)審計(jì)。訪問(wèn)控制是指對(duì)象所有者可以對(duì)不同的登錄用戶賦予或者取消某些訪問(wèn)的權(quán)利。認(rèn)證控制是指保證只有被授權(quán)的用戶才能登錄進(jìn)入系統(tǒng)。角色的劃分使得系統(tǒng)管理員可以將系統(tǒng)的一些特殊權(quán)利分別賦予某一個(gè)用戶,使他們能夠分別完成某些關(guān)鍵任務(wù)。具體來(lái)說(shuō),Sybase數(shù)據(jù)庫(kù)系統(tǒng)設(shè)定了3種主要角色:系統(tǒng)管理員(sa_role)、系統(tǒng)安全員(sso_role)和系統(tǒng)操作員(oper_role)。數(shù)據(jù)庫(kù)審計(jì)系統(tǒng)可以對(duì)系統(tǒng)的登錄、退出、數(shù)據(jù)庫(kù)啟動(dòng)、遠(yuǎn)程過(guò)程調(diào)用、角色的變化和對(duì)各種對(duì)象的訪問(wèn)等操作提供記錄與審查。
數(shù)據(jù)庫(kù)應(yīng)用采用客戶機(jī)/服務(wù)器架構(gòu),服務(wù)器端在某一個(gè)端口監(jiān)聽(tīng)網(wǎng)絡(luò)連接請(qǐng)求。客戶端申請(qǐng)連接,輸入合法的用戶名和相應(yīng)的口令,進(jìn)入服務(wù)器,然后運(yùn)行需要的命令。這樣,在數(shù)據(jù)庫(kù)用戶的配置管理方面如果出現(xiàn)安全漏洞,勢(shì)必會(huì)給系統(tǒng)和數(shù)據(jù)帶來(lái)非常大的威脅?墒,Sybase ASE在正常安裝完成后,數(shù)據(jù)庫(kù)超級(jí)用戶的賬號(hào)沒(méi)有設(shè)置口令。這樣,Internet上每一個(gè)知道服務(wù)器端口號(hào)的用戶或者本機(jī)上的所有可登錄用戶都可以以超級(jí)用戶身份對(duì)數(shù)據(jù)庫(kù)隨意操作。這應(yīng)該說(shuō)是一個(gè)非常大的安全漏洞。下面,通過(guò)對(duì)角色的分析,給出解決這一問(wèn)題的方法。
1.三種角色的主要權(quán)利和任務(wù)
(1) sa_role
管理磁盤(pán)使用,改變系統(tǒng)各種運(yùn)行參數(shù),診斷系統(tǒng)出現(xiàn)的各種問(wèn)題,備份和恢復(fù)數(shù)據(jù)庫(kù),對(duì)其他用戶賦予或者取消sa_role,創(chuàng)建用戶數(shù)據(jù)庫(kù)并為它們授予合適的屬主,以及建立用戶組等等。
(2) sso_role
創(chuàng)建登錄賬號(hào)并初始化口令,更改其他所有賬號(hào)的口令,對(duì)其他用戶賦予或者取消sso_role以及oper_role,設(shè)定口令時(shí)限以及管理審計(jì)系統(tǒng)等。
(3) oper_role
備份和恢復(fù)各種數(shù)據(jù)庫(kù)。
2.更改sa口令
Sybase ASE在安裝完成時(shí)在系統(tǒng)中創(chuàng)建了用戶sa,它同時(shí)具有sa_role和sso_role兩種角色。此時(shí)的用戶“sa”在服務(wù)器中具有無(wú)限的權(quán)利,相當(dāng)于Unix系統(tǒng)中一個(gè)沒(méi)有口令的root。這樣,任何蓄意的聯(lián)網(wǎng)用戶都可以完全控制該SQL服務(wù)器。這不能不說(shuō)是Sybase ASE的一個(gè)重大安全漏洞。為此,強(qiáng)烈建議在完成下面的安全配置之前請(qǐng)勿將服務(wù)器接入網(wǎng)絡(luò)。
首先,利用Sybase提供的交互式訪問(wèn)工具isql連接服務(wù)器。鍵入以下命令:
$/opt/sybase/bin/isql -Usa -P -Smysybase
表示以用戶sa、空口令連接服務(wù)器mysybase。更改sa的口令,
>sp_password NULL,"NewPassWd"
>go
將原來(lái)的空口令(NULL)改為當(dāng)前的“NewPassWd”。這里的口令最少為6個(gè)字符長(zhǎng)度,可以由任何可打印字符、字母和數(shù)字等組成。
3.關(guān)閉sa賬號(hào)
角色的劃分可以說(shuō)是Sybase數(shù)據(jù)庫(kù)相對(duì)于普通Unix系統(tǒng)在安全體制方面的改進(jìn)。但是,大家知道,擁有無(wú)限權(quán)利的超級(jí)用戶一方面是系統(tǒng)的保護(hù)者,但是更多的時(shí)候是給系統(tǒng)的安全帶來(lái)了巨大的安全威脅。簡(jiǎn)單來(lái)說(shuō),超級(jí)用戶一個(gè)低級(jí)的誤操作就可能毀掉整個(gè)服務(wù)器。從攻擊的角度來(lái)看,攻擊者只要獲