前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >等保测评之Oracle关系型数据库安全加固实践指南

等保测评之Oracle关系型数据库安全加固实践指南

作者头像
全栈工程师修炼指南
发布2022-09-29 15:40:18
1.6K0
发布2022-09-29 15:40:18
举报
文章被收录于专栏:全栈工程师修炼之路

[TOC]

账号权限加固

1.核查Oracle数据库中是否存在多余账户被启用,如果存在请锁定它。

代码语言:javascript
复制
-- (1) 查看系统中已启用账户
SELECT username,account_status FROM dba_users WHERE account_status='OPEN';
  -- USERNAME	ACCOUNT_STATUS
  -- SYS	OPEN
  -- SYSTEM	OPEN
  -- APP OPEN

-- (2) 锁定禁用不使用(不需要)的账户
ALTER USER OUTLN account LOCK;

-- (3) 删除多余自建账号
DROP USER app CASCADE;

2.为所有应用用户配置强口令,根据设置的口令策略修改弱口令。

代码语言:javascript
复制
-- 特别注意修改 sys 和 system 口令(等保要求:)
ALTER USER sys IDENTIFIED BY <newpasswd>;
ALTER USER system IDENTIFIED BY <newpasswd>;
-- 应用用户口令修改
ALTER USER <username> IDENTIFIED BY <newpasswd>;

3.查看指定用户权限

代码语言:javascript
复制
SQL>SELECT * FROM dba_sys_privs WHERE grantee=<username>; -- 系统权限
SQL>SELECT * FROM dba_tab_privs WHERE grantee=<username>; -- 对象权限
SQL>SELECT * FROM dba_role_privs WHERE grantee=<username>; --赋予的角色

版本查看

SQL> select * from v$version

占用空间大小

select ‘bgdrac’ database,t11.username,t11.default_tablespace tablespace_name,segment_size_in_GB,datafile_size_in_gb,tablespace_free_size_in_gb from (select username,default_tablespace from dba_users) t11 left join ( select nvl(t1.tablespace_name,t2.tablespace_name) tablespace_name,t1.size_in_GB datafile_size_in_GB,t2.size_in_GB segment_size_in_GB,t1.size_in_GB-t2.size_in_GB tablespace_free_size_in_GB from (select tablespace_name,sum(bytes)/1024/1024/1024 size_in_GB from dba_data_files group by tablespace_name) t1 full join (select tablespace_name,sum(bytes)/1024/1024/1024 size_in_GB from dba_segments group by tablespace_name) t2 on t2.tablespace_name=t1.tablespace_name) t22 on t22.tablespace_name=t11.default_tablespace where t11.default_tablespace<>’zlbfxt’;

DATABA USERNAME TABLESPACE_NAME SEGMENT_SIZE_IN_GB DATAFILE_SIZE_IN_GB TABLESPACE_FREE_SIZE_IN_GB


bgdrac ZLBFXT ZLBFXT .00177002 .03125 .02947998 bgdrac SYSTEM SYSTEM .180679321 .48828125 .307601929 bgdrac SYS SYSTEM .180679321 .48828125 .307601929 bgdrac OUTLN SYSTEM .180679321 .48828125 .307601929 bgdrac WMSYS SYSAUX .109130859 .1171875 .008056641 bgdrac DBSNMP SYSAUX .109130859 .1171875 .008056641 bgdrac APPQOSSYS SYSAUX .109130859 .1171875 .008056641 bgdrac ORACLE_OCM SYSTEM .180679321 .48828125 .307601929 bgdrac DIP SYSTEM .180679321 .48828125 .307601929

select from dba_profiles; select from v$parameter where name=’audit_trail’;

2.收回相应权限(例如收回 select any table 权限) SQL>REVOKE select any table FROM ;

3.收回应用用户的 DBA 角色 SQL>REVOKE dba FROM ;

注意:避免分配权限过大或过小

2、撤消 public 角色的程序包执行权限

1.查看 public 角色的程序包执行权限 SQL>SELECT table_name FROM dba_tab_privs WHERE grantee=’PUBLIC’ and privilege=’EXECUTE’;

