加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

干货!数据库安全之Oracle数据库安全加固

发布时间:2022-12-21 11:05:46 所属栏目:Unix 来源:
导读:  最近打算整理一下资料,写几篇关于数据库安全的文章。特此记录,方便查阅。

  操作流程

  帐号权限加固

  1、限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限

  1.查
  最近打算整理一下资料,写几篇关于数据库安全的文章。特此记录,方便查阅。
 
  操作流程
 
  帐号权限加固
 
  1、限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限
 
  1.查看权限
 
  SQL>SELECT * FROM dba_sys_privs WHERE grantee=; -- 系统权限
 
  SQL>SELECT * FROM dba_tab_privs WHERE grantee=; -- 对象权限
 
  SQL>SELECT * FROM dba_role_privs WHERE grantee=; --赋予的角色
 
  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 程序包的执行权限。
 
  3、修改系统帐户的默认口令
 
  (特别是管理员角色类帐户)锁定所有不需要的用户
 
  1.修改 sys 和 system 口令
 
  SQL>ALTER USER sys IDENTIFIED BY ;
 
  SQL>ALTER USER system IDENTIFIED BY ;
 
  2.锁定不需要的用户
 
  SQL>ALTER USER ACCOUNT LOCK;
 
  4、删除系统中多余的自建帐号
 
  1.查看用户自建账号
 
  SQL>SELECT username FROM all_users;
 
  2.删除或者禁用多余自建账号
 
  SQL>DROP USER CASCADE;
 
  5、为所有应用用户配置强口令
 
  1.根据设置的口令策略修改弱口令
 
  SQL>ALTER USER IDENTIFIED BY ;
 
  数据访问控制加固
 
  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
 
  5. 重启监听器
 
  lsnrctl start
 
  6. 修改完毕,使用新端口登录测试
 
  netstat -tunap | grep 11251
 
  lsnrctl status
 
  客户端连接测试
 
  4、限制远程管理
 
  限制对监听器的远程管理unix数据库,并 设 置监 听器 管理 口令(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:\oracle\ora81)
 
  (PROGRAM = extproc)
 
  )
 
  2. 重启监听
 
  3. 查看监听状态
 
  注意:
 
  默认安装时,会安装一个 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=\oracle\oradata\archive1' scope=spfile
 
  3、配置日志管理策略
 
  配置日志管理策略、保证日志存放的地点的安全可靠
 
  1. 配置多个归档位置,包括本地归档位置和远程归档位置
 
  ALTER SYSTEM SET log_archive_dest_2='location=\oracle\oradata\archive2' scope=spfile
 
  ALTER SYSTEM SET log_archive_dest_3='service=standby' scope=spfile
 
  配置远程归档位置时, SERVICE 选项需要制定远程数据库的网络服务名(在 tnsnames.Ora 文
 
  件中配置)
 
  漏洞加固
 
  1、安装系统安全补丁,
 
  对安全软件扫描或手工检查发现的系统漏洞进行修补
 
  1.运行防病毒软件(如 SEP)保护操作系统
 
  2.下载并安装相应的安全补丁
 
  注意:更新安全补丁可能对数据库系统、应用系统造成影响; 需要进行严格测试并做好备
 
  份恢复措施后实施
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章