Oracle账户密码HASH在不同机器中是一样的
Oracle安装单个补丁的命令是opatch
1.数据库主机管理员账号
控制默认主机管理员账号,禁止使用orale作为数据库主机管理员账号
查看启动进程用户是否为oracle:
$ps -ef |grep ora_
删除或多顶与数据库运行/维护等工作无关的账号
Sql>select username from dba_users where account)status='OPEN'
2.删除无用账号
加固方法:锁定无用账号
SQL>alter user 用户名 account lock;
解锁
SQL>alter user 用户名 account unlock;
备注:可通过查询密码串列出使用默认密码的账户
3.默认账号修改口令
修改默认账户和密码
Oracle 10g
SQL>select username,password,account_status,profile from dba_users;
Oracle 11g 以上检查默认密码:
SQL>SELECT * FROM DBA_USERS_WITH_DEFPWD;
加固方法
修改密码:SQL>alter user 用户名 idetify by ‘密码’
4.限制数据库SYSDBA账号
限制具备数据库超级管理员(SYSDBA)权限的用户远程登陆及自动登陆
检测方法
检查remote_login)passwordfile 的值是否为NONE
SQL>show parameter REMOTE_LOGIN_PASSWORDFILE
加固方法
SQL> Alter system set remote_login_passwordfile=NONE scope=spfile
5.口令策略
对于采用静态口令认证技术的数据库,需对口令策略进行安全设置。
检测方法:查看各项值是否符合:
密码复杂度校验:PASSWORD_VERIFY_FUNCTION function_namme
密码到期宽限天数:PASSWORD_GRACE_TIME 5
密码使用周期天数:PAASSWORD_LIFE_TIME 180
重用密码最大数量:PASSWORD_REUSE_MAX 5
SQL>select resource_name,limit from dba_profile where profile='DEFAULT' and resource_type ='PASSWORD';
加固方法:
需要执行$ORACLE_HOME/rdbms/admin/utlpwdmg.sql建立密码校验函数
$sqlplus “/ as sysdba” @$ORACLE_HOME/rdbms/admin/utlpwdmg.sql
然后修改缺省profile:
#SQL>alter profile DEFAULT limit PASSWORD_LIFE_TIME 180 PASSWORD
………………..
6.账号锁定策略
尝试次数5次
锁定账户天数:PASSWORD_LOCK_TIME .0069
连续失败次数:FAILED_LOGIN_ATTEMPTS 5
SQL>select resource_name,limit from dba_profiles where profile='DEFAULT' and resource_tpe='PASSWORD';
加固方法
修改缺省profile:
SQL>alter profile default limit FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LOCK_TIME 10/1440;
锁定账户的时间单位为天,所以计算10分钟为0.00694
7.public权限
清理public各种默认权限,攻击者可能利用程序包的public 角色执行权限获得非法访问,威胁系统安全/
检测方法
UTL_FILE,UTL_TCP,UTL_HTTP,UTL_SMTP,DBMS_LOB,DBMS_SYS_SQL SQL>select table_name from dba_tab_privs where grantee='PUBLIC' and privilege='EXECUTE' and table_name in (' UTL_FILE','UTL_TCP,UTL_HTTP,UTL_SMTP,DBMS_LOB,DBMS_SYS_SQL',dbms_job','dbms_scheduler'
8.数据库角色管理
使用数据库角色来管理对象的权限
加固方法:
使用create role 命令创建角色并赋予系统/对象或Role的权限到此角色
SQL>create role Role_ZXQ; Grant create table to Role_ZXQ; Grant EXP_FULL_DATABASE table to Role_ZXQ;
再将此角色赋予对象“
grant Roles_ZXQ to app_user;
回退方法:
删除创建角色:
SQL>drop role …
9.启用日志审计
数据库应配置日志功能,记录对于数据库相关的安全事件
SQL>show parameter audit
检查AUDIT_TRAIL取值是否启用,是否设置蛇和级别,在syslog里是否记录对应的事件
加固方法:设置AUDIT_TRAIL-OS ,记录到系统日志中/
SQL>alter system set audit_trail='OS' scope =spfile
回退方法:
SQL>alter system set audit_trail='NONE' scope =spfile
10.日志记录及保存
打开sys日志开关:
SQL>alter system set audit+sys_operations=true scope=spfile
设置审核级别:
SQL>alter system set audit_syslog_level='user.notice' scope=spfile
打开系统日志:
#echo user.notice /var/log/ora_dba.log>>/etc/syslog.conf
关闭系统日志
SQL>alter system set audit+sys_operations=false scope=spfile
取消审核级别
SQL>alter system set audit_syslog_level=''scope=spfile
关闭系统日志
#vi /etc/syslog.conf
11.日志文件保护
设置日志访问权限
加固方法
$chmod o-rw filename $chmod u-s filename
12.开启监听器日志
开启监听器日志功能是为了捕获监听器命令和防止密码被暴力破解
检测方法
查看$ORACLE_HOME/network/admin/listener.ora中是否设置日志舰艇,
例如
LOGGING_LISTERNER=ON LOG_FILE_LISTER=1.log LOG_DIRECTORY_LISTER=/ora/prod/100.1.0/Db1/network/admin
也可执行下列命令差:
$lsnrctl show log_status $lsnrctl show log_file
加固方法:
切换到管理员执行
$ORACLE_HOKE/bin/lsnrctl LSNRCTL>set log_dirctory >oracle_home路径>network/admin LSNRCTL>set log_file <sid名称>.log LSNRCTL>set log_status on LSNRCTL>save config
13.数据字典保护
启用数据字典保护,只有SYSDBA用户才能访问数据查字典基础表
检测方法:检查参数O7_DICTIONARY_ACCESSIBILITY是否设置为FALSE
SQL>show paramter O7_DICTIONARY_ACCESSIBILITY
14.监听器口令
为数据库监听器的关闭和启动设置密码
检测方法:
检查$ORACLE_HOME/network/admin/lister/ora文件中是否设置参数
PASSWORDS_LISTSENER $cat $ORACLE HOME/network/admin/listener.ora
加固方法“
设置密码
$lsnrctl LSNRCTL>change_password Old password: New password:密码 Reenter new password:密码 LSNRCTL>save_config
回退方法
设置为空的方法
$lsnrctl LSNRCTL>change_passord Old password:原密码 New password:空 Reenter new password:空 LSNRCTL>save_config
15.监听服务连接超时
设置监听器连接超时,连接后未进行请求则断开连接
检查方法:检查$ORACLE_HOME/network/admin/listener.ora文件中是否设置参数INBOUND_CONNECT_TIMEOUT_listener_name
加固方法:
编辑$ORACLE_HOME/network/adin/listenet/ora.在listener.ora文件中手动加入下面这样一行
INBOUND_CONNECT_TIMEOUT_listener_name=3
回退方法:删除这样一行INBOUND_CONNECT_TIMEOUT_listener_name=3
16.监听器管理限制
17.禁止远程操作系统认证
设置登录认证方式禁止远程操作系统认证。攻击者可能利用数据库对远程操作系统的信任关系威胁系统安全
检测方法:SQL?show parameter REMOTE_OS_AUTHENT
加固方法:设置禁止远程操作系统认证
SQL>alter system set REMOTE_OS_AUTHENT=FALSE scope=file
18.网络连接限制
设置网络连接限制,只允许安全的IP地址链接数据库进行操作。
检测方法:检查$ORACLE_HOME/network/admin/sqlnet/ora文件中是否设置参数tcp.validnode_checking和tcp.invited_nodes
加固方法:修改$ORACLE_HOME/network/admin/sqlnet/ora文件
tcp.validnode_checking=YES tcp.invited_nodes=(192.168.0.1,10.180.*,10.111.0.0/16)
关闭方法
tcp.validnode_checking=YES