如何对Oracle监听器进行保护?11种实用防护方法详解

来源:建站作者:厦门程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《如何对Oracle监听器进行保护?11种实用防护方法详解》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何对Oracle监听器进行保护?11种实用防护方法详解》有用,将其分享出去将是对创作者最好的鼓励。

Oracle监听器是Oracle数据库实例与外部客户端之间的通信桥梁,负责接收客户端的连接请求并转发到对应的数据库实例,其安全性直接关系到整个数据库系统的稳定与数据安全。如果监听器被恶意攻击、非法篡改配置或者未授权访问,可能导致数据库服务不可用、数据被窃取等严重后果,因此做好Oracle监听器的防护工作至关重要。

如何对Oracle监听器进行保护?11种实用防护方法详解

1. 修改默认监听器端口

Oracle监听器默认使用1521端口,这是攻击者扫描的重点目标,修改默认端口可以降低被自动化扫描工具发现的概率。修改方式如下:

-- 查看当前监听器配置
lsnrctl status

-- 停止监听器
lsnrctl stop

-- 修改listener.ora配置文件,将PORT从1521改为自定义端口,比如15210
-- listener.ora示例内容
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 15210))
    )
  )

-- 启动监听器
lsnrctl start

2. 设置监听器密码

为监听器设置管理密码,避免未授权用户直接通过lsnrctl命令修改监听器配置、停止监听器等操作。配置方式如下:

-- 进入监听器控制台
lsnrctl

-- 设置密码,回车后输入新密码并确认
LSNRCTL> change_password
Old password:
New password:
Reenter new password:

-- 保存配置到listener.ora
LSNRCTL> save_config

设置完成后,执行lsnrctl stop等管理命令时需要先输入密码验证,否则无法执行。

3. 限制监听器访问来源

通过配置tcp.validnode_checkingtcp.invited_nodes参数,只允许指定IP的客户端连接监听器,拒绝其他非法IP的访问请求。

-- 在listener.ora中添加以下配置,只允许192.168.0.0/24网段的IP访问
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 15210))
    )
  )

tcp.validnode_checking = yes
tcp.invited_nodes = (192.168.0.1, 192.168.0.2, 192.168.0.100)

如果需要拒绝特定IP,可以使用tcp.excluded_nodes参数配置黑名单。

4. 关闭动态服务注册

默认情况下Oracle实例会动态向监听器注册服务,攻击者可能利用动态注册伪造服务信息,建议关闭动态注册,使用静态注册方式。修改listener.ora添加静态服务配置:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orclpdb)
      (ORACLE_HOME = /u01/app/oracle/product/19.3.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 15210))
    )
  )

同时在数据库参数中设置local_listener为空,禁止实例动态注册:

-- 登录数据库执行
alter system set local_listener='' scope=spfile;
-- 重启数据库实例生效

5. 启用监听器日志审计

开启监听器的日志功能,记录所有连接请求、管理操作等信息,方便后续安全审计和攻击溯源。配置方式如下:

-- 进入监听器控制台
lsnrctl

-- 开启日志
LSNRCTL> set log_status on

-- 查看日志文件路径
LSNRCTL> show log_file

日志默认存储在$ORACLE_HOME/network/log/listener.log,建议定期备份和清理日志,避免占用过多磁盘空间。

6. 限制管理命令执行权限

只有数据库管理员账户可以执行lsnrctl相关管理命令,普通用户不应拥有该权限。在操作系统层面设置lsnrctl命令的访问权限,仅允许dba用户组执行:

-- Linux系统下修改权限
chown oracle:dba $ORACLE_HOME/bin/lsnrctl
chmod 750 $ORACLE_HOME/bin/lsnrctl

7. 启用连接超时设置

设置监听器连接超时时间,避免恶意客户端发起大量半开连接占用监听器资源,导致正常用户无法连接。在listener.ora中添加以下配置:

-- 设置连接超时时间为30秒
CONNECT_TIMEOUT_LISTENER = 30

8. 启用传输加密

客户端与监听器之间的通信数据如果不加密,可能被中间人攻击窃取敏感信息,建议启用TCPS协议加密传输。首先需要配置Oracle的SSL证书,之后修改listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCPS)(HOST = 192.168.0.10)(PORT = 15210))
    )
  )

-- SSL相关配置
WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /u01/app/oracle/wallet)
    )
  )
SSL_CLIENT_AUTHENTICATION = FALSE

客户端连接时也需要配置对应的SSL参数才能正常通信。

9. 定期更新Oracle补丁

Oracle会定期发布监听器相关的安全补丁,修复已知的安全漏洞,管理员需要定期查看Oracle官方安全公告,及时为数据库安装对应的补丁,避免已知漏洞被攻击者利用。

10. 监控监听器运行状态

通过脚本或者监控工具定期检查监听器的运行状态、连接数、日志异常等信息,一旦发现监听器异常停止、连接数突增等异常情况,及时进行处理。简单的监控脚本示例:

#!/bin/bash
# 检查监听器状态
lsnrctl status | grep "The listener supports no services"
if [ $? -eq 0 ]; then
  echo "监听器异常,无可用服务" | mail -s "Oracle监听器告警" admin@ipipp.com
fi

11. 关闭不必要的协议支持

如果业务不需要IPC、管道等本地协议连接,可以在listener.ora中只保留TCP或者TCPS协议地址,关闭其他不必要的协议支持,减少攻击面:

-- 仅保留TCP协议,删除其他协议地址
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 15210))
    )
  )

以上11种方法从配置、访问控制、加密、监控等多个层面加固Oracle监听器的安全性,管理员可以根据实际业务场景选择对应的防护措施,组合使用可以达到更好的防护效果,有效降低Oracle监听器被攻击的风险,保障数据库系统的稳定运行。

Oracle监听器数据库安全监听器配置访问控制加密传输修改时间:2026-07-15 17:09:43

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。