数据库安全之Oracle数据库安全加固

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

数据库安全之Oracle数据库安全加固

文章插图
 
操作流程 
数据库安全之Oracle数据库安全加固

文章插图
 
帐号权限加固
1、限制应用用户在数据库中的权限,尽量保证最小化避免授予了 DBA 权限
1.查看权限
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>; --赋予的角色
2.收回相应权限(例如收回 select any table 权限)
SQL>REVOKE select any table FROM <username>;
3.收回应用用户的 DBA 角色
SQL>REVOKE dba FROM <username>;
注意:避免分配权限过大或过小
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 <newpasswd>;
SQL>ALTER USER system IDENTIFIED BY <newpasswd>;
2.锁定不需要的用户
SQL>ALTER USER <username> ACCOUNT LOCK;
4、删除系统中多余的自建帐号
1.查看用户自建账号
SQL>SELECT username FROM all_users;
2.删除或者禁用多余自建账号
SQL>DROP USER <username> CASCADE;
5、为所有应用用户配置强口令
1.根据设置的口令策略修改弱口令
SQL>ALTER USER <username> IDENTIFIED BY <newpasswd>;
数据访问控制加固 
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 <tablename>;
SQL>DROP VIEW <viewname>;
注意:需要和业务部门确认
网络访问控制加固 
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.重启数据库和监听使修改生效
注意:需要重启服务,应提前通知业务部门


推荐阅读