温馨提示×

linux lsnrctl如何加密

小樊
43
2026-10-10 23:33:33
栏目: 网络安全

在 Linux 上使用 lsnrctl(Oracle Listener 控制工具) 时,“加密”通常指两类事情,下面分别说明,并给出可操作做法。


一、对 Listener 管理连接进行加密(推荐)

Oracle 11g 及以后,lsnrctl 默认通过本地 IPC 或 TCP 管理 Listener,明文传输。可通过 Oracle Net 加密(TCPS) 来加密。

方式 1:使用 TCPS(SSL/TLS)加密 Listener 管理

1. 生成 Wallet(Oracle 自带工具)

mkdir -p $ORACLE_HOME/network/admin/wallet
orapki wallet create -wallet $ORACLE_HOME/network/admin/wallet -pwd WalletPass123 -auto_login

2. 配置 listener.ora

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCPS)(HOST = localhost)(PORT = 1522))
    )
  )

WALLET_LOCATION =
  (SOURCE =
    (METHOD = FILE)
    (METHOD_DATA =
      (DIRECTORY = /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/wallet)
    )
  )

SSL_CLIENT_AUTHENTICATION = FALSE

3. 重启 Listener

lsnrctl stop
lsnrctl start

之后 lsnrctl 通过 TCPS 端口 与 Listener 通信,即为加密连接。


二、对 Listener 管理口令进行加密(旧方式,不推荐)

Oracle 10g/11g 早期 支持 Listener 口令:

lsnrctl
LSNRCTL> change_password
LSNRCTL> set password

⚠️ 注意:

  • Oracle 11g R2 之后已废弃
  • 口令存储在 listener.ora,加密强度低
  • 官方建议使用 OS 权限 + TCPS 替代

三、客户端到数据库连接的加密(常见误解)

很多人问“lsnrctl 加密”,实际是想加密 数据库连接:

在 sqlnet.ora 中启用加密

SQLNET.ENCRYPTION_SERVER = REQUIRED
SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)

四、最佳实践建议(生产环境)

✅ 使用 TCPS + Wallet
✅ 限制 lsnrctl 执行权限(root/oracle 组)
✅ 禁用远程 Listener 管理
✅ 使用防火墙限制 1521/1522 端口


如果你能说明:

  • Oracle 版本(11g / 12c / 19c)
  • 想加密的是 管理连接 还是 数据库连接
  • 是否使用 RAC

我可以给你 完整可复制的配置示例。

0 踩