通过lsnrctl设置监听器密码,确保只有授权用户能执行stop、save_config等关键操作。设置步骤:进入lsnrctl环境,输入change_password命令,依次输入旧密码和新密码(建议使用包含大小写字母、数字和特殊字符的强密码)。密码设置后,监听器会将密码加密存储在listener.ora文件中(以PASSWORDS_LISTENER字段标识)。若忘记密码,需修改listener.ora文件删除或注释密码相关行,重启监听器后重新设置。
在listener.ora文件中添加ADMIN_RESTRICTIONS_LISTENER = ON,禁止在监听器运行期间通过lsnrctl动态修改配置(如set log_file、set trace_level等命令)。如需修改,必须先停止监听器(lsnrctl stop)并将该参数置为OFF,修改完成后再启动监听器(lsnrctl start)。此设置能有效防止恶意用户通过动态命令篡改监听器配置。
通过listener.ora文件启用SSL/TLS加密,确保客户端与监听器之间的数据传输不被窃取或篡改。关键配置项包括:
SECURITY_LISTENER = (ENCRYPTION_CLIENT = REQUIRED):要求客户端必须使用加密连接;ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128):指定允许的加密算法(优先选择AES256);SSL_VERSION = 1.2:指定TLS版本(推荐1.2及以上);tnsnames.ora中更新客户端连接字符串(使用(PROTOCOL = TCPS))。mkstore命令创建Wallet并导入证书)。在listener.ora文件中通过ADDRESS参数的HOST字段限制可访问监听器的IP地址。例如:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 仅允许192.168.1.100访问
)
)
若需允许多个IP,可添加多个ADDRESS条目。此设置能有效阻止非法IP地址对监听器的扫描和攻击。
确保listener.ora文件的权限设置正确,仅授权用户(如oracle用户)能读取和修改。执行以下命令修改权限:
chmod 600 $ORACLE_HOME/network/admin/listener.ora
chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora
避免其他用户通过读取该文件获取监听器端口、密码或其他敏感信息。
使用操作系统防火墙(如Linux的iptables)限制对监听器端口(默认1521)的访问。例如,仅允许特定IP地址访问:
iptables -A INPUT -p tcp --dport 1521 -s 192.168.1.100 -j ACCEPT # 允许192.168.1.100
iptables -A INPUT -p tcp --dport 1521 -j DROP # 拒绝其他所有IP
防火墙能有效阻挡网络层的非法流量(如端口扫描、DDoS攻击),提升监听器的安全性。
监听器的日志文件(默认位于$ORACLE_HOME/network/log/listener.log)记录了所有连接请求、配置变更等操作。定期检查日志,关注以下异常情况:
TNS-12535(连接超时)或TNS-12560(协议适配器错误);STOP或SAVE_CONFIG操作尝试;