pg等保设置实操

关于xxxx数据中心数据库系统**高危漏洞的整改情况**

我单位于2024年xx月收到贵司下发关于我单位核心业务系统服务器安全隐患情况通报,我单位高度重视,根据通报内容,为切实维护全县网络安全,落实党委(党组)网络安全工作责任制,认真组织落实安全隐患情况整改,我单位联系了维护方系统工程师根据漏扫报告进行了自查,并根据报告中指出的问题进行逐一整改加固。

报告内容主要涵盖两个方向:操作系统层面、数据库层面;以下是整改内容部分截图:

报告编写单位:xx公司

报告编写人员:xx

报告日期:xx


一、报告要求整改内容

二、服务器17具体整改措施

一)、身份鉴别

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

数据库未配置密码策略,未定期更换密码。

建议配置数据库密码策略,如启用数据库passwordcheck模块(添加‘$libdir/passwordcheck’到参数shared_preload_libraries后重启生效);定期更换密码。

pg_ctl stop

pg_ctl start

psql -uroot -ppostgres

postgres=# show shared_preload_libraries;

select name,setting from pg_settings where name='shared_preload_libraries';

select $$ alter user postgres with password ' yqxrmyy2024' valid until '$$||now()::timestamp(0) + '365 day'||$$';$$;

select * from pg_user;

-- alter user postgres valid until 'infinity';取消过期命令

b)应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;

当前数据库未提供登陆失败处理功能,未限制登录连接超时。

建议根据业务需求修改数据库配置参数如idle_in_transaction_session_timeout(终止任何已经闲置超过该参数所指定时间量的打开事务的会话)、connect_timeout(最大等待连接时间)。

1、同上,设置了密码输入错误后, 需要等待5秒返回认证失败. 防止暴力破 解 密码.

shared_preload_libraries = 'auth_delay'

auth_delay.milliseconds = 5000

2、超时设置

select name,setting,category,short_desc,extra_desc, min_val , max_val,context from pg_settings where name like '%timeout%';

设置idle_in_transaction_session_timeout为3小时

设置connect_timeout为300s,pg15无该参数,设置的值为authentication_timeout;

c)当进行远程管理时,应采取必要措施防止鉴别信息在网络传输过程中被窃听。

建议修改配置文件使其支持SSL连接并使用SSL连接数据库。

1、查看当前服务器的密码加密是MD5还是其它。

postgres=# select usename,usesuper,userepl,usebypassrls,passwd,valuntil from pg_shadow;

数据库默认的密码存放采用的是SCRAM-SHA-256,可以保障鉴别信息在传输过程中的保密性。

2、修改数据库参数postgresql.conf,编辑或添加ssl=on

show ssl;

3、pg_hba.conf文件配置hostssl条目,认证方法可选。

hostssl all all 0.0.0.0/0 scram-sha-256

这里我设置的method是scram-sha-256,则不需要配置method为cert自签名证书或者ca签名证书;

二)、访问控制

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

当前数据库仅使用postgresq账户进行管理,故postgresq账户可视为共享账户。

建议为每个管理员分配不同账户,做到账户与人一一对应,避免存在共享账户。

create user zladmin1 password 'zladmin@111' VALID UNTIL '2025-10-12 00:00:00';

create user zladmin2 password 'zladmin@222' VALID UNTIL '2025-10-12 00:00:00';

grant all on schema public to zladmin1;

alter default privileges in schema public grant all on tables to zladmin1;

grant usage on schema public to zladmin1;

grant all on database “ZLDPPDATA” to zladmin1;

grant all on database “ZLDPPLOG” to zladmin1;

grant all on database postgres to zladmin1;

grant all on database zlstdd to zladmin1;

grant all on schema public to zladmin2;

alter default privileges in schema public grant all on tables to zladmin2;

grant usage on schema public to zladmin2;

grant all on database “ZLDPPDATA” to zladmin2;

grant all on database “ZLDPPLOG” to zladmin2;

grant all on database postgres to zladmin2;

grant all on database zlstdd to zladmin2;

d)应授予管理用户所谓的最小权限,实现管理用户的权限分离。

三)、安全审计

b)审计记录应包括事件的日期和时间用户、事件类型、事件是否成功及其他与审计相关的信息;

建议开启log_statement、log_connections、log_disconnections 等日志审计功能,实现对用户登入、登出的记录,且将messages至少为info级别。

select name,setting,short_desc, min_val , max_val,context from pg_settings where name like '%log%';

log_checkpoints 记录检查点

log_disconnections 记录登出信息

log_connections记录登陆信息

log_duration 记录语句的执行时间

log_hostname 记录主机名

log_lock_waits 记录锁等待信息

alter system set log_statement='ddl';

alter system set log_lock_waits=on;

alter system set log_hostname=on;

