Вы находитесь на странице: 1из 20

Instituto Tecnolgico de Massachusetts

Departamento de Ingeniera Elctrica y Ciencias de la

Computacin

6829 Otoo de 2002 13 de Septiembre de 2001

Herramientas para la red

Por

Nick Feamster
(El ensayo original titulado: Tutorial on useful tools se consigue colocando en un

motor de bsqueda: Nick Feamster MIT OpenCourseWare)

Visin general: En este tutorial cubriremos herramientas

que son comnmente usadas en la investigacin de redes

(para no mencionar las aplicaciones de depuracin en el

mundo real). Comenzamos con netstat y tcpdump

describiendo brevemente cmo usar cada una de estas

herramientas observando una conexin TCP viva e

interpretando su salida. Usaremos netstat para describir una

de las sutilezas de la mquina de estados TCP.

Posteriormente, miraremos un par de herramientas basadas

en la bsqueda, dig y whois que proveen informacin acerca

1 de 20
de los datos DNS sobre las PCs e informacin de registro

sobre los nombres y las redes respectivamente. Despus nos

moveremos a herramientas estndar de medicin de la red,

ping y ms interesantemente traceroute, describiendo cmo

funcionan, qu hacen y qu no dicen. Finalmente para

aquellos de ustedes que no conocen perl, mostrar cmo

relacionar las cosas al mostrar un sencillo programa hecho

en el mismo que toma nuestra seal y cuenta bytes a

Sistemas Autnomos y direcciones IP de destino.

1.tcpdump y netstat

Cmo funciona tcpdump? Para los kernels derivados de

BSD (Berkeley Software Distribution) el Berkeley Packet

Filter (BPF) est disponible. El filtro coloca el driver del

dispositivo en modo promiscuo recibiendo desde el mismo,

todos los paquetes transmitidos y recibidos. Estos paquetes

son entonces pasados por un filtro especificado por el

usuario, de tal forma que solamente los paquetes que el

usuario especifica como interesantes sern pasados al proceso

del usuario. Qu se puede decir acerca del costo de estar

continuamente acaparando el kernel para pequeas lecturas?

2 de 20
Un determinado valor de tiempo con lecturas por lotes

resuelve este problema.

El filtrado es hecho en el kernel. Esto limita la cantidad de

datos que tienen que ser copiados desde el kernel hasta el

espacio del usuario. Aqu tenemos un ejemplo de cmo

lucira en mi mquina la salida del siguiente comando:

tcpdump host i eth0 aros.ron.lcs.mit.edu port ssh

3 de 20
Qu est sucediendo con la opcin de la estampilla de

tiempo (timestamp)? Por ejemplo, por qu no se marca

sencillamente un paquete con el tiempo actual en que se

envi? (Se requiere de una sincronizacin de los relojes).

La informacin incluida en cada lnea es: Estampilla de

tiempo (timestamp), fuente y destino (direccin IP y puerto),

banderas TCP, segmento de informacin (comienzo, final y

tamao), reconocimientos (acks), tamao de la ventana, otras

variadas opciones TCP. La bandera p viene de push es

decir que busca que se empujen, hacia la aplicacin, los

datos recibidos tan pronto como sea posible. Dese cuenta del

apretn de manos (handshake) en 3 pasos. Tambin observe

el proceso de derribar una conexin:

Brevemente describa el diagrama de transicin de estados

como el resumen del conjunto de reglas para saber cmo se

comporta TCP.

4 de 20
Por qu la conexin pasa a un estado de espera de tiempo?

Dese cuenta que esto es tambin llamado el estado de

mximo segmento de tiempo de vida 2MSL (Maximum

Segment Lifetime). El final que realiza el cerrado activo no

sabe si el final ACK fue recibido en algn momento, de tal

forma que no sabe que el otro lado cerr la conexin. Slo

por el hecho de que llegue FIN nosotros no podemos asumir

que la conexin se cerr ya que los segmentos pueden llegar

en desorden.

Puede usted imaginarse varios ataques en TCP? El

secuestro del nmero de secuencia es un ejemplo. Otros

podran ser los ataques de inundacin SYN? Cmo se

defendera usted contra una inundacin SYN? Una forma

puede ser algo llamado SYN Cookies por medio de la cual,

el enviador arregla su estado para una conexin solamente

despus de que se complete el apretn de manos de 3 pasos

(handshake), en contraposicin a apresurarse a ir al estado

recibido SYN inmediatamente despus de recibir el primer

SYN. Esto ser descrito en la clase de las siguientes

semanas.

5 de 20
2. Herramientas de bsqueda: dig y whois.

