一、操作系统层基础安全配置
oinstall、dba),并为Oracle服务创建专用用户(如oracle),将其加入对应组;清理无用系统账号,避免未授权用户通过操作系统层面访问数据库。/etc/security/limits.conf设置Oracle用户资源限制(如oracle soft nproc 2047、oracle hard nofile 65536),防止资源滥用;调整/etc/sysctl.conf优化系统内核参数(如fs.file-max 6815744、net.ipv4.ip_local_port_range 9000 65500),增强系统抗攻击能力。$ORACLE_HOME、数据文件目录、日志目录)设置chown oracle:oinstall归属,使用chmod 750限制访问权限;通过chattr +i设置核心配置文件(如/etc/passwd、/etc/shadow)为不可修改,防止非法篡改。二、Oracle数据库权限精细化管理
SYSDBA身份登录,使用CREATE USER命令创建用户并设置强密码(如CREATE USER hr_user IDENTIFIED BY "Hr@Passw0rd123");通过ALTER USER为用户分配默认表空间(如DEFAULT TABLESPACE users)和临时表空间(如TEMPORARY TABLESPACE temp),避免用户占用系统表空间。hr_role角色并授予CREATE SESSION、SELECT、INSERT等必要权限(GRANT CREATE SESSION, SELECT, INSERT ON hr_emp TO hr_role),再将角色授予用户(GRANT hr_role TO hr_user)。直接授予系统权限时,避免使用DBA等高权限角色,如仅需创建表则授予RESOURCE权限。WITH ADMIN OPTION谨慎授权角色传递(如GRANT hr_role TO dev_user WITH ADMIN OPTION),防止权限扩散;定期通过DBA_SYS_PRIVS(系统权限)、DBA_ROLE_PRIVS(角色权限)、DBA_TAB_PRIVS(对象权限)视图审查用户权限,使用REVOKE命令撤销不再需要的权限(如REVOKE hr_role FROM hr_user)。三、网络安全防护
iptables/firewalld)仅开放Oracle监听端口(默认1521),限制访问源IP(如仅允许应用服务器IP);启用Oracle高级安全选项(ASE),使用SSL/TLS加密客户端与数据库之间的通信,防止数据传输被窃听;通过SQLNET.ORA配置SQLNET.AUTHENTICATION_SERVICES=(NONE),禁用操作系统身份验证,强制使用数据库密码认证。ALTER SYSTEM SET SECURE_REGISTER='TRUE' SCOPE=SPFILE;),防止未授权用户修改监听配置;修改监听器端口(如从1521改为非标准端口),增加攻击难度;限制监听器仅接受本地连接(LOCAL_LISTENER=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))),再通过SSH反向隧道暴露给应用服务器。四、安全加固与审计监控
/etc/grub.conf添加password --md5 $1$abc123$xyz456),防止通过引导程序进入单用户模式;定期更新操作系统(yum update)和Oracle数据库(opatch apply),修复已知漏洞;使用Oracle Database Security Assessment Tool(DBSAT)扫描数据库配置,识别并修复安全弱点。ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;),记录用户登录、数据修改、权限变更等操作;使用细粒度审计(FGA)针对敏感表(如employees.salary)设置审计策略(BEGIN DBMS_FGA.ADD_POLICY(OBJECT_SCHEMA=>'hr', OBJECT_NAME=>'employees', POLICY_NAME=>'audit_salary', AUDIT_CONDITION=>'salary > 10000', AUDIT_COLUMN=>'salary', HANDLER_SCHEMA=>NULL, HANDLER_MODULE=>NULL, ENABLE=>TRUE););定期审查审计日志(SELECT * FROM DBA_AUDIT_TRAIL WHERE TIMESTAMP > SYSDATE-7),及时发现异常操作。五、密码与数据安全
PROFILE设置密码复杂度(如CREATE PROFILE strict_profile LIMIT PASSWORD_VERIFY_FUNCTION verify_function_11G)、密码有效期(PASSWORD_LIFE_TIME 90)、失败尝试次数(FAILED_LOGIN_ATTEMPTS 5)和锁定时间(PASSWORD_LOCK_TIME 1);为用户分配严格profile(ALTER USER hr_user PROFILE strict_profile),强制遵守密码策略。ALTER TABLESPACE users ENCRYPTION ON;),保护静态数据;对备份数据使用RMAN加密(CONFIGURE ENCRYPTION FOR DATABASE ON;),防止备份泄露;使用Data Redaction动态掩码查询结果中的敏感信息(如SELECT employee_id, REDACTION(first_name) AS first_name FROM employees WHERE department_id = 10;),避免开发人员或临时用户看到敏感数据。