干货!数据库安全之Oracle数据库安全加固
sinye56 2024-10-08 16:37 18 浏览 0 评论
前言
最近打算整理一下资料,写几篇关于数据库安全的文章。特此记录,方便查阅。
操作流程
帐号权限加固
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.重启数据库和监听使修改生效
注意:需要重启服务,应提前通知业务部门
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 <listenername>
3.设置密码
change_password
set password
4.保存设置
save_config
5.检查 listener.ora 文件
看是否有一条 PASSWORDS_<listenername>的记录
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.下载并安装相应的安全补丁
注意:更新安全补丁可能对数据库系统、应用系统造成影响; 需要进行严格测试并做好备
份恢复措施后实施
相关推荐
- 一个不错的软件版本命名规范!
-
之前写了一篇如何自动生成版本号的文章,《让你的C程序,自动打印版本信息》初衷是让自己的程序在运行时自动打印与版本相关的信息,避免测试时因为版本信息不确定导致的一些功能对应不上去的问题,当时留了一个坑,...
- 国产操作系统迎来发展风口 公务领域更能培育起Linux生态
-
谷歌和微软在俄罗斯市场的一番套路猛如虎,就让我们深刻地意识到了,只有自己的东西才能靠得住。也由此,国内操作系统发展迎来了发展风口。我就看到有朋友就秀出了他们单位采购的纯国产的主机,一款华为的主机,纯国...
- 5个大有“前途”的Linux桌面发行版本
-
ZD至顶网CIO与应用频道08月27日专栏:Linux无处不在。你的服务器里,你的电话、汽车、手表、烤面包机、冰箱……和台式机里都有Linux的身影。虽然在桌面上见到Linux的用户比在自动调温...
- Linux 常用应用软件大全
-
编译自:https://www.fossmint.com/most-used-linux-applications/作者:MartinsD.Okoi译者:HankChow对于许多应用程序...
- Linux 4.1 系列的最大版本 4.1.18 LTS发布,带来大量修改
-
(LCTT译注:这是一则过期的消息,但是为了披露更新内容,还是发布出来给大家参考)著名的内核维护者GregKroah-Hartman貌似正在度假中,因为SashaLevin2016年2月16日的...
- Linux发行版需要杀软吗?卡巴斯基推出免费KVRT病毒扫描清理工具
-
IT之家6月4日消息,你认为使用Linux发行版,需要杀毒软件吗?或许很多用户认为Linux发行版偏小众,因此受到黑客攻击的风险也相对较小,不过卡巴斯基并不这么认为,近期推出了适用于...
- 适合开发人员的 5款 Linux 发行版
-
什么是Linux?Linux是基于Unix的操作系统。由LinusTorvalds开发于1991年首次发布其内核。因为Linux是开源软件,其发行版由不同组织发布,因此不同的发行版具有不同的风格...
- VMware Workstation 17.0 Pro 发布:新增 TPM 2.0 完美兼容Win11
-
IT之家11月18日消息,VMwareWorkstation17.0Pro现已发布,它带来了许多新特性,例如微软Windows11硬性要求:虚拟可信平台模块(TPM)2.0。...
- 你是否需要一个容器专用的Linux发行版本?
-
单单使用容器是不够的,提供商们认为你需要一个容器专用的Linux发行版本。我们可以让容器在不同的操作系统上运行,不同的操作系统都有自己的虚拟化服务,如:SolarisZones、BSDJails、...
- Tizen 3.0版本发布 采用Linux 4.1内核
-
2015-09-2111:31:39作者:马荣【中关村在线软件资讯】9月21日消息:尽管三星靠着Android系统设备在移动市场赚钱,但是仍然没有忘记自家的Tizen开发。现在Tizen3.0版...
- 欧拉操作系统演进:应用累计超130万套 支持鲲鹏、英特尔、飞腾等芯片
-
21世纪经济报道记者倪雨晴深圳报道4月15日,在欧拉开发者大会(openEulerDeveloperDay2022)的主论坛上,欧拉首个数字基础设施全场景长周期版openEuler22.03...
- Papyros:以Material Design为灵感的Linux发行版本
-
项目团队并不希望只是采用传统的桌面主题,而是致敬谷歌Android系统的MaterialDesign设计语言想要打造出某些不同以往足够吸引用户的Linux发行版本,自然该版本还在不断的更新和改进中,...
- 比特网早报:全国空间计量技术委员会成立,银河麒麟操作系统上架微信Linux4.0.0版本
-
2024年11月6日消息,昨夜今晨,科技圈都发生了哪些大事?行业大咖抛出了哪些新的观点?比特网为您带来值得关注的科技资讯:全国空间计量技术委员会在北京成立近日,经市场监管总局批准,全国空间计量技术委员...
- 2024年最稳定的5个Linux发行版,赶紧收藏!
-
Linux是最流行的免费开源平台之一。Linux已被广泛使用,因为它安全、可扩展和灵活。Linux发行版收集开源代码,对其进行编译,并将其组合成一个可以轻松启动和安装的操作系统。它们还提供不同的...
- 彰显Linux生态繁华,Ubuntu、Fedora等四发行版同时发布新版本
-
上周对于开源社区来说是忙碌的一周。EndeavourOS和TrueNASScale于周二(4月16日)发布,Fedora于周三(4月17日)发布,Ubuntu于周四(4月18日)发布。四个新版本中都...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle忘记用户名密码 (59)
- oracle11gr2安装教程 (55)
- mybatis调用oracle存储过程 (67)
- oracle spool的用法 (57)
- oracle asm 磁盘管理 (67)
- 前端 设计模式 (64)
- 前端面试vue (56)
- linux格式化 (55)
- linux图形界面 (62)
- linux文件压缩 (75)
- Linux设置权限 (53)
- linux服务器配置 (62)
- mysql安装linux (71)
- linux启动命令 (59)
- 查看linux磁盘 (72)
- linux用户组 (74)
- linux多线程 (70)
- linux设备驱动 (53)
- linux自启动 (59)
- linux网络命令 (55)
- linux传文件 (60)
- linux打包文件 (58)
- linux查看数据库 (61)
- linux获取ip (64)
- linux进程通信 (63)