cisco


Grande es la polemica sobre el motivo del puerto usb de los ciscos series 28xx y mayores, que si para poner a futuro llaves criptograficas, que si porque la caja es maquilada por un tercero y viene por default el puerto, que para a futuro botar el ios de una memoria (memoria flash), que si es un aumento de RAM, asi que despues de un arduo trabajo de investigacion, he descubierto su uso …

Para cargar el Ipod


usb

osea que al mismo tiempo que te administra la red, el cisco se hace tu amigo al poner tu musica (y es logico, con todo el marketing que traen de “welcome to the human network”, el mejor amigo del humano es el ipod) el problema es que el cisco aun no tiene bocinas pero ya se ha levantado un caso al TAC para que se las pongan, a ver si los modelos futuros vienen con subwoffer integrado.

Comandos para proximo IOS

sh ipod:/metal/maiden/

sh ip route ipod

sh cdp neig ipod det (para que vea los ipod en la red)

sh ip power ipod

sh fan ipod

Vaya que me ha servido mi CCNA, sin el me hubiera sido imposible hacer este aporte al mundo de las redes…

Las propuestas modificaciones al IOS han sido hechas por el H. Ing Junior Acosta.

CASH: Niurka, mil gracias por darnos unos pocos de tus grandes conocimientos, donde aprendiste tanto…

NIURKA: Gracias a ti papi, pues no solo he tenido amantes en la farandula, todo esto lo he aprendido con relaciones anteriores tanto con un macho CCSP y un negrote friki que es Open-Be-esedero esos que odian a los linuxeros…

n1
Niurka, siempre tan femenina y segura, como un firewall bsd o cisco

CASH: OK, para empezar, cual de los 2 es mejor?

NIURKA: Ambos productos son muy buenos sin embargo la forma en la que aplican los criterios de seguridad son muy diferentes

En las soluciones firewall Cisco se manejan “niveles de seguridad” los cuales son aplicados en las interfaces y todo trafico de un mayor nivel transitando a un nivel menor es permitido, la interfaz publica debe tener nivel 0 , ya todo trafico que traspase de una zona de menor a si desea bloquear trafico saliente de interfaces de mayor seguridad a una menor, estos deben de definirse en listas de acceso y aplicarlas en la interface pertinente, en cambio pf todo tipo de trafico necesita ser tomado en cuenta, es decir, no supone que traficos deberian ser permitidos, es decil mi negro que el disenio de Cisco supone mas pol el hombre que lo esta configurando y es mas dificil defecarla feo por olvidos asi como la defeque to cuando me case con aquel ploductol de telenovelas que nomas me hizo suflil.

CASH: Cual es la ventaja de estos firewalls en comparativa a los “firewalls viejitos” de filtrado de paquetes?

NIURKA: En cisco se hace mucho incapie de que es un firewall ’stateful’ es decir, que cuando checa la politica del primer paquete de una conexion se crea una sesion y todos los paquetes y conexiones relacionadas a ese primer paquete son permitidas sin revisar las listas de acceso, en PF hay tambien seguimiento de estado usando el flag ‘keep state’ y ‘modulate state’ ambos soportan seguimiento de estado tanto para TCP como para UDP, en palabras que entiendas cash, una ves que identificas que no eres peligroso puedes pasar como juan por su casa sin aplicar todas las reglas…

n1
Este homble no podia tener el “state” ni con viagra

CASH: Otras cosas similares entre ambos?

NIURKA: Ambos permiten hacer grupos de hosts para aplicar las reglas, en Cisco se llama “object-group” y en pf “Variable expansion”

CASH: Que hay de seguridad a nivel de capa aplicacion

NIURKA:
En el control de navegacion, existe un mecanismo de accesar las paginas web a travez de un servidor proxy sin necesdad que el usuario haga ningun cambio en su pc, al recibie una peticion en el puerto web el firewall, reenvia la peticion al servidor proxy el cual hace la conexion para bajar la pagina y entregar el resultado al usuario interno es posible crear filtros por contenido, urls, restriccion de ancho de banda usado ,el proxy es posible instalarlo en el mismo firewall teniendo en cuenta que se etan agregando una posible vulnerabilidad mas sobre la cual estar encima, en otras palabras se recomienda ponerlo en otro host.

