Vamos a ver una serie de entradas sencillas sobre securización básica de la base de datos
La securización del listener es una de las tareas mas sencillas y de las primeas que tenemos que hacer con la instalación de la base de datos.
Esta securización consta de varias partes:
- Securizacion del S.O
- Restringir las IPs desde las que se permite el acceso
- Añadir autenticacion al listener.
- Auditar listeners
- Parametrizar conexiones
- Cifrar tráfico
Securización del S.O
Como en todo componente de Oracle, la securización del Sistema Operativo es primordial.
Oracle por defecto cuenta con una estructura de permisos en directorios que no deben de variarse.
En cualquier caso siempre es conveniente seguir los aparatados de managing security de los documentos de instalacion de los productos
Restringir las IPs desde las que se permite el acceso
Este apartado es muy relativo, ya que puede no aplicar a nuestro sistema, sin embargo, en la mayoría de los casos estaremos tratando arquitecturas de 3 capas donde los accesos a las bases de datos son desde nuestra capa de servidor de aplicación.
Para habilitar las whitelists usaremos los parámetros tcp.invited_nodes y tcp.validnode_checking en el fichero $TNS_ADMIN/sqlnet.ora de la siguiente manera
tcp.validnode_checking = YES tcp.invited_nodes = ( X.X.X.X, hostname, ... )
La documentación de estos parámetros la tenemos en Configuring Database Access Control
Añadir autenticación al listener.
Esta opcion está desoportada en la version 12c Desupport of Oracle Net Listener Password
Una de las primeras vulnerabilidades que van a encontrarte en una auditoria de seguridad es la falta de autenticacion del listener.
Poner password al listener previene a la base de datos de ejecución de los comandos de control del mismo desde ubicaciones remotas. Es importante destacar que , desde la version 10g «the listener password is no longer required as the listener implements OSAuthentication,«, esto quiere decir que el usuario del sistema operativo propietario del listener no necesita el password para pararlo o arrancarlo ( que es el principal miedo del DBA cuando pone password al listener)
Para poner password al listener ejecutaremos:
$ lsnrctl LSNRCTL> change_password Old password: New password: Reenter new password: Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BBDD1)(PORT=1521))) Password changed for LISTENER The command completed successfully LSNRCTL> set password Password: The command completed successfully LSNRCTL> save_config Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=BBDD1)(PORT=1521))) Saved DBLSNR configuration parameters. Listener Parameter File /oracle/product/BBDD/network/admin/listener.ora Old Parameter File /oracle/product/BBDD/network/admin/listener.bak The command completed successfully
Esto nos habrá añadido unas lineas al listener.ora
This added the following lines to listener.ora: #----ADDED BY TNSLSNR 21-JUN-2016 13:47:56--- PASSWORDS_VSEC = D911537DUT5E6546
Auditar el listener
Toda securizacion de un elemento debe incluir la habilitación de un registro del mismo.
Para habilitar el regitro del log de listener añadiremos al fichero $TNS_ADMIN/listener.ora las siguientes lineas :
LOG_STATUS = ON LOG_DIRECTORY_= $TNS_ADMIN LOG_FILE_ = $ORACLE_SID
Esto ya se lleva a cabo por defecto a partir de la versión 11.5.10.
Parametrizar conexiones
El ultimo y no menos importante de los apartados es el de parametrizar los parámetros del listener ,un ejemplo de uno de estos parámetros es CONNECT_TIMEOUT
Añafiendo en el $TNS_ADMIN/listener.ora el parámetro
CONNECT_TIMEOUT_= 10
Especificamos el tiempo en segundos que el listener esperará para que se complete una conexion de cliente.
Cifrar tráfico
El cifrado del tráfico de la base de datos es posiblemente uno de los puntos mas importantes a la hora de securizar una conexion.
¿Por que la hemos dejado para el final?
La respuesta es sencilla, por que este cifrado implica una opcion de pago que es la Advanced Security
Option (ASO).
Si estás interesado en ahondar en esta opcion tienes la informacion en el grupo Advanced Security Option del MSOC