在Linux系统上进行Oracle数据库的安全设置是确保数据库完整性和保密性的关键步骤。以下是一些重要的安全设置措施:
1. 关闭防火墙
关闭防火墙可以防止外部未授权访问。可以使用以下命令来关闭firewalld防火墙:
# systemctl status firewalld.service # systemctl stop firewalld.service # systemctl disable firewalld.service
2. 修改系统标识和内核参数
修改CentOS系统标识和内核参数以适应Oracle数据库的需求。例如,修改/etc/redhat-release
文件内容,并添加以下内容到/etc/sysctl.conf
文件中:
fs.aio-max-nr =1048576 fs.file-max=6815744 kernel.shmmni =4096 kernel.sem =25032000100128 kernel.shmall =2097152 kernel.shmmax =2147483648 net.ipv4.ip_local_port_range =9000-65500 net.ipv4.icmp_echo_ignore_broadcasts =1 net.ipv4.conf.all.rp_filter =1 net.core.rmem_default =262144 net.core.rmem_max=4194304 net.core.wmem_default=262144 net.core.wmem_max=1048576
修改完后,启用新的配置:
# sysctl -p
3. 创建用户和组
创建专用的用户和组来管理Oracle数据库的安装和运行:
# groupadd oinstall # groupadd dba # useradd -g dba -m oracle # useradd -g oinstall -m oracle # passwd oracle # usermod -a -G oinstall oracle # usermod -a -G dba oracle
4. 修改用户的安全性能设置
修改/etc/security/limits.conf
文件,设置用户的安全性能:
@student - maxlogins 4 oraclesoft nproc 2047 oraclehard nproc 16384 oraclesoft nofile 1024 oraclehard nofile 65536
5. 修改用户环境变量
修改用户的环境变量,例如/home/oracle/.bashrc
文件:
export ORACLE_BASE=/data/oracle export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 export ORACLE_SID=orclex export ORACLE_UNQNAME=orclex export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
6. 数据字典保护
启用数据字典保护,只允许SYSDBA用户访问数据字典基础表:
SQL> alter system set O7_DICTIONARY_ACCESSIBILITY = FALSE;
7. 限制DBA组中的用户数量
使用userdel
命令删除多余的DBA组中的操作系统用户,只留一个Oracle安装用户。
8. 设置数据库口令复杂度
修改相关profile,设置密码复杂度:
PASSWORD_VERIFY_FUNCTION = ( PASSWORD_POLICY = ( PASSWORD_LIFE_TIME = 90 PASSWORD_REUSE_TIME = 0 PASSWORD_REUSE_MAX = UNLIMITED FAILED_LOGIN_ATTEMPTS = 5 PASSWORD_LOCK_TIME = 1/24 PASSWORD_GRACE_TIME = 10 PASSWORD_VERIFY_FUNCTION = verify_function ) )
9. 启用数据库审计
开启数据库审计功能,记录对数据库的所有访问:
SQL> alter system set audit_trail='DB or OS';
10. 配置可信IP地址访问控制
编辑$ORACLE_HOME/network/admin/sqlnet.ora
文件,添加或修改如下配置:
tcp.validnode_checking = yes tcp.invited_nodes = (192.168.1.0, 192.168.1.1)
11. 网络传输数据加密
使用Oracle提供的高级安全选件来加密客户端与数据库之间或中间件与数据库之间的网络传输数据:
sqlnet.encryption = required
12. 设置连接数
根据机器性能和业务需求,设置最大连接数:
SQL> alter system set processes = 200 scope=spfile;
通过实施上述安全设置和最佳实践,可以显著提高Oracle数据库的安全性,保护数据免受未授权访问和各种网络威胁。