在各種操作系統中,Linux已經流行。因此,越來越多的主流數據庫廠商將它們的產品移植到Linux操作系統平台,例如Sybase、Oracle和IBM等。此外,可以使用的自由軟件越來越多。自由軟件庫中已經包括了Sybase ASE for Linux、Oracle for Linux、Informix for Linux等數據庫軟件以及其他各種軟件。
在上述幾種Linux平台上的數據庫產品中,Sybase ASE的性能很好,緊湊的程序分發包裡包含了全部文檔、數據庫備份和監視等工具,同時它對系統的要求不高(系統配置為32MB內存,包含文檔的全部安裝需要200MB硬盤,否則需要120MB硬盤)。它的安裝、配置過程與其他產品相比也很簡單。這些優勢,連同Sybase數據庫產品本來的用戶基礎,使得它成為Linux平台上出色的數據庫軟件。
但是,Sybase ASE在正常安裝完成後,數據庫超級用戶的賬號沒有設置口令。這樣,Internet上每一個知道服務器端口號的用戶或者本機上的所有可登錄用戶都可以以超級用戶身份對數據庫隨意操作。這應該說是一個非常大的安全漏洞。下面將逐步介紹Sybase ASE for Linux 的安裝過程,以及安裝完成後需要采取的安全配置和較為安全的系統。
一、Sybase ASE的安裝
首先下載Sybase ASE for Linux軟件包,網上可以比較容易找到RPM格式的二進制發行包,包括sybase-ase-11.0.3.3-1.i386.rpm(主程序包)、sybase-doc-11.0.3.3-1.i386.rpm(文檔包)。RPM是Redhat公司的軟件包管理程序,使用它可以非常方便地安裝和卸載程序包,並保持它們之間的依賴關系。
然後,以超級用戶的身份鍵入命令:
#rpm -i sybase-ase-11.0.3.3-1.i386.rpm
屏幕會顯示Sybase公司的版權說明,鍵入“yes”表示同意。接下去安裝程序會提示將在系統中創建一個用戶sybase和相應的組,並要求為該賬號設置相應的口令。Sybase數據庫安裝的缺省目錄是/opt/sybase。安裝時要注意磁盤分區有足夠的空間(大於200MB)。
下一步可以重新以sybase登錄繼續配置,也可以使用 #su - sybase 改變身份為sybase來繼續對sybase進行安裝。屏幕上將會出現:
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來配置服務器,在該選項中將會一同配置服務器監聽端口。在下面每一個屏幕提示下,數字表示具體選項,Ctrl-a表示已經配置完畢,進行下一步,Ctrl-x表示放棄剛才的選擇,退回上一步,下面省去同樣的提示。選擇3後,出現以下提示:
Product Date InstalledDate Configured
1.SQL Server11 Sep 1998 06:47
2.Backup Server 11 Sep 1998 06:47
首先選擇1配置SQL服務器,出現以下提示:
1.Configure a new SQL Server
2.Configure an existing SQL Server
3.Upgrade an existing SQL Server
然後選擇1來配置一個新的SQL服務器。配置備份服務器可以在SQL服務器配置完成後再來。由於是第一次安裝,所以選擇配置新的服務器,後面2個選項分別提供了重新配置或者升級原服務器的功能
接下來的提示要求選擇服務器的名字,具體如下:
ADD NEW SQL SERVER
1.SQL Server name:SYBASE
默認為SYBASE。這與sybase的交互式訪問工具isql的默認服務器名字是一致的。
完成上述配置後,出現如下顯示:
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
以上關系到數據庫的具體內容,包括端口號、設備、語言和字符集等。下面假定不改變默認名,直接按Ctrl-a接受。
第1項配置服務器端口,選擇後出現下面的提示屏幕:
SERVER INTERFACES FILE ENTRY SCREEN
Server name:SYBASE
1.Retry Count:0
2.Retry Delay:0
3.Add a new listener service
選擇增加一個監聽端口,出現下面的配置TCP端口的屏幕:
EDIT TCP SERVICE
1.Hostname/Address: localhost.localdomain
2.Port:
3.Name Alias:
4.Delete this service from the interfaces entry
其中的主機名在一般情況下由安裝程序自動從環境中提取,通常不需要改動。但是,如果用戶配置的是遠程服務器的話,此處應該修改為相應的服務器地址。第二項的端口號用戶可以自由選擇,通常選擇在1024以上。同樣,如果是配置遠程服務器,端口號應該修改為正確的端口地址。這2個參數會記錄在/opt/sybase/interfaces文件中,也就是說在配置完成後,用戶也可以手工修改該文件來重新改變連機端口的參數。
第2項配置數據庫主設備。數據庫主設備可以是一個新的物理設備,也可以是磁盤中的一個文件,大小可以根據需要和存儲設備的空間大小調整。
後面各項的配置在普通應用下,基本上不需要修改缺省值。按照提示繼續做下去,依次分別是配置Sybase系統進程數據庫、錯誤日志、缺省備份服務器、字符集、數據庫排序和激活審計等。其中的缺省備份服務器和激活審計配置對於數據庫安全較為重要。
在管理員希望對數據庫進行備份時需要備份服務器功能,它的原理是在一個特定的端口監聽備份申請(該端口號必須與前面數據庫端口號區分開),將數據庫的數據備份到指定的設備中去(例如“/tmp/sybase.mybackup.19990909”)。選擇該項後,出現如下顯示:
SET THE SQL SERVER'S BACKUP SERVER
1.SQL Server Backup Server name:SYB_BACKUP
審計功能在缺省狀態下並不打開。如果管理員認為需要,則可以參照下面的屏幕創建一個單獨的數據庫來存儲系統審計信息。
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
二、 安裝後的安全問題與相應的配置
按照DoD52.00.28-STD信任計算機系統評估標准,即通常所說的桔皮書,Sybase ASE的設計標准為C2級,它提供了4種安全機制,分別是訪問控制、認證控制、角色劃分和數據庫審計。訪問控制是指對象所有者可以對不同的登錄用戶賦予或者取消某些訪問的權利。認證控制是指保證只有被授權的用戶才能登錄進入系統。角色的劃分使得系統管理員可以將系統的一些特殊權利分別賦予某一個用戶,使他們能夠分別完成某些關鍵任務。具體來說,Sybase數據庫系統設定了3種主要角色:系統管理員(sa_role)、系統安全員(sso_role)和系統操作員(oper_role)。數據庫審計系統可以對系統的登錄、退出、數據庫啟動、遠程過程調用、角色的變化和對各種對象的訪問等操作提供記錄與審查。
數據庫應用采用客戶機/服務器架構,服務器端在某一個端口監聽網絡連接請求。客戶端申請連接,輸入合法的用戶名和相應的口令,進入服務器,然後運行需要的命令。這樣,在數據庫用戶的配置管理方面如果出現安全漏洞,勢必會給系統和數據帶來非常大的威脅。可是,Sybase ASE在正常安裝完成後,數據庫超級用戶的賬號沒有設置口令。這樣,Internet上每一個知道服務器端口號的用戶或者本機上的所有可登錄用戶都可以以超級用戶身份對數據庫隨意操作。這應該說是一個非常大的安全漏洞。下面,通過對角色的分析,給出解決這一問題的方法。
1.三種角色的主要權利和任務
(1) sa_role
管理磁盤使用,改變系統各種運行參數,診斷系統出現的各種問題,備份和恢復數據庫,對其他用戶賦予或者取消sa_role,創建用戶數據庫並為它們授予合適的屬主,以及建立用戶組等等。
(2) sso_role
創建登錄賬號並初始化口令,更改其他所有賬號的口令,對其他用戶賦予或者取消sso_role以及oper_role,設定口令時限以及管理審計系統等。
(3) oper_role
備份和恢復各種數據庫。
2.更改sa口令
Sybase ASE在安裝完成時在系統中創建了用戶sa,它同時具有sa_role和sso_role兩種角色。此時的用戶“sa”在服務器中具有無限的權利,相當於Unix系統中一個沒有口令的root。這樣,任何蓄意的聯網用戶都可以完全控制該SQL服務器。這不能不說是Sybase ASE的一個重大安全漏洞。為此,強烈建議在完成下面的安全配置之前請勿將服務器接入網絡。
首先,利用Sybase提供的交互式訪問工具isql連接服務器。鍵入以下命令:
$/opt/sybase/bin/isql -Usa -P -Smysybase
表示以用戶sa、空口令連接服務器mysybase。更改sa的口令,
>sp_password NULL,"NewPassWd"
>go
將原來的空口令(NULL)改為當前的“NewPassWd”。這裡的口令最少為6個字符長度,可以由任何可打印字符、字母和數字等組成。
3.關閉sa賬號
角色的劃分可以說是Sybase數據庫相對於普通Unix系統在安全體制方面的改進。但是,大家知道,擁有無限權利的超級用戶一方面是系統的保護者,但是更多的時候是給系統的安全帶來了巨大的安全威脅。簡單來說,超級用戶一個低級的誤操作就可能毀掉整個服務器。從攻擊的角度來看,攻擊者只要獲得了超級用戶的身份就表明他已經徹底攻克了該系統。而對於經過特權分割安全加固的系統來說,攻擊者必須將若干個特權用戶全部破解,才能得以完全控制該系統。可以說超級權利用戶的存在是區分C級和B級安全系統的一個重要標志。
在設置sa賬號的口令以後,通過創建新用戶,並區分sa的角色,關閉sa,從而進一步加強服務器的安全。Sybasre提供了幾個相應的命令sp_addlogin和sp_role等來完成上述操作。
>sp_addlogin sa_user,"Sa,PassWd"
>sp_addlogin sso_user,"Sso,PassW"
>sp_role "grant",sa_role,sa_user
>sp_role "grant",sso_role,sso_user
>sp_locklogin sa,"lock"
上述命令創建了兩個用戶sa_user,sso_user,並且分別設置了口令“Sa,PassW”和“Sso,Pass”,設置了角色sa_role和sso_role,然後關閉了賬號sa。