Cisco NO soporta transparente, el unico soporte es el uso de autorizacion de direcciones a travez de un servidor externo de websense un producto comercial y es necesario comprarlo por separado, ofrecida por una empresa que tiene miles de gentes navegando y clasificaqndo las paginas de internet, y al recibir la peticion el firewall manda el url al servidor ese y el dice si pasa o no….

n1
Con ambas soluciones puedes bloqueal de diferentes formas la pagina de playboy y las viejas cochinas que salen ahi

CASH: Que hay de acceso remoto desde el internet y medios inseguros?

NIURKA: En el sentido de VPN pf no hace ipsec pero BSD (cualquiera) tiene soporte a crear tuneles, tanto ipsec, pptp, openvpn, si bien no traen por default una interfaz grafica en si pero existen distribuciones que crean interfaz de administracion para estos servicios, Cisco tiene un limite de tuneles por licencia, en BSD es ilimitado y el limite lo dara la capacidad del hardware, como dicen los frikis, LOS FIERROS (sin albur).

En cuanto a accesos temporales a ciertas aplicaciones la contraparte a web-vpn esta authpf, en la cual un usuario remoto crea una sesion SSH y se autentifica, mientras este abierta la ventana de esa sesion SSH las reglas aplicadas a esa seccion se aplicaran a esa ip origen, asi nuestros datos siguen limpios y sin mancha como mi cu-cu.

CASH: Y algo sobre Virtualizacion y Respaldo?

NIURKA: Ambos equipos cuentan con sistemas de esquemas de reslpaldo y virtualizacion, la virtualizacion en PF es a nivel sistema operativo BSD y el esquema de respaldo es por medio de un sistema llamado carp, asi no te carga pifas cuando te truena el chikistriki.

CASH: huh?

NIURKA: El fairwall mi cash, el fairwall, asi le llamamos los conocedores…

CASH: Y al ser cisco, pues debe ser chingon pal ruteo no?

NIURKA: Pues Pix/asa no tiene funciones de ruteo avanzado (como los route-maps y esas madres de los routers) BSD tiene soporte a todos los protocolos de ruteo abiertos, apoyado en programas como Zebra y OpenBGP y lar reglas de PF permiten agregar decisiones de ruteo con clausulas como el route-to y reply-to, asi que si quieres echarte unas fumadas, usando un asa tendras que hacerlas en un dispositivo antes o despues de el.

CASH: Y que hay respecto a las pantallitas amigables pa configurarlos?

NIURKA: Cisco cuenta con entornos graficos de administracion basados en applets de java, un neofito es capaz de medio configurar un firewall y dejarlo jalando con este gui, sin necesariamente saber que chingados hizo, en el lado de pf existen distribuciones enfocadas a crear firewalls basados en FreeBSD/PF, la que mas aceptacion ha tenido es PFSense y ambos tienen la adorable interfaz de configuracion via Texto, que esa es para hombres como lo dijo un friki del Gulp! de esos hombres me gustan!

n1
mi siguente homble sera un lector de este blog, el que deje el comentario mas inseguro y/o configure totalmente un firegual me modo testo

CASH: Algunas Otras monerias?

NIURKA: Opcionalmente los appliance de seguridad Cisco tienen Modulos y servicios auxiliares para inspeccion de paquetes a bajo nivel (revisar el payload del paquete), estos van desde IPS, Antivirus, Entre otros

CASH: Ok, tus conclusiones…

NIURKA: Finalizalizando, hablando de seguridad y estabilidad, ambas soluciones son buenas y confiables, podras decidir cual usar basado en tu presupuesto y planeacion deseas hacer…

n1
Niurka concluye: Ambas solucionesle dicen ALTO a las conexiones indeseadas.

Esta entrevista fue hecha via e-mail a niurkamarkos@hotmail.com, no pudimos comprobar si realmente la respondio Niurka

