如何用lsnrctl进行安全配置
导读:用 lsnrctl 进行 Oracle 监听器安全配置 一 基础防护 监听器口令与运行限制 设置或修改监听器口令,防止未授权停止或保存配置:在 lsnrctl 提示符下执行 change_password,随后用 set password...
用 lsnrctl 进行 Oracle 监听器安全配置
一 基础防护 监听器口令与运行限制
- 设置或修改监听器口令,防止未授权停止或保存配置:在 lsnrctl 提示符下执行 change_password,随后用 set password 并在执行 stop/save_config 前验证;生效后会在参数文件中生成类似 PASSWORDS_LISTENER 的哈希条目。示例:
注意:执行 stop、save_config 等敏感操作前必须先 set password,否则会被拒绝。完成后可用 status 查看 Security 状态。lsnrctl LSNRCTL> change_password Old password: New password: Reenter new password: LSNRCTL> set password Password: LSNRCTL> save_config - 启用管理限制,禁止运行时通过 lsnrctl 动态修改配置:在 $ORACLE_HOME/network/admin/listener.ora 的监听器段添加 ADMIN_RESTRICTIONS_=on。开启后,诸如 set log_file 等运行时修改将被拒绝,必须停止监听器、改文件后再启动。示例:
提示:忘记口令时,可临时编辑 listener.ora 删除或注释 PASSWORDS_LISTENER/ADMIN_RESTRICTIONS_LISTENER 条目后重启,再按上法重设口令。LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) ) ) ADMIN_RESTRICTIONS_LISTENER = on
二 加密与传输安全
- 启用传输加密与校验:在 listener.ora 中为监听器段添加参数,要求客户端加密并限定算法套件。示例:
说明:ENCRYPTION_CLIENT=REQUIRED 强制加密;ENCRYPTION_TYPES_CLIENT 指定可用算法。保存后 reload/重启监听器生效。LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = your_host)(PORT = 1521)) ) ) SECURITY_LISTENER = (ENCRYPTION_CLIENT = REQUIRED) (ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128)) - 启用 TLS/SSL 加密通道(可选,需证书):在 listener.ora 中增加 SSL/TLS 相关参数并配置证书/密钥,限定协议与套件。示例:
说明:TCPS 表示 SSL/TLS 监听;SSL_VERSION 与 SSL_CIPHER_SUITES 用于限定协议与加密套件。证书与密钥文件权限与路径需按 Oracle 要求配置。LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = your_host)(PORT = 2484)) ) ) SECURITY_LISTENER = (SSL_VERSION = 1.2) (SSL_CIPHER_SUITES = (TLS_AES_256_GCM_SHA384, TLS_AES_128_GCM_SHA256))
三 访问控制与最小权限
- 网络层访问控制:仅放通受信网段/IP 访问监听器端口(默认 1521)。示例(ufw):
生产环境建议仅在内网或跳板机可达范围内开放。sudo ufw allow from 192.168.1.0/24 to any port 1521 sudo ufw enable - 主机与文件权限:监听器进程以 oracle 用户运行,软件目录与配置文件属主/属组设为 oracle:oinstall,关键文件权限最小化(如 700/640),避免使用 root 直接运行监听器。示例:
sudo chown -R oracle:oinstall $ORACLE_HOME sudo chmod 700 $ORACLE_HOME/bin/lsnrctl - 命令级权限控制:通过 sudoers 精细化授权,仅允许特定用户/组执行 lsnrctl(必要时免密),避免普通用户直接调用管理命令。示例(visudo):
如需更细粒度,可结合 sudo 命令白名单与命令参数限制。oracle ALL=(ALL) NOPASSWD: /u01/app/oracle/product/19.0.0/dbhome_1/bin/lsnrctl
四 日志审计与持续加固
- 启用与轮转日志:提高日志级别便于审计,定期归档与清理。示例:
说明:log_level 16 为较详细日志;trace 支持更细粒度诊断(生产慎用)。日志默认位于 $ORACLE_HOME/network/log/。lsnrctl LSNRCTL> set log_level 16 LSNRCTL> set log_file listener.log LSNRCTL> trace support LSNRCTL> show trc_file - 持续加固清单:
- 定期更新 Oracle 数据库与监听器补丁,修复已知漏洞。
- 仅监听必要接口与端口,避免将监听暴露在不可信网络。
- 定期备份并基线化 listener.ora,变更走变更流程与回退方案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用lsnrctl进行安全配置
本文地址: https://pptw.com/jishu/751702.html
