Como limitar el acceso a bases de datos Oracle

martes 13 de abril de 2010
Muchas veces queremos que solo cierta gente acceda a una base de datos Oracle debido a que puede tener información importante y nos interesa que el acceso sea mas restringido que un simple usuario y contraseña.

Para poder asegurar el acceso a las BBDD de Oracle podemos implantarlo de dos maneras:


1.- Limitar el acceso a la BBDD por IP

Para limitar el acceso por IP a la BBDD tendremos que hacerlo a través del fichero sqlnet.ora, los parametros que tendremos que modificar serán los siguientes:

tcp.validnode_checking = yes
tcp.invited_nodes = equipos que queramos que accedan (IP o nombre equipo)
tcp.excluded_nodes = equipos que NO queramos que accedan (IP o nombre equipo)

Ejemplo

tcp.validnode_checking = yes
tcp.invited_nodes = 192.168.2.10, servidor-bd
tcp.excluded_nodes = 192.168.2.20, 192.168.2.30, servidor-ficheros

2.- Limitar la conexión con el usuario dba a solo ciertos usuarios o IP's

Si queremos que solo ciertos usuarios de S.O puedan acceder como un usuario a una determinada BD tendremos que crear un pequeño trigger:

--Creamos un trigger que se dispare después del logon del usuario en la BBDD
create or replace trigger logon_trg after logon on database
DECLARE
ip_address VARCHAR2(64);
--Creamos un cursos para guardar la información
CURSOR c1 IS
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') from dual;
--Comenzamos el procedimiento
BEGIN
OPEN c1;
FETCH c1 INTO ip_address;
CLOSE c1;
--Comparamos la IP y el nombre de la persona que ha accedido con el que no accederá
IF ip_address = '192.168.2.20' and user = 'PACO' THEN
RAISE_APPLICATION_ERROR(-20020, 'You are not allowed to log into database now.');
END IF;
END;
/





Como veis esta es una forma de asegurar el acceso rapidamente a Oracle sin tener ningún tipo de quebraderos de cabeza. Algo fácil, sencillo y para toda la familia.

Un saludo

Como quitar ^M o fin de linea en Unix

miércoles 7 de abril de 2010
Mas de una vez nos hemos encontrado con que hemos creado un script o un fichero con el Bloc de Notas de Windows o con el MS-DOS y luego lo pasamos a un sistemas Unix/Linux y nos encontramos con que al final de cada línea aparece el carácter "^M". Este carácter corresponde al retorno de carro (CR) que Windows pone a cada fin de linea que hacemos (LR) mientras que Unix solo utiliza el fin de línea (LR), de ahí a que aparezca este bonito "^M".

A continuación vamos a enumerar distintas opciones para borrar este carácter:


  • Con cualquier editor de textos (vi,nano,gedit) editarlo y borrarlo a mano, como vemos esto no es viable si el fichero tiene muchas líneas
  • Editar el fichero con el editor de textos "vi" y ejecutar el siguiente comando ":%s/^M//g"
  • Utilizar el comando sed de esta manera "sed 's///g' -i fichero"
  • Utilizar perl de esta manera "perl -pi -e 's/\r\n/\n/g' fichero"
  • En el caso de que queramos aplicar este cambio a todos los ficheros de una misma carpeta solo tendriamos que ejecutar "perl -pi -e 's/\r\n/\n/g' *"
Como habeis visto, hay maneras sencillas modificar ficheros sin tener que editar a mano cada uno de ellos, la verdad es que este es un truco bastante sencillo que nos ahorra muchos quebraderos de cabeza y sobretodo mucho tiempo :)

¿Para que sirve "> /dev/null 2>&1"?

lunes 5 de abril de 2010
Cuando empecé a tocar sistemas Unix y veía en la crontab líneas de scripts que se ejecutaban y acababan en "> /dev/null 2>&1" me quedaba un poco anonadado ya que no entendía bien lo que hacía esta sentencia.

Había aprendido que el comando "mayor que" (>) servía para desviar la salida de un programa a otro sitio y que "/dev/null" lo que hacía era desviar esa salida hacia un fichero que no guarda ningún tipo de información (como si fuera un agujero negro) y por lo tanto conseguimos que no nos saque nada por pantalla. Esto lo sabía de las veces que tenía que borrar el contenido de un fichero y usaba el siguiente comando:
cat /dev/null > fichero.txt

STDIN, STDOUT y STDERR


Estos tres valores son las entradas y salidas standard para un programa. La entrada STDIN (Standard Input) normalmente viene por teclado o también puede venir desde otro programa. La salida STDOUT (Standard Output) es la salida por defecto de los programas y la STDERR es igual que la STDOUT pero para los errores de los programas.