alter system set log_duration =on;

alter system set log_connections =on;

alter system set log_disconnections =on;

alter system set log_checkpoints =on;

c)应对审计记录进行保护,定期备份,避免受到未预期的删除、修改或覆盖等。

建议启用数据库日志功能,并确保审计记录留存时间至少达到6个月以上;定期对审计记录进行备份以避免受到未预期的删除、修改或覆盖等。

log_line_prefix = '%m %p %u %d %r %e'

四)、入侵防范

c)应通过设定终端接入方式或网络地址范围对通过网络进行管理的管理终端进行限制;

数据库当前查询listen_addresses字段为默认配置。建议修改postgres的系统文件,在配置文件中添加服务器ip限制网络地址范围。

文档内容有误?监听当前为*,是针对本机的所有tcp ip或者localhost主机认证提供的连接pg的服务,配合端口开放给程序使用。既然要限制网络范围,肯定是pg_hba.conf文件配置;

e)应能发现可能存在的已知涌洞,并在经过充分测试评估后,及时修补涌洞。

建议定期进行漏洞扫描,对可能存在的已知漏洞、逻辑漏洞,在重复测试评估后及时进行修补,降低安全隐患。

后续每季度自查服务器运行的数据库版本,参考pg官网消息,根据重大漏洞进行补丁安装或升级处理。

五)、数据完整性

a)应采用校验技术保证重要数据在传输过程中的完整性。

建议修改配置文件使其支持SSL连接并使用SSL连接数据库。





六)、数据备份恢复

a)应提供重要数据的本地数据备份与恢复功能;

建议对重要数据建立固定的本地备份策略,(对重要数据如鉴别数据、配置数据定期进行完全备份,并将备份介质场外存放,此外,还应定期对备份文件进行恢复测试,确保备份文件有效)。

@echo off

set PGPASSWORD=yqxrmyy2024

start /b D:\Postgres\bin\pg_dump.exe -h 127.0.0.1 -p 5432 -U postgres -w --role postgres -F p -b -v -E UTF8 -f C:\backup\postgres%date:~0,4%-%date:~5,2%-%date:~8,2%.sql -d postgres

timeout 10 >nul 2>nul

start /b D:\Postgres\bin\pg_dump.exe -h 127.0.0.1 -p 5432 -U postgres -w --role postgres -F p -b -v -E UTF8 -f C:\backup\ZLDPPLOG%date:~0,4%-%date:~5,2%-%date:~8,2%.sql -d ZLDPPLOG

timeout 10 >nul 2>nul

start /b D:\Postgres\bin\pg_dump.exe -h 127.0.0.1 -p 5432 -U postgres -w --role postgres -F p -b -v -E UTF8 -f C:\backup\ZLDPPDATA%date:~0,4%-%date:~5,2%-%date:~8,2%.sql -d ZLDPPDATA

timeout 10 >nul 2>nul

start /b D:\Postgres\bin\pg_dump.exe -h 127.0.0.1 -p 5432 -U postgres -w --role postgres -F p -b -v -E UTF8 -f C:\backup\zlstdd%date:~0,4%-%date:~5,2%-%date:~8,2%.sql -d zlstdd

timeout 10 >nul 2>nul

start /b D:\Postgres\bin\pg_dumpall.exe -h 127.0.0.1 -p 5432 -U postgres -w -g > C:\backup\global%date:~0,4%-%date:~5,2%-%date:~8,2%.sql.sql

timeout 10 >nul 2>nul

::删除7天前的备份。

forfiles /p %BACKUP_DIR% /s /m  . /d -7 /c cmd /c del /f /q /a @path

forfiles /p %BACKUP_DIR% /s /m * /d -7 /c cmd /c rd /s /q @path

exit

img

img

b)应提供异地数据备份功能,利用通信网络将重要数据定时批量传送至备用场地;

通过院内备份一体机实时备份以及双机(16、17两个服务器搭建了两套应用和数据库)实现

七)、剩余信息保护

应保证鉴别信息所在的存储空问被释放或重新分配前得到完全清除

建议使用第三方加固工具加固或定制化数据库(整改难度较大,可不整改)。

postgresql数据库此项是符合的,因为用户进行鉴别信息验证时,用户的鉴别信息时不能够查看到的,之后也不能查看到历史记录;在.psql_history隐藏文件中会记录修改密码的历史命令记录,可能会导致鉴别信息泄露,但是这个不在考虑范围之类,可以忽略。

三、总结

通过本次事件,我单位对xx数据库系统进行彻底检查并修复了报告中存在的问题,在今后工作中,我们相关人员将加强网站安全措施保护,增强知识学习,提高安全责任意识,全面提升xx数据安全的层级。

xxx

                  2024年xx月xx日


请使用浏览器的分享功能分享到微信等