2.撤销 public 角色的程序包执行权限(例如撤销在 utl_file 包上的执行权限) SQL>REVOKE execute ON utl_file FROM public; Oracle 官方建议撤销 public 角色对 utl_file、 utl_http、 utl_tcp、 utl_smtp、dbms_random 程序包的执行权限。

数据访问控制加固

1、严格限制库文件的访问权限

确保除属主和 root 外,其他用户对库文件没有写权限

1.用操作系统命令查看库文件访问权限(以 RedHat linux 为例) ls -l $ORACLE_BASE/oradata

2.用操作系统命令删除库文件组和其他用户的写权限 chmod 640 $ORACLE_BASE/oradata/*

3.windows 系统同理(方法不同)

2、配置$ORACLE_HOME/bin

设置$ORACLE_HOME/bin 其下所有程序的访问权限或其他安全控制机制

1.用操作系统命令查看 bin 目录下所有程序文件的访问权限(以 RedHat Linux 为例) ls -l $ORACLE_HOME/bin

2.用操作系统命令删除组和其他用户的写权限 chmod 640 $ORACLE_HOME/bin/*

注意:修改权限可能对部分应用系统造成影响,需要联系业务部门和应用系统厂商做好相关的测试工作

3、停止或禁用与承载业务无关的服务或组件

在不影响业务系统正常运行情况下,停止或禁用与承载业务无关的服务或组件

1.用操作系统命令查看有无与业务无关的服务或组件 2.用操作系统命令停止或禁用与业务无关的服务或组件

4、清除数据库无用的东西

1.查看数据库中表或视图等对象 SQL>SELECT FROM dba_tables; SQL>SELECT FROM dba_views;

2.删除数据库中存在的无用的、测试的、废弃的表或视图 SQL>DROP TABLE ; SQL>DROP VIEW ;

注意:需要和业务部门确认 网络访问控制加固

1、IP限制

设置 TNS 登录的 IP 限制,仅允许最少的必要的 IP 地址可连接 TNS 监听器

1.在目录$ORACLE_HOME/network/admin 下修改 sqlnet.ora 文件实现 TNS 登录 IP 限制,

设置下列配置信息: tcp.validnode_checking=yes

#允许访问的 ip tcp.invited_nodes =(ip1,ip2,……)

#不允许访问的 ip tcp.excluded_nodes=(ip1,ip2,……) 2.修改 sqlnet.ora 后,重新启动 listener 服务可能对部分应用系统

2、关闭远程操作系统认证

1.在目录$ORACLE_HOME/network/admin 下修改 sqlnet.ora 文件,设置下列配置信息: sqlnet.authentication_services=(NONE)

2.修改参数 Remote_login_passwordfile 为 EXCLUSIVE 或 SHARED SQL>ALTER SYSTEM SET REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE SCOPE=SPFILE;

3.修改参数 REMOTE_OS_AUTHENT SQL>ALTER SYSTEM SET REMOTE_OS_AUTHENT=FALSE SCOPE=SPFILE;

4.重启数据库和监听使修改生效

注意:需要重启服务,应提前通知业务部门

3、修改默认端口

在不影响应用的前提下,更改默认的1521端口

  1. 查看当前监听的状态 lsnrctl status
  2. 停止监听 lsnrctl stop
  3. 修改监听文件的端口号,在目录$ORACLE_HOME/network/admin 下修改 listener.ora 文件 (例如把端口号改为11251) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST=LOCALHOST)(PORT=11251)) ) )
  4. 修改初始化参数 local_listener SQL>ALTER SYSTEM SET local_listener=”(address=(protocol=tcp)(host=localhost)(port=11251))”;

SQL>quit

  1. 重启监听器 lsnrctl start
  2. 修改完毕,使用新端口登录测试 netstat -tunap | grep 11251 lsnrctl status 客户端连接测试

4、限制远程管理

限制对监听器的远程管理,并 设 置监 听器 管理 口令(8i)

1.进入监听设置状态 lsnrctl

2.设置当前监听器 set current_listener

3.设置密码

change_password set password

4.保存设置 save_config

5.检查 listener.ora 文件

看是否有一条 PASSWORDS_的记录

5、外部程序调用监听配置的删除

1.打开 listener.ora 文件,删除以下配置文件: (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = C:oracleora81) (PROGRAM = extproc) )

  1. 重启监听
  2. 查看监听状态

注意:

默认安装时,会安装一个 PL/SQL 外部程序(ExtProc)条目在 listener.ora中,是 oracle 为调 用外部程序默认配置的监听,它的名字通常是 ExtProc 或PLSExtProc,但一般不会使用它,可以直接从 listener.ora中将这项移除,因为对 ExtProc 已经有多种攻击手段了,在不使用外部程序时,oracle 也是建议删除的。

口令策略加固

1、 设置口令复杂度要求

1.检查 profile 文件设置 SQL>SELECT * FROM dba_profiles;

2.创建口令复杂度函数 SQL>@$ORACLE_HOME/rdbms/admin/utlpwdmg.sql

3.设置口令复杂度

要求长度不小于4位字符串,而且是字母和数字或特殊字符的混合,用户 名和口令禁止相同 SQL>ALTER PROFILE “DEFAULT” LIMIT password_verify_function verify_function;

注意: Oracle 口令复杂度包含的特殊字符不是任意特殊字符都可以,一般以下划线、 $、 *等符号为主

2、设置口令使用期限要求到期后自动更改

1.检查 profile 文件设置 SQL>SELECT * FROM dba_profiles;

2.设置 profile 密码策略,建议使用控制台设置 SQL>ALTER PROFILE “DEFAULT” LIMIT password_life_time 30;

3、设置策略对口令尝试次数进行限制

1.检查 profile 文件设置 SQL>SELECT * FROM dba_profiles;

2.设置 profile 密码策略 SQL>ALTER PROFILE “DEFAULT” LIMIT failed_login_attempts 5 password_lock_time 1;

建议:设置口令尝试次数为5 次,登录超过有效次数锁定时间为 1天。 缺陷是万一有恶意访问,在输入多次错误密码后此用户就被锁定导致不可用。

审计策略加固

1、审计配置

启用相应的审计功能,配置审核策略使系统能够审核数据库管理和安全相关操作的信息,

建议对 SYSDBA审计操作

1.启用审计功能 SQL>ALTER SYSTEM SET audit_trail=os scope=spfile;

2.启用对 sysdba 的活动审计 SQL>ALTER SYSTEM SET audit_sys_operations=true;

3.重启数据库,使设置生效

若是 windows 平台,audit trail 会记录在 windows 的事件管理器中,

若是linux/unix 平台则会记录在audit_file_dest 参数指定文件中;

注意:审计功能对数据库的性能和磁盘空间要求较高;需要重启数据库,应提前通知业务部门

2、配置日志策略

配置日志策略,确保数据库的归档日志文件、在线日志文件、网络日志、跟踪文件、警告日志记录功能是否启用并且有效实施

  1. 配置归档模式,将数据库正常关闭 SQL>SHUTDOWN IMMEDIATE 启动到 MOUNT 模式 SQL>STARTUP MOUNT SQL>ALTER DATABASE ARCHIVELOG SQL>ALTER DATABASE OPEN

2.配置归档日志的名称格式 ALTER SYSTEM SET log_archvie_format=’%S_%T_%R.log’ scope=spfile

3.配置归档位置 ALTER SYSTEM SET log_archive_dest_1=’location=oracleoradataarchive1’ scope=spfile

3、配置日志管理策略

配置日志管理策略、保证日志存放的地点的安全可靠

  1. 配置多个归档位置,包括本地归档位置和远程归档位置 ALTER SYSTEM SET log_archive_dest_2=’location=oracleoradataarchive2’ scope=spfile ALTER SYSTEM SET log_archive_dest_3=’service=standby’ scope=spfile 配置远程归档位置时, SERVICE 选项需要制定远程数据库的网络服务名(在 tnsnames.Ora 文 件中配置) 漏洞加固

1、安装系统安全补丁,

对安全软件扫描或手工检查发现的系统漏洞进行修补

1.运行防病毒软件(如 SEP)保护操作系统 2.下载并安装相应的安全补丁

注意:更新安全补丁可能对数据库系统、应用系统造成影响; 需要进行严格测试并做好备 份恢复措施后实施

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 账号权限加固
  • 版本查看
  • 占用空间大小
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档