A veces, estos valores los podemos encontrar en forma de número, siendo STDIN (0), STDOUT (1) y STDERR (2). Una vez que sabemos esto podemos deducir que el comando "> /dev/null 2>&1" lo que intenta es sacar el STDOUT a /dev/null y después de esto redirige la STDERR a la STDOUT.

En resumen, lo que hace "> /dev/null 2>&1" es mandar todo lo que salga a un agujero negro en donde no vamos a ver nada por pantalla y con lo cual tendremos un programa que no saca ninguna información sobre su ejecución.

Para verlo todavía mas claro podríamos decir que "> /dev/null 2>&1" es lo mismo que "> /dev/null 2>/dev/null"

Bacula, una solución gratuita de copias de seguridad (I de III)

martes 2 de marzo de 2010
En esta serie de artículos, vamos a explicar la instalación y el funcionamiento de la aplicación Bacula.


Bacula consiste en una serie de programas Open Source que te permiten gestionar y realizar las copias de seguridad a través de la red. Es una aplicación fácil de utilizar y ofrece muchas opciones de almacenamiento y recuperación.

Si en tu empresa has utilizado aplicaciones de backup como Legato, ARCServe, Data Protector o Symantec Backup Exec, seguramente estés interesado en probar Bacula ya que es un software libre y multiplataforma.

Bacula se compone basicamente de 5 componentes:
  • Director: el mas importante de todos, supervisa los backups, recuperaciones y verificaciones. El director es quien planifica las tareas a realizar. El director se instala a modo de servicio.
  • Consola (Console): la consola es el programa que nos permite lanzar comandos sobre el resto de componentes, existen tanto consolas con modo texto o consolas con interfaz gráfico para GNOME y KDE.
  • Cliente (File Daemon): el cliente es un servicio que se instala en cada equipo que queremos hacer una copia de seguridad de sus datos. El cliente es específico para cada Sistema Operativo y se encarga de suministrar los ficheros cuando el director los pide. Existen clientes en Unix, Linux y en Windows.
  • Almacenamiento (Storage): el servicio de almacenamiento es el encargado de realizar el almacenamiento o recuperación de los datos al medio físico (disco duro, cintas, DVD's, etc). En resumen, es el responsable de la lectura y escritura sobre los volúmenes físicos.
  • Monitor: el monitor nos permite saber cual es el estado de los distintos servicios como el director, almacenamiento o el cliente.
A continuación podemos ver un esquema gráfico de como se comunican entre si los componentes de Bacula:




En la foto podemos observar como el director de Bacula es el encargado de conectarse con el servidor de almacenamiento y con la base de datos para realizar la copia de seguridad sobre una máquina. Este esquema nos permite tener instalados los módulos de Bacula en distintos servidores, así pues podemos tener instalado por una parte el servidor de almacenamiento en una máquina conectada a una NAS/SAN y el director y la base de datos en otro servidor totalmente distinto.

En el siguiente artículo analizaremos como instalar Bacula sobre Ubuntu o CentOS para luego hacer copias de un servidor Windows y posteriormente como aplicar un frontal web como Webacula para gestionar de manera mas fácil las copias de seguridad y los distintos agentes que tenemos instalados.


Ya lo dice su eslogan "It comes in the night and sucks the essence from your computers", así que ya sabeis, a hacer las copias por la noche :)

Depredadores en la red

miércoles 17 de febrero de 2010
Una entrada muy interesante del blog de Pedro Sanchez nos cuenta como trabajan los depredadores en la red. No os la perdais, es muy interesante :).

"Una chica de 16 años contactada por Tuenti sufre una agresión sexual en cadiz.

El 'grooming' o acoso a los menores suele ser protagonizado por los adultos que, tras ganarse la amistad o confianza de aquellos a través de Internet, obtienen satisfación sexual mediante imágenes eróticas que el propio menor facilita insconscientemente o bajo amenaza.


En octubre pasado, la BIT detuvo en Cádiz a un depredador que llegó a ocasionar el suicidio de un niño Estonio de 11 años. El hijoputa de agresor se hizo pasar por una adolescente. El chantajista gaditano distribuyo las fotos de este niño ante los amigos de este. Ante la verguenza se pego un tiro con la pistola de su abuelo...


Continua aquí 

Windows File Analyzer: una herramienta forense

