Asegurando el Listener.
Detalles del listener
Los archivos importantes para el listener son los siguientes:
$ORACLE_HOME/bin/lsnrctl Programa para controlar el listener.
$ORACLE_HOME/network/admin/listener.ora Archivo de configuración.
$ORACLE_HOME/bin/tnslnsr El proceso del listener.
El lsnrctl es el programa para subir(start) y bajar(stop) el proceso del listener (tnslnsr) además de permitir realizar algunas configuraciones. Cuando el tnslnsr se ejecuta éste lee la información (configuración) guardada en el archivo listener.ora.
Modos del listener
El listener puede ser configurado en los siguientes modos:
1. Database Provee acceso por medio de la red a una instancia de Oracle.
2. PLSExtProc Es un método para los paquetes de PL/SQL para acceder ejectutables dentro del sistema operativo.
3. Executable Provee acceso a ejecutables por medio de la red.
El modo database es el más utilizado para realizar conecciones a una base de datos. El modo PLSExtProc es utilizado para acceder a ejecutables en el sistema operativo y esta configurado por default. El modo executable permite definir a un ejecutable para ser accesible por medio de una conexión TNS, regularmente esta opción solo se utiliza en Oracle Applications.
Asegurando el listener
Si un password no esta puesto en el listener, alguien que conozca el nombre del host (o dirección IP) y el puerto del listener (default 1521) puede tener control del listener gracias a que el listener se puede controlar de manera remota.
Lo que se puede controlar es lo siguiente:
• Bajar el listener.
• Poner un password para que nadie lo pueda controlar.
• Obtener información detallada del listener, la base de datos y la aplicación al generar logs.
Poner el password
Para asignar un password al listener es muy sencillo y se puede realizar de dos maneras. La primera es asignarlo por medio del archivo de configuración listener.ora con el parametro “PASSWORDS_” pero el inconveniente es que el password quedara de manera clara en el archivo. La forma recomendada es hacerlo por medio del programa lsnrctl como sigue:
Primero corremos el comando stat para saber si hay password asignado:
LSNRCTL> status Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production Start Date 28-MAY-2006 15:49:28 Uptime 0 days 0 hr. 35 min. 37 sec Trace Level off Security ON: Local OS Authentication SNMP OFF
Como se puede observar en la parte de Security aparece ON: Local OS Authentication debido a que se esta utilizando Oracle 10g, en la version 9i apareceria OFF como lo muestra el siguiente ejemplo:
LSNRCTL> stat Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxxxxx)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for HPUX: Version 9.2.0.6.0 - Production Start Date 29-MAY-2006 05:48:47 Uptime 0 days 11 hr. 54 min. 40 sec Trace Level off Security OFF SNMP OFF
Una vez que se verifica que no se tiene asignado un password se lo asignamos:
LSNRCTL> change password Old password: New password: Reenter new password: LSNRCTL> save_config Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) No changes to save for LISTENER. The command completed successfully
En este caso se asigno el password TEST, si verificamos el archivo listener.ora podemos verificar que el password fue asignado al parametro mencionado anteriormente.
LSNRCTL> stat Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxxx)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for HPUX: Version 9.2.0.6.0 - Production Start Date 29-MAY-2006 05:48:47 Uptime 0 days 11 hr. 54 min. 40 sec Trace Level off Security ON SNMP OFF
Ahora se puede ver que la opción de security esta en ON, esto indica que tiene asignado un password.
Ahora cada vez que se requiera hacer algo con el lsnrctl se debe proveer el password antes de realizarlo, si no mostrará un error como el siguiente:
LSNRCTL> stat Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xxxxxxxxx)(PORT=1521))) TNS-01169: The listener has not recognized the password
Debemos proveer el password:
LSNRCTL> set password Password: The command completed successfully
Una vez puesto el password el archivo listener.ora tiene una nueva linea de configuración donde esta asignado el password.
#----ADDED BY TNSLSNR 29-MAY-2006 10:49:45--- PASSWORDS_LISTENER = AB2E99998E0FZZZZ #--------------------------------------------