Seguridad en el listener Oracle 10g
1. Introducción al listener Oracle 10g (securing the listener)
TNS Listener es un proceso servidor que provee la conectividad de red con la base de datos Oracle. El listener está configurado para escuchar la conexión en un puerto específico en el servidor de base de datos. Cuando se pide una conexión a la base de datos, el listener devuelve la información relativa a la conexión. La información de una conexión para una instancia de una base de datos provee el nombre de usuario, la contraseña y el SID de la base de datos. Si estos datos no son correctos se devolverá un mensaje de error.
- Por defecto el puerto del listener es el 1521
- El listener no limita el número de conexiones a la base de datos
Toda la información del listener la contiene un archivo denominado listener.ora ( $ORACLE_HOME/network/admin. )
El comando para gestionar el listener es lsnrctl.
Mediante este comando podemos:
- Parar el listener.
- Ver el estado del listener.
- Arrancar el listener.
- Rearrancar el listener.
2. Seguridad listener Oracle 10g
El principal paso para realizar la seguridad en el listener es ponerle una contraseña password.
El primer método para poner una contraseña al listener es editando el fichero listener.ora y escribiendo la siguiente línea:
PASSWORDS_LISTENER = orapass
Cuando guardemos el fichero con los cambios realizamos un reload del listener
lsnrctl> reload
Nota: El comando para entrar en el listener es lsnrctl ( $ORACLE_HOME/bin )
El segundo método para poder cambiar la contraseña al listener es el siguiente:
lsnrctl> change_password
Este comando te pedirá la clave antigua y la nueva clave.
Si es la primera vez que ejecutas este comando la contraseña antigua ( old password ) habrá que dejarla en blanco.
El comando SET y SAVE CONFIG permite guardar esos cambios en el listener porque ahora el listener está gobernado por un password.
lsnrctl > set password
lsnrctl > save config
La información antigua se guardará enlistener.bck y listener.ora se actualizará con los nuevos datos
UNA VEZ QUE EL PASSWORD ESTÉ CREADO ESTE SERÁ REQUERIDO PARA CUALQUIER TAREA ADMINISTRATIVA( ej: parar el listener ).
Ok , para mi un administrador esto me ha resultado fantastico
Pude asignarle un password al listener sin problemas pero al tratar de levantarlo me da error de permisologia,previamente he ejecutado el comando «set password». El problema es que ahora no puedo levantar el listener de ninguna manera, tengo mi password encriptado en el archivo listener.ora, sin embargo lo he colocado en el comando «set password» tanto encriptado con texto y sigo con el error. Como puedo hacer si perdi dicho password. gracias en verdad ya no se que mas hacer
el listener se le puede asignar un solo puerto o pueden ser mas? ritmo_jaol@hotmail.com
Cambio del Listener.
Submitted by rmatarrita on 31 January, 2011 – 12:33.
Hola buenos días, es la primera vez que ingreso a este Blog.
Actualmente tengo en un servidor de Oracle la base de datos 10g. El puerto 8080 está siendo utilizado por el listener.
Debo cambiar este puerto al 8081 ya que se están instalando unas MAC y el ISA SERVER utiliza el puerto 8080, lo cual está dando problemas a nivel del internet..
Actualmente tengo el comando para cabiar este puerto. Mi pregunta estriba, si cambio el puerto a otro que problemas puedo tener con la conexción de los usuarios a la base de datos. O no hay problema alguno, debo si o no bajar la base de datos.
Roberto
Costa Rica.
roberto.matarrita@fontsistemas.co.cr
Hola Roberto,
En un principio para cambiar el listener de puerto no hace falta bajar la base de datos.
Cambiar el puerto del listener implica que ahora las peticiones a la base de datos se realizarán a través de ese nuevo puerto.
Por lo tanto si tienes alguna aplicación cuya cadena de conexión ( odbc, tnsnames.ora ) indique el puerto antiguo tiene que ser cambiada para que
se pueda conectar a la base de datos.
El listener es un proceso «independiente» de la instancia de base de datos que se gestiona con el comando lsnrctl, ten cuidado al cambiar el puerto del listener
de no olvidar parar el antiguo listener, porque también se puede dar el caso de tener la base de datos escuchando peticiones en dos puertos diferentes y
generar algún problema conceptual en un futuro.
Pasos a seguir:
1. Parar listener actual
2. Modificar puerto del listener en listener.ora ( o crear un listener nuevo con el nuevo puerto)
3. Levantar el listener con el nuevo puerto
4. Modificar cadenas de conexión cliente a la base de datos ( tnsnames.ora, odbc …. ) apuntando al nuevo puerto ( IMPORTANTE, porque si no los clientes dejarán de conectarse a la base de datos)
Gracias AMG.
No he podido cambiar el puerto del listener. Es extraño, si ingreso a la herramienta de Oracle me dice que está en el puerto 1521.
Tengo esta instrucción para cambiar el puerto.
call dbms_xdb.cfg_update(updateXML(
dbms_xdb.cfg_get()
, ‘/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()’
, 8081))
La base de datos es la 9i, y cuando trato de cambiar al puerto 1521 me indica que el dbms_xdb.cfg_update, tabla o vista no existe.
En la base de datos 10g no he tenido problema para hacer este cambio, no se si hay otra manera el 9i de cambiar el puerto.
En todo caso mi correo es roberto.matarrita@fontsistemas.co,cr
Roberto
Costa Rica.
yo solucione el error en windows 7 iyendo a los servicios y reiniciando los de oraclexe ojala a alguien tambien le funcione
Hola, tengo el siguiente problema con el listener de los clientes (win xp sp sp3)
El archivo de conexion esta así : (tsnames.ora)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 191.0.0.40)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
y el archivo (listener.ora)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = e:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
En el servidor el archivo esta en la ruta (redhat)
/home/oracle/oracle/product/10.2.0/db_1/network/admin
(listener.ora)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/oracle/product/10.2.0/db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = cotaco.cl)(PORT = 1521))
)
)
y el tnsnames.ora esta así :
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cotaco.cl)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
El problema ocurre cuando instalo una maquina nueva, se conecta y al realizar una segunda consulta al motor esta se cae dando el mensaje : (se me cae la aplicación)
[Oracle][ODBC][Ora]ORA-12541 : TNS: no hay ningun listener.
Despues veo el archivo tnsnames.ora (cliente) y cambia al puerto 1522, lo vuelvo a modificar y pasa lo mismo a la segunda consulta a la BBDD se vuelve a caer.(volviendo a modificar el puerto 1522)
Alguien tiene idea de como puedo solucionar este problema.
Muchas gracias por su atención.
Si alguien necesita más antecedentes, me los puede solicitar directamente a mi correo electrónico :
gjara.cl@gmail.com «Gonzalo Jara Céspedes»