dig es una utilidad de bsqueda DNS. Es similar a

nslookup pero con la diferencia de que dig es ms

poderosa. Usted puede consultar varios tipos de registro. El

ms comn (y por defecto) es el registro A el cual asigna

un nombre DNS a una direccin IP. Aqu muestro un

ejemplo de salida para una bsqueda realizada en mi

mquina. Dese cuenta que la consulta es para un registro

A. dig tambin retorna un montn de otra informacin. Por

ejemplo retorna los registros NS para lcs.mit.edu Los

registros NS retornan los servidores DNS autorizados para

un dominio particular. Note que tambin obtuve los registros

A para todas esas mquinas. Por qu hay un punto al

final de cada dominio? Porque esto le informa a usted que

el nombre est totalmente calificado (intente buscar ai versus

ai. en las mquinas del MIT). Los nmeros tales como

1800 describen la cantidad de tiempo que un servidor DNS

local debera colocar en cach el resultado de esa respuesta.

Explique cmo luce una salida cuando el nombre no se

resuelve a ninguna cosa. Explique lo mismo para el DNS

reverso, los nombres de dominio parcialmente calificados, etc.

6 de 20
Otras cosas que usted puede ver son los tipos CNAME.

Frecuentemente las personas tienen alias o mltiples

nombres para una mquina. Esto es implementado usando

nombres cannicos los cuales son expresados en DNS por

medio de un registro CNAME. Esto se muestra abajo:

7 de 20
Uno puede usar tambin dig para buscar el servidor de

correo para un dominio particular. Supongamos por ejemplo

que se quiere enviar correo a feamster@lcs.mit.edu ; cmo

hace su programa de correo para encontrar el servidor de

correo responsable de entregar el mensaje a lcs.mit.edu? Esto

es expresado por medio de un registro MX. Yo puedo

consultar este registro por ejemplo digitando dig lcs.mit.edu

MX Qu sucede con los nmeros? Ellos expresan la

preferencia por un servidor de correo sobre el otro.

Usted tambin puede usar dig para hacer inspecciones

reversas. dig x es la forma ms fcil de hacer esto. dig

puede tambin ser usado en modo de lote. Vea la pgina

man para ms detalles.

whois es tambin una til herramienta que le permite

consultar cualquier servidor whois. Hay unos pocos tipos de

8 de 20
servidores whois. Uno de ellos corresponde a los servidores

nic, que tpicamente le dicen a usted la informacin acerca

de para quin est registrado un nombre particular. El

servidor whois por defecto en mi mquina es

whois.crsnic.net Este servidor whois expide entonces una

consulta a un servidor whois que es responsable del registro

de ese nombre. Un trozo de la salida se da abajo:

whois puede ser usado tambin para consultar los registros

de direcciones, ARIN (Norte Amrica), APNIC (Asia) y

RIPE (Europa). Supongamos por ejemplo que quisiera

conocer ms sobre la direccin 18.31.0.38:

9 de 20
Note la fecha en que la base de datos fue actualizada por

ltima vez y tambin observe cundo fue actualizado por

ltima vez el registro. Esto puede darle alguna idea acerca

de la exactitud de la informacin.

Al lado de los servidores whois que son usados para resolver

nombres en dominios administrativos existen servidores whois

que ayudan a asignar nmeros a dominios administrativos.

Especficamente, los nmeros (que pueden ser por ejemplo:

10 de 20
Direcciones IP y nmeros de Sistemas Autnomos) son

administrados por las siguientes organizaciones:

RIPE : Reseaux IP Europeans

ARIN : American Registry for Internet Numbers

(tambin cubre el frica)

APNIC: Asia Pacific Network Information Center

(tambin cubre Australia)

Si yo quisiera conocer algo sobre algunas direcciones IP o

algunos nmeros de Sistemas Autnomos en el MIT, podra

usar entonces el servidor whois ARIN (whois.arin.net). El

servidor whois ARIN tiene muchas opciones interesantes

donde usted puede limitar la consulta a un tipo especfico de

registro. Supongamos que quisiera buscar el Sistema

Autnomo AS 701 :

11 de 20
Tambin estn soportadas las consultas en super-redes;

APNIC (whois.apnic.net) y RIPE (whois.ripe.net) funcionan en

una forma similar. Cmo deberamos hacer las cosas para

encontrar el Sistema Autnomo para una red particular o

una direccin IP? Existe otra base de datos whois

denominada RADB que mantiene esta informacin

relativamente actualizada. Dese cuenta que esta es la forma

en que traceroute A resuelve direcciones IP a Sistemas

Autnomos.

12 de 20
3.Herramientas de medicin: ping y traceroute

