在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
),避免从非官方渠道下载。