温馨提示×

centos lsnrctl的安全性如何保障

小樊
38
2025-12-31 05:45:26
栏目: 智能运维

CentOS 上保障 lsnrctl 与 Oracle Listener 的安全性

一 基础防护要点

  • 设置强口令并持久化:进入 lsnrctl 后执行 change_password 设置新口令,随后用 set password 验证,再执行 save_config 写入配置文件。未设置口令时,远程或本地都可能被直接停止监听(如执行 lsnrctl stop),存在被滥用风险。设置完成后,诸如 status、stop、save_config 等管理操作需要口令才能执行。示例:

    lsnrctl
    LSNRCTL> change_password
    Old password: <回车>
    New password: <强口令>
    Reenter new password: <强口令>
    LSNRCTL> set password
    Password: <强口令>
    LSNRCTL> save_config
    

    注意:口令会被加密后写入 listener.ora,形如:PASSWORDS_LISTENER = <密文>。如忘记口令,可临时移除该加密行后重启监听,再重新设置口令。为降低风险,建议同时限制监听管理仅本机可用(见下节)。

  • 禁用本地操作系统认证以强制口令校验:默认存在 LOCAL_OS_AUTHENTICATION_LISTENER = ON,允许本机在无需口令的情况下管理监听。为强制口令校验,建议在 listener.ora 中显式关闭:

    LOCAL_OS_AUTHENTICATION_LISTENER = OFF
    

    修改后执行 lsnrctl stop/start 或 reload 使配置生效。关闭后,即便是本机执行 lsnrctl status/stop 等也需要先 set password 验证口令。

  • 启用管理限制以减少运行期被篡改:在 listener.ora 中为监听器开启 ADMIN_RESTRICTIONS(按监听器名):

    ADMIN_RESTRICTIONS_LISTENER = ON
    

    开启后,监听运行期间不允许通过 lsnrctl 的 set 等管理命令在线修改参数;所有变更需先编辑 listener.ora 并 reload/重启。这能有效阻止通过 lsnrctl 在线变更监听配置的风险。

二 网络与系统层加固

  • 限制监听端口访问:仅允许受控网段访问监听端口(默认 1521/TCP)。在 CentOS 上可用 firewalld 精细化放行,例如仅允许管理网段 192.168.1.0/24:

    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" \
      source address="192.168.1.0/24" port port="1521" protocol="tcp" accept'
    firewall-cmd --reload
    

    同时建议仅在内网或跳板机后管理监听,避免将监听端口直接暴露在公网。

  • 以最小权限运行:将 Oracle 软件目录与监听相关文件(如 $ORACLE_HOME/network/admin、日志目录)的所有者与权限收敛为 oracle:oinstall,仅管理员可写;避免在监听主机上开放不必要的服务与端口,减少攻击面。

  • 启用日志与审计:保持监听日志与告警日志开启,便于事后溯源。可在 listener.ora 中设置日志级别与日志文件,并定期审计异常启停、非法访问尝试等记录:

    LOGGING_LISTENER = ON
    LOG_FILE_LISTENER = /u01/app/oracle/diag/tnslsnr/<listener>/trace/listener.log
    TRACE_LEVEL_LISTENER = SUPPORT
    

    日志路径与滚动策略可结合 Oracle 诊断目录规范进行统一管控。

三 快速加固清单

措施 操作要点 验证方式
设置监听口令并持久化 在 lsnrctl 中执行 change_password → set password → save_config 新开会话执行 lsnrctl status/stop 需先 set password
强制口令校验 listener.ora 中设置 LOCAL_OS_AUTHENTICATION_LISTENER = OFF 本机执行 lsnrctl status 不再直接成功
运行期防篡改 listener.ora 中设置 ADMIN_RESTRICTIONS_ = ON 监听运行时 lsnrctl set 命令应被拒绝
限制远程管理 仅允许跳板/管理网段访问 1521/TCP 防火墙规则仅放行白名单网段
最小权限与目录收敛 oracle:oinstall 拥有监听相关目录与文件 检查 ls -ld 权限与属主
日志与审计 开启 LOGGING/TRACE,集中收集与定期审计 查看 listener.log 是否持续写入与异常记录

四 常见误区与提示

  • 仅设置口令但未关闭本地 OS 认证时,本机仍可能绕过口令执行管理命令;务必同时设置 LOCAL_OS_AUTHENTICATION_LISTENER = OFF。
  • 忘记监听口令时,可临时移除 listener.ora 中的 PASSWORDS_ 行并重启监听,再重新设置新口令;操作前请先备份配置文件与日志。
  • 在脚本或自动化流程中使用 lsnrctl 时,需先 set password 再执行 stop/save_config 等敏感命令,避免因口令未设置导致操作失败或中断。

0