一、系统级权限与用户组配置
SQLPlus的安全性依赖于Debian系统层级的权限控制。需将使用SQLPlus的用户加入oinstall(Oracle软件安装基础组)和dba(数据库管理组,根据权限需求可选),避免过度授权。修改后需重新登录使组权限生效。同时,将用户加入adm组(系统监控组)以查看必要日志,但需限制对关键目录(如$ORACLE_HOME/network/log)的访问权限(设置为750,所有者为oracle用户)。
二、Oracle数据库权限最小化原则
避免使用sys、system等默认管理员账户进行日常操作,创建专用数据库用户并分配仅必要权限。例如,普通用户仅需CONNECT(连接数据库)和RESOURCE(创建对象)权限,管理员需DBA权限(谨慎授予)。通过GRANT/REVOKE语句动态调整权限,定期审计用户权限分配情况。
三、密码策略强化
通过Oracle的概要文件(PROFILE)设置密码复杂度与生命周期。修改默认概要文件(DEFAULT),启用密码有效期(如90天)、重用限制(如365天内不可重复使用)、失败登录尝试(如5次失败后锁定账户1天)等参数。同时,系统层使用libpam-cracklib工具验证密码复杂度(要求包含大小写字母、数字、特殊字符,长度≥8位)。
四、网络与连接安全
$ORACLE_HOME/network/admin/tnsnames.ora文件配置数据库连接别名(如MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = orcl)))),避免在命令行中直接暴露主机、端口、服务名等敏感信息。设置tnsnames.ora文件权限为600,防止未授权修改。sqlnet.ora中配置SQLNET.ENCRYPTION_SERVER = REQUIRED、SQLNET.ENCRYPTION_TYPES_SERVER = AES256、SQLNET.DATA_INTEGRITY_SERVER = REQUIRED,强制客户端与服务器之间通信加密,防止密码和数据被窃取。sqlplus username/password@host直接暴露密码,推荐使用sqlplus /nolog后通过CONN命令连接(密码不会在进程列表或历史记录中泄露)。五、审计与监控机制
启用Oracle数据库审计功能,记录用户关键操作(如登录、数据修改、敏感表查询)。例如,使用AUDIT CREATE SESSION BY ACCESS;审计登录行为,AUDIT SELECT ON employees BY ACCESS;审计employees表的查询操作。审计日志默认存储在SYS.AUD$表中,定期检查日志以发现异常行为。同时,通过系统监控工具(如Nagios、Zabbix)监控SQLPlus进程的资源占用和连接状态,及时预警异常。
六、文件与环境安全
$ORACLE_HOME/sqlplus/admin/glogin.sql(全局登录脚本)需限制为oracle用户所有(权限640),避免恶意修改。~/.bashrc),而非全局配置文件(如/etc/profile),避免影响所有用户。配置完成后执行source ~/.bashrc使设置生效。export PASSWORD=your_password)或密码文件存储密码,减少泄露风险。七、日常使用安全规范
:var)替代直接拼接用户输入,防止SQL注入攻击。query_result.txt)需设置合理权限(600),存放在用户家目录或专用目录,避免放置在公共目录(如/tmp)。