Como todo huevas, descubri que el shell es una de las cosas que despues de batallar un rato al crear el escriptito o en ver como funciona, ahorra mucho tiempo dinero y esfuerzo…

El tope se lo da uno al cambiar de equipos (cisco en este caso), aunque poco a poco se ven formas de hacer cosas parecidas, no en una forma tan poderosa como en el shell pero pues algo ayudan…

Una de ellas es el uso del pipe, agarrar la salida de un comando y tratarla, en este caso agarrar la salida larga de un comando y escoger lo que nos interesa en unix/linux se usa el comando grep…


jhonny@cash:~$ ifconfig | grep eth
eth0 Link encap:Ethernet HWaddr 00:16:76:6F:86:95

El “grep de los pobres” (pues no tienen opciones como el GNU Grep ) en cisco se llama include

RUTER#sh run | include interface
interface FastEthernet0/0
interface Serial0/0
interface FastEthernet0/1
interface Serial0/1:0

pero por ejemplo… no se puede re-usar la salida obtenida

sh run | include interface | include 0/1

eso nos devolvera lo mismo… cosa que no pasa con el grep…

Cuando llegas a un lugar publico con wireless y prendes tu lap y por arte de magia empiezas a navegar, es gracias a una cosa llamada DHCP, que configura tu pc para que pueda tener acceso a la red, pero hay chistositos en lugares publicos que ponen sus propios servidores de DHCP para empezar a dar informacion falsa, y hacer que el reso anden valineando, si se tienen switches Cisco, hay una chingadera que se llama DHCP Snooping, que lo que hace es solo dejar pasar las ofertas de los puertos del switch en las que se sabe hay servidores DHCP autorizados, y cualquier otro server lo ignora como una chica fresa a un naco.

El DHCP puede ser ofrecido por muchos dispositivos, se puede configurar en routers o switches capa 3 cisco, o bien en unix o guindoz, en linux el server dhcp mas comun es el dhcpd, se instala:

sudo apt-get install dhcp3-server

y se configura editando /etc/dhcp3/dhcpd.conf

Ya configurado el dhcp en el linux… siguen los switches

en modo global de configuracion se activa:


dhcp snooping
dhcp snooping vlan X

En la interface (numero de puerto) donde se conecta el linux

int fast 0/Y
ip dhcp snooping trusted

y si hay switches cascadeados es importante


ip dhcp relay information trusted

A la interface VLAN donde esta el servidor DHCP, si no el pinche suichi no hara relay de los paquetes de DHCP.

Y adios ociosos, se les acabo la diversion…

Hace un par de dias me di de topes, pues obteniendo un reporte de una serie de comandos show enviados a un cisco (R) el log que mandaba generar se mochaba….

El codigo:

#!/usr/bin/perl
use expect;

--snip
Parametros de conexion y creacion del objeto expect
--snip

               $telnet->log_file("$host.txt", "w");
               $telnet->send_slow(0, "ter le 0\n");
               $telnet->send_slow(0, "sh ver\n");
               $telnet->send_slow(0, "sh run\n");
               $telnet->send_slow(0, "sh diag\n");
               $telnet->send_slow(0, "sh flash\n");
               $telnet->send_slow(0, "sh ip int bri\n");
               $telnet->send_slow(0, "sh interfaces\n");
               $telnet->send_slow(0, "sh ip route\n");
               $telnet->send_slow(0, "sh dial-p voice sum\n");
               $telnet->send_slow(0, "sh processes memory\n");
               $telnet->send_slow(0, "sh processes cpu\n");
               $telnet->send_slow(0, "sh processes history\n");
               $telnet->send_slow(0, "q\n");
               $telnet->send_slow(0, "\n");
               $telnet->log_file(undef);

Estos comandos generan un log de 1400 y pico de lineas, pero el log llegaba hasta la 300, mi error (pendejada) fue no forzar al programa a esperar a que terminara el comando pa mandar el otro…, de manera que se necesita una orden expect() antes de mandar el siguiente comando, esto para cada uno de los comandos enviados, el log se mochaba al terminar el ultimo comando enviado.

