0x01 前言
之前做等保的时候,遇到了一个等保三级项目,其使用的数据库就是Sybase,虽然在出发之前就已经做了准备(网上找了几个查询命令),但是到了现场还是遇到了各种问题数据库都不知道怎么连,第三方运维也不配合,等保可太卑微了,网上的资料也很少,最近得空正好做个整理学习。
注:在执行任何操作时都应该谨慎,避免出现误操作的情况。
0x02 Sybase基本了解
Sybase 数据库是一种关系型数据库管理系统(RDBMS),最初由 Sybase 公司于 1984 年推出。它被广泛应用于企业级应用程序、金融、电信和其他大型数据处理系统中。
Sybase管理工具:
在SAP ASE 15.7.0 以前使用 Sybase Central 来进行管理
在SAP ASE 15.7.0 以后使用 SAP Control Center 来进行管理
在SAP ASE 16.0 SP 02 以上用 SAP ASE cockpit来进行管理
Sybase的用户角色:
在 Sybase 数据库中,有两个概念:用户和角色。用户是指可以访问数据库的人员或者应用程序,而角色是一组权限集合,可以对这些权限进行统一管理;
在 Sybase 数据库中,用户和角色是由 DBA(数据库管理员)创建和管理的。用户和角色之间有一定的关系,即用户可以属于多个角色,而一个角色可以包含多个用户。
角色种类
系统角色
用户自定义角色
系统默认角色
- sa_role:该角色是 Sybase 系统管理员角色,具有数据库中所有对象的完全权限,包括创建和删除对象、授权和撤销权限等操作。
- sso_role:该角色是 Sybase 系统安全官角色,用于管理数据库的用户和角色。sso_role 可以创建和删除用户和角色,以及授权和撤销权限等操作。
- oper_role:该角色是 Sybase 运维角色,用于管理数据库的运维任务。oper_role 具有备份、恢复、日志管理等权限。
- public_role:该角色是 Sybase 中默认的公共角色,所有用户都自动成为 public_role 的成员。public_role 没有任何权限,仅用于表示用户的成员关系。
Sybase默认用户账户:
sa和probe用户为系统初始创建时自动建立的用户,其它用户为管理员创建的用户;
probe是一个系统使用的用户,密码是不公开的,管理员没法用它登录数据库,
sa用户是系统管理员角色,“sa”的缺省口令为空, sa 具有SA和SSO的角色,具有SSO的登录帐户可以添加其他登录帐户。
Sybase默认数据库:
在 Sybase 数据库中,安装时会默认创建一些数据库。这些数据库通常包括系统数据库和用户数据库。下面是 Sybase 默认的一些数据库:
- master:该数据库是 Sybase 中的系统数据库,用于存储所有 Sybase 系统级别的信息。例如,登录名、用户、角色、配置信息、系统级别的对象等。
- tempdb:该数据库是 Sybase 中的系统数据库,用于存储临时表、变量、游标等临时数据。
- model:该数据库是 Sybase 中的系统数据库,用于作为创建新数据库时的模板。当创建新数据库时,Sybase 会将 model 数据库的结构复制到新数据库中。
- sybsystemprocs:该数据库包含了 Sybase 系统存储过程,如 sp_help、sp_configure、sp_adduser、sp_dropuser 等。
- sybsystemdb:该数据库包含了 Sybase 中用于管理系统的对象,如存储过程、视图等。
除了以上的系统数据库,Sybase 还会默认创建一个名为 "pubs2" 的示例数据库,包含一些演示数据和对象,用于测试和学习 Sybase 数据库。需要注意的是,这些数据库的名称可能会因 Sybase 版本的不同而有所变化。
0x03 Sybase之安全计算环境
(测试版本:Adaptive Server Enterprise/16.0 SP02 PL02)
以下测评指标来自《GB/T 28448-2019 信息安全技术网络安全等级保护测评要求》;
一、身份鉴别
a) 应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
1)核查用户在登录时是否采用了身份鉴别措施;
方法1登录测试是否使用口令进行身份鉴别:
isql -U sa -P Password -S servicename //servicename可以通过查看命令:showserver,即可看到-s 后面的服务名称。
使用用户名口令登录成功则符合;
方法2在网上查询时还有一条命令查询认证模式是否开启:
exec sp_loginconfig "login mode"
如果返回的值为 "standard",则表示 Sybase 数据库使用的是标准登录模式;如果返回的值为 "mixed",则表示 Sybase 数据库使用的是混合登录模式。(我测试没成功,可能是版本原因)
在或者方法3
select @@spid, name, value
from master..sysconfigures
where config=1703
如果返回的结果中 value 的值为 1,则表示认证模式已经启用;如果 value 的值为 0,则表示认证模式未启用。
2)应核查用户列表确认用户身份标识是否具有唯一性;
1> select * from master..syslogins //查看登录用户列表
2> go
注:每次敲完命令之后需要敲一个go系统才会执行命令;
方法2
select name, suid from master..syslogins where islocked = 0
该 SQL 语句查询了系统表 syslogins 中所有未被锁定的登录账户,并返回每个账户的名称(name)和唯一标识符(suid)。如果查询结果中没有重复的账户名称,则说明数据库中所有的账户名称都是唯一的。
3)应核查用户配置信息或测试验证是否不存在空口令用户;
1> select * from master..syslogins
2> go
用户下方具有散列值则满足或进行登录尝试:
方法2
select name from syslogins where password is null and islocked = 0
如果查询结果中存在账户名称,则说明该账户存在空口令;
4)应核查用户鉴别信息是否具有复杂度要求并定期更换。
全局口令长度查询:
1> sp_configure "minimum password length"
2> go
用户口令策略查询:
1> sp_displaylogin sa //sa为用户名,查询单个用户的口令策略,详见访问控制a小节
2> go
Config Value和Run Value均为6 表示为强制6位长度,默认为6
全局口令复杂度查询:
1> sp_configure "check password for digit" //全局
2> go
Config Value和Run Value均为1 表示启用数字密码,默认未开启为0
全局口令更改周期查询:
1> sp_configure "systemwide password expiration"
2> go
如果该参数值为 1,则表示启用了全局口令过期功能,默认未配置,为0。此时,可以通过以下 SQL 命令查询口令过期的时间间隔:
sp_configure "systemwide password expiration interval"
该参数的值表示口令的有效期,单位为天。默认情况下,该参数的值为 0,表示不启用口令过期功能。
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施;
1)应核查是否配置并启用了登录失败处理功能;
sp_configure "enable login failure handling"
如果该参数的值为 1,则表示登录失败处理功能已经开启;如果该参数的值为 0,则表示该功能未启用。
2)应核查是否配置并启用了限制非法登录功能,非法登录达到一定次数后采取特定动作,如 账户锁定等;
全局登录失败查询:
2> sp_configure "maximum failed logins"
3> go
Config Value和Run Value均为0 表示0次锁定帐号,默认为0;
方法2
sp_displayloginfailure
该命令将显示登录失败处理的配置信息,包括登录失败的尝试次数、账户锁定时间等。
3)应核查是否配置并启用了登录连接超时及自动退出功能。
核查timeouts参数是否为true,下图为未设置时默认状态
1> sp_helpserver
2> go
若timeouts设置为 false ,站点处理器将继续运行,直到两台服务器中的一台关闭。
方法2
sp_configure "login timeout"
该参数的值表示登录操作的超时时间,单位为秒。
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。
1> sp_configure "net password encryption reqd"
2> go
参数解释:
0:允许客户端选择用于网络登录密码的加密算法,包括不加密密码。
1:限制客户端使用 RSA 或 SAP 专有加密算法来加密网络上的登录密码。
2:限制客户端仅使用 RSA 加密算法来加密网络上的登录密码。
3:SAP ASE 只允许使用 EPEP 登录协议的传入客户端。
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身 份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
1)应核查是否采用动态口令、数字证书、生物技术和设备指纹等两种或两种以上的鉴别技术对用户身份进行鉴别;
2)应核查其中一种鉴别技术是否使用密码技术来实现。
通过访谈客户、使用者是否采用密码技术以外的方式进行身份鉴别。
二、访问控制
a)应对登录的用户分配账户和权限;
1)应核查是否为用户分配了账户和权限及相关设置情况;
使用select * from master..syslogins获得用户列表后使用如下命令查询用户信息
1> sp_displaylogin sa //sa为用户名
2> go
代替命令sp_helprotect:
1> use DBName
2> exec sp_helprotect ObjectName //ObjectName可以是数据库名、用户名
3> go
参数解释:
Suid: 1
Loginame: sa
Fullname:
Default Database: master //用户所属数据库
Default Language: //默认语言
Auto Login Script:
Configured Authorization: //配置授权,所拥有的角色,角色对应相应的权限
sa_role (default ON)
sso_role (default ON)
oper_role (default ON)
sybase_ts_role (default ON)
mon_role (default ON)
sa_serverprivs_role (default ON)
Locked: NO //账户是否锁定
Date of Last Password Change: Nov 17 2016 9:54AM //上一次更改密码的时间
Password expiration interval: 0 //密码过期间隔
Password expired: NO
Minimum password length: 6 //最小密码长度
Maximum failed logins: 0 //最大失败登录次数
Current failed login attempts:
Authenticate with: AUTH_DEFAULT //认证方式
Login Password Encryption: SHA-256 //登录口令的加密方式
Last login date: Feb 1 2023 1:32AM //最后登录时间
Exempt inactive lock: 0
访谈数据库管理员各个账户的作用与权限,输出结果是否与实际人员是否相符;
2)应检查是否禁用或限制匿名、默认账户的访问权限。
(一般情况下不建议禁用系统默认账户,可能会导致数据库的无法使用)
b)应重命名或删除默认账户,修改默认账户的默认口令;
1)应核查是否已经重命名默认账户或默认账户已被删除;
检查sa账户是否重命名(sa的重命名会导致影响一些系统级别的操作,probe账户无法登录,删除会导致数据库无法正常使用)
2)应核查是否已修改默认账户的默认口令。
sa默认口令为空,probe密码不是公开的;
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在。
1)应核查是否不存在多余或过期账户,管理员用户与账户之间是否一一对应;
使用select * from master..syslogins获得用户列表,并访谈管理员是否存在多于账户,多人共用账户的情况;
2)应测试验证多余的、过期的账户是否被删除或停用。
1> sp_displaylogin rusky
2> go
核查Locked字段是否为yes,yes则为锁定状态
d)应授予管理用户所需的最小权限,实现管理用户的权限分离。
//使用如下命令可基本满足查询要求:
select * from master..syslogins
go
sp_displaylogin UserName
go
//sp_displaylogin的代替命令sp_helprotect
1)应核查是否进行角色划分;
检查用户列表并访谈管理员进行核对,是否具有安全员、审计员、操作员等角色;
2)应核查管理用户的权限是否已进行分离;
检查各管理用户权限是否与角色相符合,且应不具有和sa用户相同权限的管理用户;
3)应核查管理用户权限是否为其工作任务所需的最小权限。
访谈管理员是否有超出工作内容的权限(检查权限冗余用户帐户);
e)应由授权主体配置访问控制策略,访问控制策略规定主体对客体的访问规则。
1)应核查是否由授权主体(如管理用户)负责配置访问控制策略;
访谈管理员是否定制访问控制策略,并通过指定管理账户进行下发策略;
2)应核查授权主体是否依据安全策略配登了主体对客体的访问规则;
1> sp_displaylogin UserName
2> go
//sp_displaylogin的代替命令sp_helprotect
通过命令检查用户访问数据库的权限、角色,这里的主体指数据库用户,客体指数据库等;
3)应测试验证用户是否有可越权访问情形。
use database_name //通过进入数据库操作核查
go
一般测评对象为业务应用系统,数据库给的不适用,各个机构评判标准各有差异;
f)访问控制的粒度应达到主体为用户级或进程级,客体为文件、数据库表级。
Sybase访问控制粒度能达到数据库用户对某一个表或库的访问、操作权限;
使用命令:
1> sp_displaylogin UserName
2> go
//sp_displaylogin的代替命令sp_helprotect
输出:
1. 用户权限列表
2. 所有对象的权限类型
3. 是否设置WITH GRANT权限
g)应对重要主体和客体设置安全标记,并控制主体对有安全标记信息资源的访问。
1)应核查是否对主体、客体设置了安全标记;
2)应测试验证是否依据主体、客体安全标记控制主体对客体访问的强制访问控制策略。
Sybase自身应该不具备这个功能,访谈是否采用第三方主机加固产品进行了安全标记的设置;
三、安全审计
a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进 行审计。
1)应核查是否开启了安全审计功能;
1> exec sp_configure "auditing"
2> go
检查并保证'auditing'的值设为“1” ,sp_configure “auditing”1 为启用审计进程。
方法2
select name,value from master..sysconfigures where name = 'auditing'
如果返回结果中的value为1,则表示安全审计功能已开启;如果value为0,则表示未开启。
2)应核查安全审计范围是否覆盖到每个用户;
sp_displayaudit
该命令将返回所有用户及其相关的审计设置。可以检查每个用户是否被审计,以及所审计的事件和条件等。
3)应核查是否对重要的用户行为和重要安全事件进行审计。
访谈客户,是否配置对重要用户行为进行审计,Sybase具有对重要操作的审计功能,但需要单独配置;
sp_display_auditpolicy
该命令将返回已配置的审计策略,包括审计事件、目标和条件。
详见:http://www.dbainfo.net/wp-content/uploads/SybaseManual/sprocs_zh/part34.htm
b)审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相 关的信息。
默认满足要求,通过日志存储文件中的日志进行核查:
/opt/sybase/log
c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等;
访谈管理员如何对审计记录进行保护,对审计记录是否定期备份,备份策略是什么,时间大于6个月 ,如果采用第三方设审计产品,是否满足日志存储的时间要求 ,核查备份策略以及查询日志时间;
d)应对审计进程进行保护,防止未经授权的中断。
(实际操作存在一定风险,一般正常情况下为符合,不会出现越权情况)
四、入侵防范
a)应遵循最小安装的原则,仅安装需要的组件和应用程序。
b)应关闭不需要的系统服务、默认共享和高危端口。
以上采用访谈方式,一般也不会有什么高危端口
c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制。
2> sp_configure "enable remote admin"
3> go
执行该命令后,如果返回值为 1,则表示已经开启远程管理命令;如果返回值为 0,则表示未开启远程管理命令,至于限制数据库无该功能,需要通过服务器层面满足。
d)应提供数据有效性检验功能,保证通过人机接口输入或通过通信接口输入的内容符合系统设定要求。
默认符合
e)应能发现可能存在的已知漏洞,并在经过充分测试评估后,及时修补漏洞。
访谈管理员是否进行漏洞扫描以及补丁,通过确认补丁版本是否为最新判断是否更新;
例:Adaptive Server Enterprise/11.9.2.5/1234/P/SWR 9676 ESD 1/RS6000/AIX 4.2.1/FBO/Tue Jul 24 04:43:25 2001
可以看到当前Server的版本号为11.9.2.5,目前补丁号为SWR后的数字 9676 ESD 1,平台为RS6000,操作系统为 AIX4.2.1。
f)应能够检测到对重要节点进行入侵的行为,并在发生严重入侵事件时提供报警。
不适用
五、恶意代码防范以及可信验证
不适用
六、数据完整性以及保密性
参考身份鉴别C小节,以及访谈管理员是否在传输存储过程中采用了其他的加密措施,加密机等
七、数据备份恢复
a)应提供重要数据的本地数据备份与恢复功能。
访谈数据备份策略(每天/周,全备/增备)
是否具备恢复测试记录并进行核查
b)应提供异地实时备份功能,利用通信网络将重要数据实时备份至备份场地。
是否进行异地备份,记录异地备份机房
c)应提供重要数据处理系统的热冗余,保证系统的高可用性。
如果是云上数据库,是否为高可用版本。
如果线下数据库,看是否部署两台以上服务器。
集群部署、双机热备均可判定为符合。
八、剩余信息保护
a)数据库系统内核层默认无法实现剩余信息保护功能需要第三方工具实现;
b)应保证存有敏感数据的存储空间被释放或重新分配前得到完全清除。
数据库系统内核层默认无法实现剩余信息保护功能需要第三方工具实现
九、个人信息保护
a)应仅采集和保存业务必需的用户个人信息。
检查数据库中是否存储个人信息,若有,检查个人信息保护机制和个人信息保护管理制度
b)应禁止未授权访问和非法使用用户个人信息。
检查个人信息保护机制和个人信息保护管理制度,验证非授权人员是否可以访问个人信息存储的相关组件内容
0x04 总结
对于Sybase个人了解并不多,上述检查方式基本均来着网上的资料边学习边整理,对于等保测评指标的理解亦为个人见解,如有错误,还望指出,另外在执行任何操作时都应该谨慎,避免出现误操作的情况。
参考链接:
http://www.dbainfo.net/wp-content/uploads/SybaseManual/sag1_zh.html