ping es un sencillo programa que enva un mensaje ICMP

Peticin de Eco a una mquina y espera poder escuchar un

ICMP Respuesta de Eco . Es til bsicamente para saber

si una PC particular est respondiendo (y por lo tanto que

est de hecho prendida, en red, etc.) ping tambin muestra

un valor RTT para cada pareja peticin/respuesta y un

nmero de secuencia. ping dar tambin un resumen de la

tasa de prdida. Dese cuenta que RTT no puede ser

totalmente exacto ya que ICMP no est en la ruta rpida

para muchos enrutadores. Opciones interesantes incluyen f

(para inundar, flood, algunas veces requiere al root) , c

(para enviar un cierto nmero de paquetes), s (para

especificar el tamao del paquete, algunas veces til para

observar el fenmeno de la fragmentacin).

Intente enviar pings de gran tamao de paquete y observar

el IP ID en tcpdump.

traceroute es una herramienta para obtener alguna idea

sobre la ruta que ve una PC particular a cierto destino.

traceroute enva un paquete IP con valores TTL

13 de 20
incrementndose (realmente, 3 por valor TTL) y escucha las

respuestas ICMP TIME_EXCEEDED para cada salto a lo

largo de la ruta al PC. Algunas cosas importantes sobre

traceroute son:

Cada salto especific una interfaz (desde la cual el

mensaje time_exceeded fue enviado) y no especific una

PC o un enrutador. Una ruta puede atravesar ms de

un salto en un enrutador particular.

Puede darse el caso de que la fuente del mensaje

time_exceeded se coloque a la direccin IP de la

interfaz de salida en la ruta de retorno a la PC, en

vez de la interfaz a la que lleg el paquete. Esto

puede producir algunos resultados sorprendentes.

Un fracaso en un traceroute no indica un fracaso en

ese punto (necesariamente). Este puede indicar un

fracaso a lo largo de la ruta reversa, por ejemplo.

Adicionalmente, * no indica una condicin de

fracaso necesariamente; este puede significar, por

ejemplo, que el enrutador no responde a los mensajes

ICMP.

14 de 20
Fjese que la versin de traceroute en la mayora de las

mquinas no soporta la opcin A. Usted puede hacer esto

manualmente de dos formas, encuentre el RPM o paquete

disponible apropiado para su mquina o baje el Nanog

Traceroute desde: http://nms.lcs.mit.edu/6.829/other/traceroute-

nanog.tar.gz y complelo para su mquina particular (dese

cuenta de que traceroute o bien requiere los privilegios de

superusuario para poderse correr, o usted tiene que asignarlo

con setuid root porque de lo contrario obtendr errores de

permiso).

4.Perl

15 de 20
En esta seccin veremos cmo usar Perl (un popular

lenguaje de programacin) para realizar dos tareas de

anlisis en un archivo tcpdump :

Contar el nmero de bytes transferidos de una PC a

otra.

Dibujar un rastreo ack.

Dese cuenta de que el siguiente cdigo no le muestra cmo

usar algunas cosas bsicas, tales como arreglos y hashes, las

cuales seran tambin tiles para el conjunto del problema.

Para encontrar esta informacin (y otra informacin sobre

expresiones regulares, Perl, etc.) un buen libro es

Programming Perl publicado por OReilly y cuyo autor es

Larry Wall. Las pginas man para perl son tambin una

excelente referencia (para acceder a ellas digite en el

indicador de comandos de Unix man perl). El siguiente

programa hace dos cosas: Tiene una funcin para contar

bytes en un rastreo tcpdump, dado el archivo de

seguimiento tcpdump (en el formato apropiado), y otra

funcin para producir un ACK trace para ese rastreo

tcpdump. Las dos funciones estn separadas abajo para

16 de 20
propsitos pedaggicos. Muestro esto aqu para darle una

idea al lector de cmo luce perl y cmo poder hacer cosas

bsicas, que son normalmente tiles en el

anlisis/investigacin de redes; obviamente este no es un

tutorial sobre el lenguaje.

17 de 20
18 de 20
calculate_bytes imprime (esperamos que correctamente)

algn nmero de bytes enviados desde routeviews hasta

ginseng. La funcin ack_trace produce la siguiente figura

(esta es realmente una ampliacin del rastreo ACK completo

para toda la conexin):

19 de 20
Por qu luce as el seguimiento? Es bsicamente porque

nosotros estamos observando el lado del receptor: El emisor

llena la ventana de congestin, nosotros estamos reconociendo

el valor de los paquetes de una ventana y el proceso se

repite.

20 de 20

Вам также может понравиться