lsnrctl是Oracle数据库监听器的核心管理工具,其执行权限需严格限制。通过最小权限原则,仅允许授权用户(如数据库管理员)运行该命令。可通过以下方式实现:
sudo配置:在/etc/sudoers文件中添加规则,允许特定用户组(如dba)通过sudo执行lsnrctl,禁止直接以root身份运行。lsnrctl可执行文件(通常位于Oracle安装目录的bin子目录)的访问,设置权限为750(所有者可读/写/执行,所属组可读/执行,其他用户无权限)。修改listener.ora文件(路径:$ORACLE_HOME/network/admin/listener.ora),将监听器绑定到特定IP地址(如数据库服务器的内网IP),而非0.0.0.0(所有接口)。例如:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 仅允许内网访问
)
)
此配置可减少来自公网的非法扫描和连接尝试。
lsnrctl命令设置监听器密码(默认为空),防止未授权用户修改监听器配置:lsnrctl set password
输入密码后,重启监听器使设置生效。listener.ora中添加以下参数,禁止远程用户修改监听器配置(仅允许本地修改):ADMIN_RESTRICTIONS_LISTENER = ON
此设置需重启监听器生效。使用Debian自带的ufw(Uncomplicated Firewall)或iptables限制对监听器端口(默认1521)的访问:
10.0.0.5)访问1521端口:ufw allow from 10.0.0.5 to any port 1521 proto tcp
ufw deny 1521/tcp # 拒绝其他所有IP的1521端口访问
ufw enable # 启用防火墙
iptables -A INPUT -p tcp --dport 1521 -s 10.0.0.5 -j ACCEPT
iptables -A INPUT -p tcp --dport 1521 -j DROP
检查并禁用Debian系统中不必要的网络服务(如Telnet、FTP),减少潜在的攻击面。通过systemctl list-unit-files --state=enabled查看启动服务,禁用不需要的服务(如telnet):
systemctl disable telnet
启用SSL/TLS加密监听器通信,防止数据(如数据库密码、查询结果)在传输过程中被窃取或篡改。配置步骤如下:
openssl生成自签名证书(生产环境建议使用CA签发的证书):openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out cert.pem
listener.ora:添加SSL参数,启用TCPS协议(加密端口通常为1522):LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)) # 普通TCP端口
(ADDRESS = (PROTOCOL = TCPS)(HOST = 192.168.1.100)(PORT = 1522)) # 加密TCPS端口
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = ORCL) # 数据库实例名
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
)
)
SECURITY_LISTENER =
(ENCRYPTION_CLIENT = REQUIRED) # 要求客户端必须使用加密
(ENCRYPTION_TYPES_CLIENT = (AES256, AES192, AES128)) # 支持的加密算法
(SSL_VERSION = 1.2) # 使用TLS 1.2及以上版本
tnsnames.ora:客户端连接时使用TCPS协议指向加密端口:ORCL_SECURE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPS)(HOST = 192.168.1.100)(PORT = 1522))
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)
配置完成后,重启监听器使更改生效:
lsnrctl stop && lsnrctl start
启用Oracle监听器的审计功能,记录所有连接和配置变更操作。日志文件默认位于$ORACLE_HOME/network/log/listener.log。通过以下方式加强监控:
grep、awk等工具分析日志,查找异常关键词(如“FAILED”、“UNAUTHORIZED”、“ALTER SYSTEM”)。Zabbix、Prometheus等工具实时监控监听器的状态(如端口是否监听、CPU/内存占用),设置警报规则(如监听器停止、异常连接数激增)。apt update && apt upgrade -y安装系统安全补丁,修复内核、网络服务等基础组件的漏洞。change_on_install)。KeePass)存储密码,避免明文记录在脚本或配置文件中。通过以上安全措施,可显著提升Debian系统中lsnrctl及Oracle监听器的安全性,降低被非法访问、篡改或攻击的风险。需注意的是,安全配置需根据实际业务场景调整(如允许特定IP访问),并在测试环境中验证配置的有效性。