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 ).

About: admin


8 thoughts on “Seguridad en el listener Oracle 10g”

  1. 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

  2. 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

  3. 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)

  4. 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.

  5. 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»

Responder a miguele Cancelar respuesta

Tu dirección de correo electrónico no será publicada.