1. 设置监听器密码,防止未授权操作
通过lsnrctl设置监听器密码,确保只有授权用户能执行stop、save_config等关键操作。设置步骤:进入lsnrctl环境,输入change_password命令,依次输入旧密码和新密码(建议使用包含大小写字母、数字和特殊字符的强密码)。密码设置后,监听器会将密码加密存储在listener.ora文件中(以PASSWORDS_LISTENER字段标识)。若忘记密码,需修改listener.ora文件删除或注释密码相关行,重启监听器后重新设置。
2. 启用ADMIN_RESTRICTIONS,限制动态修改
在listener.ora文件中添加ADMIN_RESTRICTIONS_LISTENER = ON,禁止在监听器运行期间通过lsnrctl动态修改配置(如set log_file、set trace_level等命令)。如需修改,必须先停止监听器(lsnrctl stop)并将该参数置为OFF,修改完成后再启动监听器(lsnrctl start)。此设置能有效防止恶意用户通过动态命令篡改监听器配置。
3. 配置加密通信,保护数据传输安全
通过listener.ora文件启用SSL/TLS加密,确保客户端与监听器之间的数据传输不被窃取或篡改。关键配置项包括:
SECURITY_LISTENER = (ENCRYPTION_CLIENT = REQUIRED):要求客户端必须使用加密连接;ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128):指定允许的加密算法(优先选择AES256);SSL_VERSION = 1.2:指定TLS版本(推荐1.2及以上);- 配置TCPS协议端口(如1522),并在
tnsnames.ora中更新客户端连接字符串(使用(PROTOCOL = TCPS))。
此外,可使用Oracle Wallet管理证书和密钥,进一步增强加密安全性(通过mkstore命令创建Wallet并导入证书)。
4. 限制访问IP,减少攻击面
在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地址对监听器的扫描和攻击。
5. 强化文件权限,防止配置泄露
确保listener.ora文件的权限设置正确,仅授权用户(如oracle用户)能读取和修改。执行以下命令修改权限:
chmod 600 $ORACLE_HOME/network/admin/listener.ora
chown oracle:oinstall $ORACLE_HOME/network/admin/listener.ora
避免其他用户通过读取该文件获取监听器端口、密码或其他敏感信息。
6. 配置防火墙规则,过滤非法流量
使用操作系统防火墙(如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攻击),提升监听器的安全性。
7. 定期审计日志,监控异常行为
监听器的日志文件(默认位于$ORACLE_HOME/network/log/listener.log)记录了所有连接请求、配置变更等操作。定期检查日志,关注以下异常情况:
- 频繁的
TNS-12535(连接超时)或TNS-12560(协议适配器错误); - 未经授权的
STOP或SAVE_CONFIG操作尝试; - 来自陌生IP地址的大量连接请求。
通过日志分析可及时发现潜在的安全威胁,并采取相应措施(如封禁IP、调整防火墙规则)。