SQL*Plus作为Oracle数据库的核心命令行工具,其在Debian系统中的安全设置需围绕权限控制、加密通信、审计监控、系统加固四大核心展开,以下是具体措施:
系统用户权限分配
运行SQL*Plus的用户需加入oinstall(安装相关)和dba(数据库管理)组,但遵循“最小权限”原则:仅需管理数据库的用户添加dba组,仅需访问数据库的用户添加oinstall组。操作命令:
sudo usermod -aG oinstall your_username # 添加oinstall组
sudo usermod -aG dba your_username # 添加dba组(按需)
sudo usermod -aG adm your_username # 允许访问系统日志(可选)
修改后需重新登录使组权限生效。
Oracle数据库权限控制
通过SQL*Plus为用户分配最小必要权限,避免过度授权:
CONNECT(连接数据库)和RESOURCE(创建对象)角色:CREATE USER your_db_user IDENTIFIED BY StrongPassword;
GRANT CONNECT, RESOURCE TO your_db_user;
DBA角色,按需授予SELECT、INSERT等细粒度权限。限制端口访问
使用ufw(Uncomplicated Firewall)限制SQL*Plus默认端口(1521)的访问,仅允许可信IP:
sudo ufw allow from trusted_ip to any port 1521/tcp # 替换trusted_ip为可信IP
sudo ufw enable # 启用防火墙
启用SSL/TLS加密
通过sqlnet.ora配置文件强制客户端与服务器之间的通信加密,防止密码和数据泄露:
编辑$ORACLE_HOME/network/admin/sqlnet.ora,添加以下参数:
ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = AES256
SQLNET.DATA_INTEGRITY_SERVER = REQUIRED
此配置要求客户端必须使用SSL/TLS连接,否则无法访问数据库。
开启Oracle数据库审计
记录SQL*Plus用户的登录行为和关键操作(如数据增删改),便于事后追溯:
-- 审计登录行为
AUDIT CREATE SESSION BY ACCESS;
-- 审计数据操作(替换your_db_user为目标用户)
AUDIT SELECT TABLE, INSERT TABLE, UPDATE TABLE, DELETE TABLE BY your_db_user;
审计日志默认存储在$ORACLE_HOME/rdbms/audit目录,需定期检查日志内容。
系统日志监控
通过rsyslog或journalctl监控SQL*Plus相关日志(如/var/log/auth.log记录登录尝试,$ORACLE_HOME/network/log记录网络连接),设置告警规则及时发现异常。
安装密码检查工具
使用libpam-cracklib模块验证密码复杂度,避免弱密码:
sudo apt update && sudo apt install libpam-cracklib
配置密码复杂度
修改/etc/pam.d/common-password文件,添加以下参数(符合三级等保要求):
password requisite pam_cracklib.so retry=5 minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
参数说明:minlen=8(密码长度≥8位)、dcredit=-1(至少1个数字)、ucredit=-1(至少1个大写字母)、lcredit=-1(至少1个小写字母)、ocredit=-1(至少1个特殊字符)。
设置密码过期时间
修改/etc/login.defs文件,将密码最大有效期设置为90天,提前7天提醒用户更换:
PASS_MAX_DAYS 90 # 密码有效期90天
PASS_WARN_AGE 7 # 过期前7天提醒
系统与软件更新
定期执行apt update和apt upgrade,安装Debian系统和Oracle客户端的最新安全补丁,修复已知漏洞。
依赖包验证
安装Oracle Instant Client等依赖包时,验证软件包来源(如从Oracle官方网站下载),避免安装恶意软件。
文件权限控制
确保SQL*Plus生成的日志文件(如$ORACLE_HOME/network/log)和输出文件的权限正确,仅允许授权用户访问:
chmod 600 $ORACLE_HOME/network/log/*.log # 限制日志文件访问
chown oracle:oinstall $ORACLE_HOME/network/log/*.log # 设置正确属主
通过以上措施,可全面覆盖Debian系统上SQL*Plus的安全需求,有效降低数据泄露、非法访问和恶意操作的风险。需定期复查配置有效性,并根据业务变化调整安全策略。