在Debian上安装SQL*Plus前,需优先确保系统基础安全:
sudo apt update && sudo apt upgrade -y,修复已知系统漏洞;instantclient-basiclite、instantclient-sqlplus),减少攻击面。instantclient-basiclite(基础包)和instantclient-sqlplus(SQL*Plus工具);/opt/oracle/instantclient),避免放置在系统关键路径(如/usr/local):sudo mkdir -p /opt/oracle/instantclient
sudo unzip instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d /opt/oracle/instantclient
sudo unzip instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d /opt/oracle/instantclient
sudo ln -s /opt/oracle/instantclient/sqlplus /usr/bin/sqlplus
~/.bashrc或~/.profile),添加以下内容:export ORACLE_HOME=/opt/oracle/instantclient
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
/etc/profile(防止影响所有用户),仅在用户级配置文件中设置;source ~/.bashrc使配置生效。oinstall用于安装相关操作,dba用于数据库管理):sudo usermod -aG oinstall your_username
sudo usermod -aG dba your_username
修改后需重新登录使组权限生效。SELECT、INSERT权限,管理员需DBA权限):-- 示例:授予scott用户仅查询权限
GRANT CONNECT, RESOURCE TO scott;
-- 避免过度授权(如不要直接授予SYSDBA权限给普通用户)
alert.log)、输出文件(如query_result.txt)需设置合理权限:sudo chown your_username:your_group /path/to/output_file
sudo chmod 600 /path/to/output_file # 仅用户可读写
避免将文件放置在公共目录(如/tmp),防止未授权访问。交互式输入密码:连接数据库时不直接在命令行中输入密码(防止密码被ps、history等命令捕获),示例如下:
sqlplus username@//host:port/service_name
执行后会提示输入密码,输入时内容不会显示。
使用密码文件:对于频繁连接的场景,可通过Oracle的orapwd工具创建密码文件(存储在Oracle服务器端),替代明文密码验证。
使用TNS别名:通过tnsnames.ora文件(位于$ORACLE_HOME/network/admin)配置数据库连接别名,避免在命令行中暴露主机、端口、服务名等敏感信息:
MYDB = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = db.example.com)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = orcl)))
配置后,连接命令简化为:sqlplus username@MYDB。
限制TNS文件权限:设置tnsnames.ora文件权限为600,防止未授权修改:
sudo chmod 600 $ORACLE_HOME/network/admin/tnsnames.ora
TCPS),确保数据传输加密:sqlplus username@//host:port/service_name?ssl_server_cert_dn=\"CN=db.example.com\"
需提前在客户端配置信任的CA证书。:var代替直接插入值),防止恶意SQL执行。sqlplus的LOGON事件触发器或数据库审计功能(如AUDIT语句),记录用户登录、操作等日志,便于后续追溯:-- 示例:审计用户scott的所有操作
AUDIT ALL BY scott BY ACCESS;
# 使用环境变量(需提前export PASSWORD=your_password)
sqlplus username/$PASSWORD@//host:port/service_name
sqlnet.ora文件限制SQL*Plus的功能(如禁止使用EXP、IMP等数据泵工具),降低攻击风险:# 示例:限制SQL*Plus的网络访问
SQLNET.ALLOWED_LOGON_VERSION_SERVER=12
SQLNET.AUTHENTICATION_SERVICES=(NONE)
sqlnet.log、listener.log等日志文件(可能包含数据库版本、主机名等敏感信息),仅分享必要的错误代码;libaio等依赖包,优先使用Debian官方源(sudo apt install libaio1),避免从非官方渠道下载。