Hace poco me di cuenta que se puede user Ya sea Linux o algunos BSDs para rutear VLANs usando la encapsulacion IEEE 802.1Q., ya que ISL es propietaria y ya va pa fuera…

Configuracion del puerto Troncal en un Catalyst:

interface FastEthernet0/XX -----> Numero de puerto conectado al Router OpenBSD
 switchport trunk encapsulation dot1q
 switchport trunk allowed vlan 2-8
 switchport mode trunk
 no cdp enable

Configuracion de los hosts de la vlan 2, en el mismo Catalyst

interface FastEthernet0/2
 switchport access vlan 2
 no cdp enable

Configuracion del Router OpenBSD Archivo /etc/hostname.vlan0

inet 192.168.0.1 255.255.255.0 NONE vlan 2 vlandev fxp1

Parametros a conocer
192.168.0.1 = IP en la VLAN2
255.255.255.0 = MASCARA
vlan 2 = Vlan a la que pertenece
fxp1 = Interfaz fisica a la que esta amarrada, el nombre cambia dependiendo de la marca de la tarjeta de red

Lo mismo para el resto de las VLANS, con esta configuracion y el ip forwarding activado en el BSD, podran reenviar paquetes entre vlans en switches capa 2

He seguido cascareandole al TCL en el shell de cisco…

Aqui un escriptin que hace ping a 3 direcciones creadas en un arreglo

proc pingatumother {} {
	set a(100.239.92.98) RUTER1
	set a(104.267.230.138) RUTER3
	set a(101.347.149.230) RUTER2
	foreach i [array names a] {
        	exec "ping $i"
		puts "!$i"
    	}
}

Y aqui la demo


Internet#! Se activa tclsh
Internet#tclsh
Internet#! Se manda el codigo a memoria
Internet(tcl)#proc pingatumother {} {
+>      set a(100.239.92.98) RUTER1
+>      set a(104.267.230.138) RUTER3
+>      set a(101.347.149.230) RUTER2
+>      foreach i [array names a] {
+>              exec "ping $i"
+>              puts "!$i"
+>      }
+>}

Internet#! Se corre
Internet(tcl)#pingatumother

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 100.239.92.98, timeout is 2 seconds:
.....

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 104.267.230.138, timeout is 2 seconds:
.....

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 101.347.149.230, timeout is 2 seconds:
.....

pero aguas!!!!
No siempre funciona, verifica que tu router soporte el tcl correctamente, pues un par de routers los he perdido momentaneamente despues de intentar ejecutar los scripts de tcl

System returned to ROM by bus error at PC 0x62446DFC, address 0x1C at

Bueno, ora que le he estado entrando un poco mas al perl, me he dado buenos topes con las expresiones regulares, pero son bastante utiles para obtener informacion de una linea de texto con cierto patron y obtener lo que se quiere…

esta es la linea escupida por un sh ver de un router cisco1751:

IOS ™ C1700 Software (C1700-NO3SV3Y7-M), Version 12.2(4)YB, EARLY DEPLOYMENT RELEASE SOFTWARE (fc1)

esta la de un routercito 800

IOS ™ C820 Software (C820-K9OSV6Y6-M), Version 12.3(17b), RELEASE SOFTWARE (fc2)

con esta expresion regular:

if ($line =~ /IOS.*Version (.*?),/) {
	print "Version es $1 \n";

}

PSEUDO-EXPLICACION:
/ / = indica que es lo que se va a evaluar
IOS = la linea contioene la cadena IOS, algo mas y despues la palabra Version.
(.*?) = es el valor que se substeaera y tomara el valor de $1

Se obtiene facilmente el numero de version (12.2(4)YB) o (12.3(17b)) de casi cualquie modelo de routers para usarse en algun reporte…

Que peladita se ve no?
Pero no lo fue pa mi, que me saco 2,3 canas mas :)

Pues navegando por ahi encontre que los routers cisco soportan scripting, trae un shellecillo de lenguaje TCL con el cual se pueden crear funciones, estas se insertan via terminal o bien puede el router puede bajar las funciones via TFTP de otro equipo.

