0x01 前言
近期同事去现场测评,遇到了一个arterybase的数据库,不知道怎么开展数据库安全计算环境的等保测评工作,因此找了一个arterybase的安装包进行安装研究,并开发出测评指南,有错误的地方还望指出。
获取到安装包后,使用arterybase-install进行一键式安装,安装完成后会在桌面生成三个快捷方式,分别是“startup_abase.bat”、“stop_abase.bat”启动、停止数据库以及“abase-login-local.bat”登录到当前数据库。
0x02 arterybase之安全计算环境
身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;
查询版本:
SELECT version();
得知信息应该和PostgreSQL数据库有点关系,因为没有在网上查到arterybase的操作手册之类的信息,直接使用PostgreSQL的查询命令来尝试。
1)应核查用户在登录时是否采用了身份鉴别措施;
PostgreSQL的身份验证规则分别有5种,
密码认证(MD5):对于所有数据库、所有用户,来自任意地址的连接都需要提供密码进行认证。
证书认证(cert):配置要求所有用户在 SSL 连接上提供有效的证书进行认证。
Kerberos认证(gss):配置要求所有用户通过 Kerberos 进行认证。
Trust认证:配置信任所有用户,不需要提供密码或其他凭据进行认证。
LDAP认证:配置要求所有用户通过 LDAP 进行认证。
配置/核查示例:修改pg_hba.conf文件,参数位于METHOD字段。
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
2)应核查用户列表确认用户身份标识是否具有唯一性;
默认符合,一般都具有身份标识唯一性
3)应核查用户配置信息或测试验证是否不存在空口令用户;
使用命令查询passwd字段是否存在hash值:
select usename,passwd from pg_shadow;
或者使用:
SELECT usename, passwd IS NULL AS is_password_set FROM pg_shadow WHERE usename = 'sa';
如果is_password_set
返回true
,那么密码字段为空。
4)应核查用户鉴别信息是否具有复杂度要求并定期更换。
PostgreSQL默认没有自带的密码复杂度检测功能,需要安装扩展来满足需求,使用命令查看所安装的扩展:
SELECT * FROM pg_extension;
一般密码复杂度要求的模块使用passwordcheck.so,如果没有安装则访谈是否采用其他方式来做限制。
b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连 接超时自动退出等相关措施。
1)应核查是否配晋并启用了登录失败处理功能;
登录失败处理功能需要额外扩展来满足要求。
SELECT * FROM pg_extension; #查询已安装的扩展
一般使用session_exec扩展。
2)应核查是否配悝并启用了限制非法登录功能,非法登录达到一定次数后采取特定动作,如账户锁定等;
同上第一小点
3)应核查是否配置并启用了登录连接超时及自动退出功能。
核查postgresql.conf配置文件是否有tcp_keepalives_idle = 600参数,或访谈用户是否采用其他方法。
设置tcp_keepalives_idle
参数来指定连接空闲的超时时间,以秒为单位。当连接空闲超过指定的时间后,服务器会自动断开连接。
c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听
核查是否开启远程管理,postgresql.conf配置文件,是否启用监听:
listen_addresses = '*' #监听地址
同时核查postgresql.conf中ssl是否开启,如图:
pg_hba.conf配置文件,是否添加允许外部连接的规则:
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
通过命令行检查客户端连接是否使用了 SSL:
SELECT ssl, version FROM pg_stat_ssl WHERE pid = pg_backend_pid();
如果结果中的ssl
列为t
,则表示当前连接使用了 SSL。
d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。
通过访谈以及验证,确认是否采用了其他的身份鉴别技术。
访问控制
a)应对登录的用户分配账户和权限;
1)应核查是否为分配了账户和权限及相关设置情况;
使用以下命令查询账户以及所分配的权限
\du
2)应核查是否已禁用或限制匿名、默认账户的访问权限。
安装后默认账户为sa,仅有sa用户账户,无其他匿名账户。
b)应重命名或删除默认账户,修改默认账户的默认口令;
1)应核查是否已经重命名默认账户或默认账户已被删除;
2)应核查是否已修改默认账户的默认口令。
默认口令位于安装包中的arterybase-install文件。
c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;
1)应核查是否不存在多余或过期账户,管理员用户与账户之间是否一一对应;
使用命令查询所有的用户账户;
SELECT * FROM pg_user;