二、安装后的安全问题与相应的配置
按照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。