ruter#tclsh
ruter(tcl)#proc get_ints {} {
+>  #puts "BEFORE\n"
+>  set check ""
+>  set int_out [ exec "show interfaces\n" ]
+>
+>  set mylist [regexp -all -nocase -line -inline {(^[a-z]*[0-9]/*[0-9]*/*[0-9]*)} $int_out]
+>  #puts "MYLIST $mylist\n"
+>
+>foreach int $mylist {
+>    #puts "INT $int\n"
+>    if {![string equal $check $int]} {
+>      if {[info exists ints_out]} {
+>        append ints_out ", " $int
+>      } else {
+>        set ints_out $int
+>      }
+>      set check $int
+>    }
+>  }
+>
+>  #puts "AFTER\n"
+>  return $ints_out
+>}

ruter(tcl)#
ruter(tcl)#puts ""

ruter(tcl)#puts [eval get_ints]
FastEthernet0/0, FastEthernet0/1, Serial0/0/0, NVI0, Loopback0, Loopback20

ruter(tcl)#

Buscando informacion sobre Cisco en la red me enconte con este proyecto, un emulador de cisco 7200 el cual crea un entorno virtual y hace botar la imagen IOS, claro, todo esto es con fines didacticoso o para ponerse a alusinar, o soñar que tenemos un router.

Lo interesante es que bota un IOS real, solo hay que descomprimirlo


$ unzip -p c7200-g6ik8s-mz.124-2.T1.bin > image.bin
warning [c7200-g6ik8s-mz.124-2.T1.bin]: 27872 extra bytes at beginning or within zipfile
(attempting to process anyway)

Ya descomprimido se corre el emulador:

$ ./dynamips image.bin -t npe-400 -p 0:C7200-IO-FE -s 0:0:udp:10000:127.0.0.1:10001 -p 1:PA-A1 -s 1:0:udp:10002:127.0.0.1:10003 -p 2:PA-8T -s 2:1:udp:10004:127.0.0.1:10005
Cisco 7200 Simulation Platform (version 0.2.4-x86)
Copyright (c) 2005,2006 Christophe Fillot.

IOS image file: image.bin

C7200: Warning, no MAC address set.

CPU0 Device list:
ram : 0×000000000000 (0×10000000)
rom : 0×00001fc00000 (0×00400000)
remote_ctrl : 0×000011000000 (0×00001000)
bootflash : 0×00001a000000 (0×00800000)
nvram : 0×00001e000000 (0×00020000)
zero : 0×00001f000000 (0×00c00000)
mp_fpga : 0×00001e800000 (0×00001000)
io_fpga : 0×00001e840000 (0×00001000)
pci_io : 0×000100000000 (0×00200000)
gt64120 : 0×000014000000 (0×00001000)
PA-8T(2) : 0×00004d000000 (0×00004000)
PA-8T(2) : 0×00004d020000 (0×00004000)
PA-A1(1) : 0×000048800000 (0×00800000)
C7200-IO-FE(0) : 0×000048000000 (0×00800000)

PCI Bus “MB0/MB1″ Device list:
clpd6729 : ID 1013:1100, Bus 2, Dev. 16, Func. 0
C7200-IO-FE(0) : ID 1011:0009, Bus 1, Dev. 0, Func. 0, IRQ: 2
PA-A1(1) : ID 10b5:906e, Bus 5, Dev. 1, Func. 0, IRQ: 2
PA-A1(1) : ID 104c:a001, Bus 5, Dev. 0, Func. 0, IRQ: 2
dec21150 : ID 1011:0023, Bus 0, Dev. 9, Func. 0
dec21150 : ID 1011:0023, Bus 0, Dev. 8, Func. 0
dec21150 : ID 1011:0023, Bus 0, Dev. 7, Func. 0
dec21050 : ID 1011:0001, Bus 0, Dev. 1, Func. 0
gt64120 : ID 11ab:4620, Bus 0, Dev. 0, Func. 0, IRQ: 4

