Debian 上 Oracle 数据库的安全防护策略
一 系统与账户安全基线
- 保持系统与软件包为最新:定期执行 apt update && apt upgrade,及时修补漏洞。
- 强化口令策略:安装 libpam-pwquality,在 /etc/security/pwquality.conf 设置如 minlen=12、minclass=3,并在 PAM 中应用,强制复杂度与长度。
- 最小权限与专用账户:仅创建必要的 oracle 用户与组(如 oinstall、dba),禁止共享账号与 root 直连数据库。
- 关闭不必要服务与端口:减少攻击面,仅保留数据库、SSH 等必需服务。
二 资源限制与内核参数
- 资源限制(/etc/security/limits.d/30-oracle.conf):为 oracle 设置文件描述符、进程数、栈与锁定内存等上限,示例:
- soft/hard nofile 1024/65536
- soft/hard nproc 16384/16384
- soft/hard stack 10240/32768
- soft/hard memlock 134217728/134217728
- 内核参数(/etc/sysctl.d/98-oracle.conf):优化网络、文件与共享内存,示例:
- fs.file-max 6815744
- kernel.sem 250 32000 100 128
- kernel.shmmni 4096
- kernel.shmall 1073741824
- kernel.shmmax 4398046511104
- net.core.rmem_default 262144;net.core.rmem_max 4194304
- net.core.wmem_default 262144;net.core.wmem_max 1048576
- fs.aio-max-nr 1048576
- net.ipv4.ip_local_port_range 9000 65500
- net.ipv4.conf.all.rp_filter 2;net.ipv4.conf.default.rp_filter 2
- 使配置生效:执行 sysctl --system。
三 网络与监听安全
- 防火墙最小化放行:仅开放 SSH(22/TCP) 与 Oracle Listener(1521/TCP),优先使用 ufw 或 iptables 的白名单策略;示例:ufw 仅允许可信网段访问 1521/TCP。
- 监听器加固(lsnrctl):
- 在 listener.ora 中仅监听必要接口与端口,避免暴露在不可信网络。
- 设置监听器密码:lsnrctl setpassword,并限制可启停监听器的账户(仅 oracle 或 sudo 授权用户)。
- 启用并定期检查监听器日志,监控异常连接与停止/启动行为。
四 数据库与补丁管理
- 账户与权限治理:
- 禁用或限制 SYS/SYSTEM 远程登录,采用最小权限与角色分离;按需创建应用账户并回收 DBA 等高危角色。
- 启用标准审计(如 AUDIT SESSION),对关键对象与敏感操作建立细粒度审计策略。
- 补丁与更新:
- 操作系统侧持续 apt 更新;数据库侧按 Oracle 安全公告 及时应用补丁,保持 19c 等版本的最新 RU/PSU 或安全补丁级别。
五 监控审计与备份恢复
- 日志与入侵检测:集中收集与轮转系统日志(如 /var/log/),使用 Logwatch、Fail2ban 识别暴力登录与异常行为。
- 性能与可用性监控:部署 sysstat 等工具,监控 CPU、内存、I/O 与会话数,结合告警阈值进行容量与异常预警。
- 备份与恢复:制定包含全量/增量备份、归档日志与异地/离线副本的 3-2-1 策略,定期演练恢复流程并验证可用性。