freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PostgreSQL(ArteryBase3.6.2)数据库等级保护测评指南
2024-05-31 11:26:06

0x01 前言

近期同事去现场测评,遇到了一个arterybase的数据库,不知道怎么开展数据库安全计算环境的等保测评工作,因此找了一个arterybase的安装包进行安装研究,并开发出测评指南,有错误的地方还望指出。

获取到安装包后,使用arterybase-install进行一键式安装,安装完成后会在桌面生成三个快捷方式,分别是“startup_abase.bat”、“stop_abase.bat”启动、停止数据库以及“abase-login-local.bat”登录到当前数据库。

1714976404_6638769427b260723d033.jpg!small?1714976405074

0x02 arterybase之安全计算环境

身份鉴别

a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换;

查询版本:

SELECT version();

1714976412_6638769c64aab181fd633.jpg!small?1714976412266

得知信息应该和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)应核查用户列表确认用户身份标识是否具有唯一性;

默认符合,一般都具有身份标识唯一性

1714976420_663876a4e48d36cea28c0.jpg!small?1714976420766

3)应核查用户配置信息或测试验证是否不存在空口令用户;

使用命令查询passwd字段是否存在hash值:

select usename,passwd from pg_shadow;

1714976428_663876ac7f62baf0bcd94.jpg!small?1714976428344

或者使用:

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;

1714976440_663876b8720bcef90a25c.jpg!small?1714976440250

一般密码复杂度要求的模块使用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是否开启,如图:

1717123842_66593b02f237ae11e0452.jpg!small?1717123843047

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();

1717123934_66593b5e0f1f7a64e316f.jpg!small?1717123935633

如果结果中的ssl列为t,则表示当前连接使用了 SSL。

d)应采用口令、密码技术、生物技术等两种或两种以上组合的鉴别技术对用户进行身份鉴别,且其中一种鉴别技术至少应使用密码技术来实现。

通过访谈以及验证,确认是否采用了其他的身份鉴别技术。

访问控制

a)应对登录的用户分配账户和权限;

1)应核查是否为分配了账户和权限及相关设置情况

使用以下命令查询账户以及所分配的权限

\du

1714976448_663876c0e2eec19335d60.jpg!small?1714976448748

2)应核查是否已禁用或限制匿名、默认账户的访问权限。

安装后默认账户为sa,仅有sa用户账户,无其他匿名账户。

1714976454_663876c6e479ab7e8fbbd.jpg!small?1714976454736

b)应重命名或删除默认账户,修改默认账户的默认口令;

1)应核查是否已经重命名默认账户或默认账户已被删除;

2)应核查是否已修改默认账户的默认口令。

默认口令位于安装包中的arterybase-install文件。

1714976460_663876cc86923a7245241.jpg!small?1714976460335

c)应及时删除或停用多余的、过期的账户,避免共享账户的存在;

1)应核查是否不存在多余或过期账户,管理员用户与账户之间是否一一对应;

使用命令查询所有的用户账户;

SELECT * FROM pg_user; 

# 网络安全 # 数据泄露 # 系统安全 # 数据安全 # 企业安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录