设为首页 收藏本站
查看: 751|回复: 0

[经验分享] oracle加固

[复制链接]

尚未签到

发表于 2018-9-9 08:56:14 | 显示全部楼层 |阅读模式
  一.   检查项名称:检查是否使用加密传输
  判断条件:通过网络层捕获的数据库传输包为加密包,有设置sqlnet.encryption为符合要求
  1. 在Oracle Net Manager中选择“Oracle Advanced Security”。
  2. 然后选择Encryption。
  3. 选择Client或Server选项。
  4. 选择加密类型。
  5. 输入加密种子(可选)。
  6. 选择加密算法(可选)。
  7. 保存网络配置,sqlnet.ora被更新。
  补充操作说明:存在sqlnet.encryption
  二.   使用lsnrctl start或lsnrctl stop命令起停listener需要密码
  通过下面命令设置密码:
  $ lsnrctl
  LSNRCTL> change_password
  Old password:Not displayed
  New password:Not displayed
  Reenter new password:Not displayed
  Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=prolin1)(PORT=1521)(IP=FIRST)))
  Password changed for LISTENER
  The command completed successfully
  LSNRCTL> save_config
  补充操作说明:命令:cat network/admin/sqlnet.ora,回显中存在PASSWORDS_LISTENER
  三.Oracle软件账户的安全策略
  判断条件:每3个月自动提示更改密码,过期后不能登陆。
  使用操作系统一级的账户安全管理来保护Oracle软件账户。
  补充操作说明:此项的判断方式同操作系统的口令生存周期项一致
  四.检查是否限制可以访问数据库的地址
  判断条件:在非信任的客户端以数据库账户登陆被提示拒绝。
  只需在服务器上的文件$ORACLE_HOME/network/admin/sqlnet.ora中设置以下行:
  tcp.validnode_checking = yes
  tcp.invited_nodes = (ip1,ip2…)
  补充操作说明:tcp.validnode_checking的值为yes
  五.10分钟以上的无任何操作的空闲数据库连接被自动断开,SQLNET.EXPIRE_TIME有设置
  在sqlnet.ora中设置下面参数:
  SQLNET.EXPIRE_TIME=10
  补充操作说明:存在SQLNET.EXPIRE_TIME值大于等于1
  六.检查是否配置最大认证失败次数
  判断条件:连续6次用错误的密码连接用户,第7次时用户将被锁定
  为用户建profile,指定FAILED_LOGIN_ATTEMPTS为6
  补充操作说明:如果连续6次连接该用户不成功,用户将被锁定
  命令:select limit from dba_profiles t where resource_name= 'FAILED_LOGIN_ATTEMPTS',回显中default值变成6
  七.检查是否根据业务要求制定数据库审计策略
  判断条件:对审计的对象进行一次数据库操作,检查操作是否被记录。
  1. 通过设置参数audit_trail = db或os来打开数据库审计。
  2. 然后可使用Audit命令对相应的对象进行审计设置。
  补充操作说明:存在os,db,DB,OS
  八.检查是否记录操作日志
  判断条件:做相关操作,检查是否记录成功
  创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难
  1.建表LOGON_TABLE
  2.建触发器
  CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
  BEGIN
  INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT('USERENV', 'SESSION_USER'),
  SYSDATE);
  END;
  补充操作说明:命令:select value from v$parameter t where t.name= 'audit_trail',VALUE等于DB,OS中的一个
  九.检查是否限制具备数据库超级管理员(SYSDBA)权限的用户远程登录
  判断条件:1. 以SYSDBA用户不能远程连接到数据库。
  1. 在spfile中设置REMOTE_LOGIN_PASSWORDFILE=NONE来禁止SYSDBA用户从远程登陆。
  补充操作说明:命令:select t.VALUE from v$parameter t whereupper(t.NAME) like  '%REMOTE_LOGIN_PASSWORDFILE%',回显中出现NONE
  十.检查是否在数据库对象上设置了VPD和OLS
  判断条件:通过视图来检查是否在数据库对象上设置了VPD和OLS。
  1. 在表上构建 VPD可以使用Oracle所提供的 PL/SQL 包 DBMS_RLS 控制整个 VPD 基础架构,具体设置方法较复杂,建议参考Oracle文档进行配置。
  2. Oracle标签安全(OLS)是在相关表上通过添加一个标签列来实现复杂的数据安全控制,具体细节请参考Oracle文档。
  补充操作说明:命令:select count(*) from v$vpd_policy,回显中COUNT值大于等于1
  十一. 检查帐户口令生存周期
  判断条件:到期不修改密码,密码将会失效。连接数据库将不会成功
  修改profile,使所有profile的PASSWORD_LIFE_TIME参数小于等于90
  补充操作说明:在90天内,需要修改密码
  命令:select limit from dba_profiles t where resource_name= 'PASSWORD_LIFE_TIME',回显值小于等于90
  十二. 检查口令强度设置
  判断条件:修改密码为不符合要求的密码,将失败.profile中对于口令强度有定义
  为用户建profile,调整PASSWORD_VERIFY_FUNCTION,指定密码复杂度
  CREATE PROFILE "TEST_PROFILE"
  LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
  ALTER USER "USER_NAME"  PROFILE"TEST_PROFILE";
  补充操作说明:命令:select count(*) from dba_profiles whereresource_name = 'PASSWORD_VERIFY_FUNCTION' and limit = 'NULL',回显中COUNT值为0
  十三.检查是否使用数据库角色(ROLE)来管理对象的权限
  判断条件:对应用用户不要赋予DBA Role或不必要的权限。

  •   1.  使用Create Role命令创建角色。
      2. 使用用Grant命令将相应的系统、对象或Role的权限赋予应用用户。
      除了默认用户(sys、system和sysman),其他用户都没有赋予dba角色
      补充操作说明:获取拥有dba权限的非默认管理员用户,用户数等于0
  十四.检查是否在配置用户所需的最小权限
  判断条件:非默认的具有DBA权限用户个数为0
  grant 权限 to username;
  revoke 权限 from username;
  补充操作说明:用第一条命令给用户赋相应的最小权限
  用第二条命令收回用户多余的权限
  获取拥有dba权限的非默认管理员用户,用户数等于0
  十五.检查是否配置日志功能
  判断条件:登录测试,检查相关信息是否被记录
  创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难1.建表LOGON_TABLE2.建触发器CREATE TRIGGER TRI_LOGON AFTER LOGON ON DATABASEBEGIN INSERT INTO LOGON_TABLE VALUES (SYS_CONTEXT('USERENV','SESSION_USER'),SYSDATE);END;
  补充操作说明:触发器与AUDIT会有相应资源开消,请检查系统资源是否充足。特别是RAC环境,资源消耗较大。
  命令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim('LOGON'),回显中COUNT值大于等于1
  十六. 检查是否记录安全事件日志
  判断条件:做相关测试,检查是否记录成功
  创建ORACLE登录触发器,记录相关信息,但对IP地址的记录会有困难
  1.建表LOGON_TABLE
  2.建触发器
  CREATE TRIGGER TRI_LOGON
  AFTER LOGON ON DATABASE
  BEGIN
  INSERT INTO LOGON_TABLE VALUES(SYS_CONTEXT('USERENV', 'SESSION_USER'),
  SYSDATE);
  END;
  补充操作说明:命令:select count(*) from dba_triggers t wheretrim(t.triggering_event) = trim('LOGON')。回显中COUNT值大于等于1
  十七. 检查是否设置记住历史密码次数
  判断条件:重用修改5次内的密码,将不能成功。profile中对于次数有定义
  为用户建profile,指定PASSWORD_REUSE_MAX为5
  补充操作说明:当前使用的密码,必需在密码修改5次后才能再次被使用
  命令:select limit from dba_profiles t where resource_name= 'PASSWORD_REUSE_MAX',回显中default值变成5
  十八. 检查是否对用户的属性进行控制
  判断条件:1. 可通过设置profile来限制数据库账户口令的复杂程度,口令生存周期和账户的锁定方式等。
  2. 可通过设置profile来限制数据库账户的CPU资源占用。
  为每个新用户赋予非默认的profile。
  可通过下面类似命令来创建profile,并把它赋予一个用户
  CREATE PROFILE app_user2 LIMIT
  FAILED_LOGIN_ATTEMPTS 6
  PASSWORD_LIFE_TIME 60
  PASSWORD_REUSE_TIME 60
  PASSWORD_REUSE_MAX 5
  PASSWORD_VERIFY_FUNCTIONverify_function
  PASSWORD_LOCK_TIME 1/24
  PASSWORD_GRACE_TIME 90;
  ALTER USER jd PROFILE app_user2;
  补充操作说明:命令:select * from dba_users t where profile notin ('DEFAULT','MONITORING_PROFILE'),回显中的值大于0
  十九. 检查是否存在dvsys用户dbms_macadm对象
  判断条件:以DBA用户登陆,不能查询其它用户下面的数据
  Oracle Data Vault是作为数据库安全解决方案的一个单独选件,主要功能是将数据库管理账户的权限和应用数据访问的权限分开, Data Vault可限制有DBA权限的用户访问敏感数据。设置比较复杂,具体细节请参考Oracle文档。
  补充操作说明:命令:select count(*) from dba_users whereusername='DVSYS',回显中COUNT值等于1


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-568507-1-1.html 上篇帖子: oracle impdp的table_exists_action详解 下篇帖子: Oracle over()函数实例分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表