前言

最近打算整理一下资料,写几篇关于数据库安全的文章。特此记录,方便查阅

操作流程

帐号权限加固

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、限制远程管理

限制对监听器的远程管理,并 设 置监 听器 管理 口令(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)
)
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=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.下载并安装相应的安全补丁

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

oracle 修改用户密码_干货!数据库安全之Oracle数据库安全加固相关推荐

  1. Oracle修改密码文件_转载:Oracle修改用户密码

    转载一位大佬的博文,用于帮助常忘记密码的我和某些同道. 1. 通过系统管理员(system)修改密码 修改普通用户密码相对来说简单很多. 1.1 登录系统管理员账户.一般为system. 1.2 查询 ...

  2. oracle修改用户密码命令_oracle 11g dba用户秘密修改其他用户密码

    有時候我們可能不知道一個用戶的密碼,但是又需要以這個用戶做一些操作,又不能去修改掉這個用戶的密碼,這個時候,就可以利用一些小竅門,來完成操作. 这个操作,在11g和11g以前的版本是不一样的: 具體操 ...

  3. oracle修改用户密码

    1.使用oracle用户登录,连接数据库 [oracle@wuzj ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.1.0 - Production on Th ...

  4. mysql 如何修改用户密码_如何更改MySQL用户密码

    在本教程中,我们将向您展示如何更改MySQL用户密码.这些说明应适用于任何现代Linux发行版,例如Ubuntu 18.04和CentOS7. 先决条件 根据系统上运行的MySQL或MariaDB服务 ...

  5. Oracle修改用户密码引发的问题

    前几天通过plsql登录数据库时,提示密码过期,需要修改密码,那就修改呗.改完过了会,再登录,发现用户被锁了.那就去解锁下吧. 一.登录数据库服务器 su oracle;sqlplus "/ ...

  6. oracle中修改用户密码

    oracle中修改用户密码 首先是 win键 + R 输入cmd 输入sqlplus/ as sysdba,回车,此时进入到SQL> 输入 alter user system identifie ...

  7. oracle 用户和密码修改,oracle 用户解锁和修改用户密码

    1.安装教程参看:https://jingyan.baidu.com/article/3c48dd34be2a32e10be35881.html 2.用户解锁 --> 运行cmd --> ...

  8. mysql5.7.26修改账号密码_修改mysql5.7的用户密码

    MySQL5.7版本加入了密码安全策略机制,修改用户的密码必须符合安全策略的规则,否则无法修改.这对于本地开发来说,有点不方便,密码太长容易忘记,我本地的MySQL密码一般都是123456,这样就不会 ...

  9. linux下用户名怎么修改密码,LINUX用户名密码忘记怎么修改用户密码

    1.LINUX是做什么的? Linux服务器是设计出来进行业务处理应用的,在网络和计算机系统当中有广泛的应用,可以提供数据库管理和网络服务等内容,是一种性能非常高的和开源的服务器,在我国的计算机系统的 ...

最新文章

  1. echarts 自定义图表
  2. makefile中的零星知识点
  3. [Java基础]异常概述与异常处理
  4. java epoll select_字节跳动高频面试题,操作系统/算法/Java等。
  5. windows隐藏python运行时的终端
  6. (6)JavaScript之console控制台
  7. MySqlBackup.NET——用于C#,VB.NET,ASP.NET的MySQL备份解决方案
  8. Python中创建守护进程
  9. C语言知识点总结(完美版)
  10. matlab 7.0电路图,基于Multisim10和Matlab7.0的正弦稳态电路分析
  11. PHP - XHProf简明教程
  12. 计算机pc610台湾研华,研华科技工业电脑各尺寸上架式机箱型号介绍
  13. java设置环境变量jre_JRE环境变量配置图解
  14. linux下安装nginx
  15. 云杰恒指:6.18恒指期货实盘指导交易复盘
  16. 网易云获取带有时间轴的歌词
  17. PDPS软件:导出Web浏览器文件功能及其操作方法
  18. C fread()函数
  19. node.js在注册表删除_Node.JS 11年:时间表和重要贡献
  20. workbench应力应变曲线_利用ansys Workbench仿真塑性材料拉伸力学试验 | 坐倚北风

热门文章

  1. 图神经网络越深,表现就一定越好吗?
  2. Bengio亲自授课,英国皇家院士参与,这份机器学习在线课别错过丨免费
  3. YOLOv5 它来了!基于 PyTorch,体积比 YOLOv4 小 90%,速度却超 2 倍!
  4. B站上线!DeepMind加UCL强强联手推出深度学习与强化学习进阶课程(附视频)
  5. 一文读懂深度学习中的矩阵微积分
  6. 使用OpenCV进行图像全景拼接
  7. 基于投票方式的机器人装配姿态估计
  8. 模拟PLC 的圆弧插补方式在VC中绘制圆弧
  9. Dos攻击工具(ZAmbIE)
  10. 浅谈Android系统开发中LOG的使用【转】