SQL*Plus作为Oracle数据库的命令行工具,其在CentOS环境中的安全设置需围绕用户权限、密码策略、连接安全、环境配置四大核心维度展开,以下是具体实施步骤:
SYS、SYSTEM等超级用户执行日常操作,通过CREATE USER命令创建专用用户(如app_user),并分配最小必要权限(如CREATE SESSION、SELECT、INSERT等)。例如:CREATE USER app_user IDENTIFIED BY StrongPassword123!;
GRANT CREATE SESSION, SELECT ON schema_name.table_name TO app_user;
FLUSH PRIVILEGES; -- 使权限立即生效
PROFILE限制用户会话数、CPU时间、连接时间等,防止滥用。例如,限制用户最多同时开启5个会话,空闲超时30分钟后自动断开:CREATE PROFILE app_profile LIMIT
SESSIONS_PER_USER 5,
IDLE_TIME 30;
ALTER USER app_user PROFILE app_profile;
VERIFY_FUNCTION(位于?/rdbms/admin/utlpwdmg.sql)强制密码包含大小写字母、数字和特殊字符,且不与用户名相似。例如,将默认profile的密码验证函数设置为VERIFY_FUNCTION:@?/rdbms/admin/utlpwdmg.sql; -- 安装密码验证脚本
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION VERIFY_FUNCTION;
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 90,
PASSWORD_REUSE_TIME 365,
PASSWORD_REUSE_MAX 5;
sqlplus app_user/password),防止密码被ps、top等命令查看。正确做法是:sqlplus app_user # 运行后通过交互式输入密码
$ORACLE_HOME/network/admin/sqlnet.ora文件,强制使用AES256加密通信,防止密码在网络传输中被截获:SQLNET.ENCRYPTION_CLIENT = REQUIRED
SQLNET.ENCRYPTION_TYPES_CLIENT = (AES256)
SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
firewalld仅允许特定IP访问Oracle监听端口(默认1521),减少暴露面:firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="1521" accept' --permanent
firewall-cmd --reload
ORAPWD创建密码文件(如orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID),需设置严格权限(仅oracle用户可读写):chmod 600 $ORACLE_HOME/dbs/orapw$ORACLE_SID
chown oracle:oinstall $ORACLE_HOME/dbs/orapw$ORACLE_SID
AUDIT命令记录用户的关键操作(如登录、数据修改),便于后续追溯。例如,审计app_user的所有登录行为:AUDIT CREATE SESSION BY app_user BY ACCESS;
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log)和审计日志仅能被oracle用户访问,防止敏感信息泄露。V$SESSION、DBA_AUDIT_TRAIL等视图定期检查异常登录(如频繁失败的登录尝试)、未授权的操作,及时响应安全事件。以上措施需结合实际业务需求调整,核心目标是最小化权限、最大化防护,确保SQL*Plus在CentOS环境中的使用安全。