Sybase ASE 安全登陆Linux
在各种操作系统中,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 Inte易做图ces 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 inte易做图ces entry
其中的主机名在一般情况下由安装程序自动从环境中提取,通常不需要改动。但是,如果用户配置的是远程服务器的话,此处应该修改为相应的服务器地址。第二项的端口号用户可以自由选择,通常选择在1024以上。同样,如果是配置远程服务器,端口号应该修改为正确的端口地址。这2个参数会记录在/opt/sybase/inte易做图ces文件中,也就是说在配置完成后,用户也可以手工修改该文件来重新改变连机端口的参数。
第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。
补充:数据库,SYBASE教程