Nel log file di alert del DB Oracle è possibile trovare questa segnalazione:
WARNING: inbound connection timed out (ORA-3136)
Significa che un tentativo di connessione è stato fatto, ma la sessione di autenticazione non è stata fornita prima del parametro impostato in SQLNET.INBOUND_CONNECT_TIMEOUT.
Questo parametro si trova nel file sqlnet.ora in $ORACLE_HOME/network/admin/ ed è impostato a 60 secondi.
La segnalazione può essere trascurata se si verifica sporadicamente ma se dovesse essere una costante quotidiana l'Oracle doc prevede 2 action per questa anomalia:
1) Check SQL*NET and RDBMS log for trace of suspicious connections.
2) Configure SQL*NET with a proper inbound connect timeout value if necessary.
Bisogna quindi analizzare bene la situazione soprattutto se si sospetta qualche connessione strana come al punto 1 prima ovviamente di apporre qualsiasi modifica.
Tuttavia si può procedere a impostare il parametro SQLNET.INBOUND_CONNECT_TIMEOUT con un valore appropriato nel file $ORACLE_HOME/network/admin/sqlnet.ora come richiesto nel punto 2.
Ma se non il file non ci fosse nel percorso indicato e ci fosse solo il tnsnames.ora?
Il listener in questo caso ci darebbe un grosso aiuto con:
Impostando per noi il nuovo parametro.....
Senza questo parametro, una connessione client/server può rimanere aperta all'infinito senza autenticazione. Le connessioni senza autenticazione possono introdurre possibili attacchi di tipo denial-of-service, per cui dei client malintenzionati possono tentare di tempestare il server DB con richieste di connessioni che ovviamente consumano risorse.
Ci sono 2 link molto utili tratti dai documenti Oracle che spiegano molto bene i vari scenari, anche perchè per una protezione totale è posibile anche impostare un secondo parametro INBOUND_CONNECT_TIMEOUT_listener_name nel file listener.ora.
Bisogna fare attenzione perchè il parametro SQLNET.INBOUND_CONNECT_TIMEOUT non richiede riavvio del DB visto che viene letto quando una connessione viene richiesta mentre il INBOUND_CONNECT_TIMEOUT_listener_name viene letto quando viene avviato il servizio listener quindi per poter attivare il parametro con i nuovi settaggi bisogna riavviarlo.
I settaggi dei parametri di networking di Oracle sono fondamentali per costruire delle connessioni client/server affidabili e performanti, tuttavia certe volte questi vengono sottovalutati creando non pochi problemi.
Di seguito i links della documentazione Oracle e un doc id di Metalink (per chi ha accesso):
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/listener.htm#sthref833
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/sqlnet.htm#sthref481
Metalink doc Id #465043.1
WARNING: inbound connection timed out (ORA-3136)
Significa che un tentativo di connessione è stato fatto, ma la sessione di autenticazione non è stata fornita prima del parametro impostato in SQLNET.INBOUND_CONNECT_TIMEOUT.
Questo parametro si trova nel file sqlnet.ora in $ORACLE_HOME/network/admin/ ed è impostato a 60 secondi.
La segnalazione può essere trascurata se si verifica sporadicamente ma se dovesse essere una costante quotidiana l'Oracle doc prevede 2 action per questa anomalia:
1) Check SQL*NET and RDBMS log for trace of suspicious connections.
2) Configure SQL*NET with a proper inbound connect timeout value if necessary.
Bisogna quindi analizzare bene la situazione soprattutto se si sospetta qualche connessione strana come al punto 1 prima ovviamente di apporre qualsiasi modifica.
Tuttavia si può procedere a impostare il parametro SQLNET.INBOUND_CONNECT_TIMEOUT con un valore appropriato nel file $ORACLE_HOME/network/admin/sqlnet.ora come richiesto nel punto 2.
Ma se non il file non ci fosse nel percorso indicato e ci fosse solo il tnsnames.ora?
Il listener in questo caso ci darebbe un grosso aiuto con:
$ lsnrctl
LSNRCTL for Solaris: Version 10.2.0.5.0 - Production xxxxxxxxxxxxxxx
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Welcome to LSNRCTL, type "help" for information.
LSNRCTL> set help
The following operations are available after set
An asterisk (*) denotes a modifier or extended command:
password rawmode
displaymode trc_file
trc_directory trc_level
log_file log_directory
log_status current_listener
inbound_connect_timeout startup_waittime
save_config_on_stop dynamic_registration
LSNRCTL>set inbound_connect_timeout 3 (per esempio)
Impostando per noi il nuovo parametro.....
Senza questo parametro, una connessione client/server può rimanere aperta all'infinito senza autenticazione. Le connessioni senza autenticazione possono introdurre possibili attacchi di tipo denial-of-service, per cui dei client malintenzionati possono tentare di tempestare il server DB con richieste di connessioni che ovviamente consumano risorse.
Ci sono 2 link molto utili tratti dai documenti Oracle che spiegano molto bene i vari scenari, anche perchè per una protezione totale è posibile anche impostare un secondo parametro INBOUND_CONNECT_TIMEOUT_listener_name nel file listener.ora.
Bisogna fare attenzione perchè il parametro SQLNET.INBOUND_CONNECT_TIMEOUT non richiede riavvio del DB visto che viene letto quando una connessione viene richiesta mentre il INBOUND_CONNECT_TIMEOUT_listener_name viene letto quando viene avviato il servizio listener quindi per poter attivare il parametro con i nuovi settaggi bisogna riavviarlo.
I settaggi dei parametri di networking di Oracle sono fondamentali per costruire delle connessioni client/server affidabili e performanti, tuttavia certe volte questi vengono sottovalutati creando non pochi problemi.
Di seguito i links della documentazione Oracle e un doc id di Metalink (per chi ha accesso):
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/listener.htm#sthref833
http://download.oracle.com/docs/cd/B19306_01/network.102/b14213/sqlnet.htm#sthref481
Metalink doc Id #465043.1
Nessun commento:
Posta un commento