jueves 28 de enero de 2010
Cuando se realizan pruebas forenses sobre equipos Windows hay ciertos ficheros que tienen una especial importancia. Por ejemplo el fichero thumbs.db consiste en una pequeña base de datos en donde se guardan las últimas imagenes que se han visto en Windows por el usuario, es una forma mas de acelerar las futuras consultas de las imágenes. Otro fichero importante puede ser el index.dat que contiene todo el registro por donde el usuario ha navegado.

A continuación podemos ver un ejemplo de la herramienta aplicada sobre el fichero index.dat:






Windows File Analyzer nos permite analizar los siguientes tipos de ficheros:

  • Thumbs.db: permite analizar las imagenes que ha registrado este fichero
  • Papelera de reciclaje: nos permite analizar los ficheros que hay en la papelera de reciclaje
  • Accesos directos: WFA nos permite analizar los accesos directos en busca de fechas de última modificación y fechas de creación
  • Index.dat: nos permite analizar la información de la navegación (páginas visitadas, cookies, etc)
  • Carpeta Prefetch: el prefetch es el sistema que utiliza Windows para mejorar el rendimiento del SO y lo utiliza sobre las aplicaciones mas empleadas. Con esta información podemos saber cuales son las aplicaciones mas utilizadas y sus ultimas fechas de utilización por el usuario.
Como veis Windows File Analyzer es una herramienta muy completa que nos ayudará en nuestras auditorías forenses a sistemas Windows. Esta aplicación funciona bajo las versiones mas populares de Windows como XP y Vista además de funcionar sobre Windows 98 y 2003 Server.

La última versión la podeis descargar de aqui

Vulnerabilidad en Windows permite elevar privilegios

miércoles 20 de enero de 2010
Recientemente se ha publicado una vulnerabilidad para todas las versiones de Windows 32-bits (incluido Windows 7) que permite la elevación de privilegios. De momento no existe parche, estamos hablando de que es un "0 day" y cualquier persona puede acceder a este exploit sin previos conocimientos.

El fallo se encuentra en el soporte heredado que da Windows a las aplicaciones de 16 bits. Como bien nos explican en una-al-dia Windows comete algunos errores y asume que:
  • Se requiere el privilegio SeTcbPrivilege para configurar un contexto VDM (Virtual DOS Machine) .
  • Código en ring3 no puede instalar selectores de segmento de código arbitrarios. Usando el modo Virtual-8086, es posible.
  • Código alojado en el ring3 (espacio de usuario) no puede falsificar un "trap frame".
Para eludir el tercer punto, se necesita acceder a una dirección de
memoria, que es siempre la misma en todos los Windows menos Vista y
Windows 7 que realizan una "aleatorización" de la carga en memoria. Se
supone que esto protege de este tipo de ataques. Sin embargo, usando
NtQuerySystemInformation(), se puede llegar a calcular dónde está esa
dirección aunque sea diferente en cada inicio, con lo que la protección
ASLR (Address space layout randomization) también se ve eludida.

Ormandy avisó a Microsoft en junio de 2009, y poco después confirmaron
el problema. Harto de que no publicasen una solución (que considera no
muy compleja), ha decidido hacer público el fallo. Él mismo entiende que
esta vulnerabilidad afecta de forma más seria a empresas y corporaciones
que mantienen a sus usuarios con privilegios limitados. Por desgracia,
la mayoría de usuarios caseros utilizan ya la cuenta de administrador
en su Windows (no tan poderosa como SYSTEM, pero equivalente a efectos
prácticos) para tareas cotidianas, con lo que la elevación de
privilegios no suele ser un requisito en los ataques.


En el siguiente ejemplo podemos ver como se ejecuta el exploit y la nueva ventana de cmd se ejecuta con el usuario SYSTEM:




Nos encontramos por lo tanto ante una vulnerabilidad grave que todos los administradores de sistemas deben remediar en sus servidores, aunque no hay parche oficial la vulnerabilidad es muy fácil de solucionar. Solo necesitamos abrir nuestra consola de políticas (gpedit.msc) y vamos a Configuración de Equipo -> Plantillas Administrativas -> Componentes de Windows -> Compatibilidad de Aplicación y habilitamos la política "Impedir el acceso a aplicaciones de 16 bits".



Una vez aplicada la política comprobamos que la nueva ventana de comandos se ejecuta con el mismo usuario que la crea:




Colleja a Microsoft por seguir teniendo compatibilidad con aplicaciones de 16 bits incluso en versiones como Windows 7 y otra colleja por no haber sacado el parche en su debido momento ya que hubo un aviso previo por parte de los responsables del exploit.

El exploit lo podeis descargar de aquí

Un saludo