PCI Bus “MB2″ Device list:
PA-8T(2) : ID 1137:0001, Bus 11, Dev. 1, Func. 0, IRQ: 2
PA-8T(2) : ID 1137:0001, Bus 11, Dev. 0, Func. 0, IRQ: 2
dec21150 : ID 1011:0023, Bus 0, Dev. 9, Func. 0
dec21150 : ID 1011:0023, Bus 0, Dev. 8, Func. 0
dec21150 : ID 1011:0023, Bus 0, Dev. 7, Func. 0

Loading ELF file ‘../C7200-P-.BIN’…
* Adding section at virtual address 0×80008000
ELF entry point: 0×80008000

Starting simulation (CPU0 PC=0xffffffffbfc00000), JIT is enabled.
Cisco 7200 (Predator) ROMMON emulation microcode.

Launching IOS image at 0×80008000…

Restricted Rights Legend

Use, duplication, or disclosure by the Government is
subject to restrictions as set forth in subparagraph
(c) of the Commercial Computer Software - Restricted
Rights clause at FAR sec. 52.227-19 and subparagraph
(c) (1) (ii) of the Rights in Technical Data and Computer
Software clause at DFARS sec. 252.227-7013.

cisco Systems, Inc.
170 West Tasman Drive
San Jose, California 95134-1706

Cisco IOS Software, 7200 Software (C7200-P-M), Version 12.2(25)S7, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2005 by Cisco Systems, Inc.
Compiled Fri 28-Oct-05 09:12 by pwade
Image text-base: 0×60008DE0, data-base: 0×6183A000

Cisco 7206VXR (NPE400) processor (revision A) with 229376K/32768K bytes of memory.
Processor board ID 4294967295
R4600 CPU at 100Mhz, Implementation 32, Rev 1.2
6 slot VXR midplane, Version 2.1

Last reset from power-on

PCI bus mb0_mb1 (Slots 0, 1, 3 and 5) has a capacity of 600 bandwidth points.
Current configuration on bus mb0_mb1 has a total of 500 bandwidth points.
This configuration is within the PCI bus capacity and is supported.

PCI bus mb2 (Slots 2, 4, 6) has a capacity of 600 bandwidth points.
Current configuration on bus mb2 has a total of 0 bandwidth points
This configuration is within the PCI bus capacity and is supported.

Please refer to the following document “Cisco 7200 Series Port
Adaptor Hardware Configuration Guidelines” on CCO ,
for c7200 bandwidth points oversubscription/usage guidelines.

1 FastEthernet interface
8 Serial interfaces
1 ATM interface
125K bytes of NVRAM.

8192K bytes of Flash internal SIMM (Sector size 256K).

Press RETURN to get started!

Siempre he sido medio arrastrado, asi que halle el scripting para hacer cosas repetitivas, todo funciona via red, pero no pasaba lo mismo conectado a dispositivos via puerto serial, yo usaba minicom, pero a ser un programa que usa su propia pantalla, no funcionaria… asi que me dedique a buscar, en gooogle no halle nada, de chingadera me acorde de un howto de hylafax que lei hace un resto donde mencionaban el uso de CU, asi que lo baje y lo instale, pa lo amantes del minicom, si ya se que trae su propio script, pero queria aprovechar los scripts de expect que ya tengo…

Comandos utiles
~. Terminate the conversation.

~#, ~%break Send a break signal, if possible.

Script

#!/usr/bin/expect --

set timeout 90

spawn cu -l ttyS0
expect "C1700" {send "~#\r"}
send "~#\r"
send "~#\r"

expect "trap" {send "~#\r"}


Demo

a@ubuntu:~/scripts/SERIAL$ ./entraromon
spawn cu -l ttyS0
Connected.

System Bootstrap, Version 12.2(1r)XE1, RELEASE SOFTWARE (fc1)
TAC Support: http://www.cisco.com/cgi-bin/ibld/view.pl?i=support
Copyright (c) 2001 by cisco Systems, Inc.
C1700 pl~#atform with 98304 Kbytes of main memory

~#
monitor: command "boot" aborted due to user interrupt
rommon 1 > ~#

*** Reserved LVL 7 Interrupt ***
PC = 0xfff0bc98, Vector = 0x500, SP = 0x80004e04
rommon 1 >