Ubuntu lsnrctl的安全设置有哪些
小樊
33
2025-11-15 12:47:31
Ubuntu 上 lsnrctl 的安全设置清单
一 监听器口令与本地操作保护
为监听器设置口令并加密保存,防止未授权本地或远程执行 stop/save_config 等敏感操作。操作示例:在 lsnrctl 中执行 change_password 设置新口令,随后 set password 并在需要时 save_config;配置成功后 listener.ora 会出现加密口令项(如 PASSWORDS_LISTENER)。为阻止运行时被修改,建议在 listener.ora 中启用 ADMIN_RESTRICTIONS_LISTENER=on,这样在监听器运行期间对 set 等参数的更改将被拒绝,需停库改回 off 后再调整。忘记口令时,可在 listener.ora 中临时移除/注释 PASSWORDS_LISTENER 与 ADMIN_RESTRICTIONS_LISTENER 条目后重启监听器,进入 lsnrctl 重新设置口令并保存。
二 主机与网络访问控制
使用主机防火墙仅放通必要来源与端口(默认监听端口为 1521/TCP ),例如 Ubuntu 的 UFW:sudo ufw allow from 192.168.1.0/24 to any port 1521 proto tcp;如需限制为单一来源可改为具体 IP。
在 sqlnet.ora 启用主机访问控制:设置 TCP.VALIDNODE_CHECKING=YES,并结合 TCP.INVITED_NODES(白名单)或 TCP.EXCLUDED_NODES(黑名单)限制可连 IP;注意两者并存时以 INVITED_NODES 优先。示例:
TCP.VALIDNODE_CHECKING=YES
TCP.INVITED_NODES=(10.0.0.10,10.0.0.20)
保存后需让监听器重新加载(lsnrctl reload)使策略生效。
三 文件与进程权限最小化
保护监听器配置文件与目录:将 $ORACLE_HOME/network/admin 目录及 listener.ora 设为仅 oracle 用户(及 oinstall 组)可读写,建议权限为 600/700,防止被非授权用户篡改导致监听被劫持或信息泄露。示例:
chown -R oracle:oinstall $ORACLE_HOME/network/admin
chmod 700 $ORACLE_HOME/network/admin
chmod 600 $ORACLE_HOME/network/admin/listener.ora
限制 lsnrctl 可执行文件与目录访问:建议仅 oracle 用户(必要时加 dba 组)具备执行权限,其他用户不可读/不可执行;如确需 sudo 授权,使用 visudo 精确放行 lsnrctl 路径,避免无限制提权。示例:oracle ALL=(root) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl。
运行身份与最小权限:监听器应以 oracle 专用系统用户运行,避免以 root 直接启动;操作系统层面仅授予 oracle 必要的 sudo 能力(如 reload/status),禁止其他运维账号直接操控监听。
四 日志、跟踪与监控
合理设置日志与跟踪级别以减少信息暴露并便于审计:在 lsnrctl 中可用 set log_level、set trace_level 等命令动态调整;生产环境建议将常规日志级别保持为较低(如 OFF 或较低数值),仅在排障时临时提升,避免敏感细节(如服务名、实例信息、路径)被写入日志。变更后使用 status 与 services 验证监听状态与服务注册情况。