jueves, 31 de diciembre de 2009

Mejorar el rendimiento de Windows XP en redes P2P / Servidor

Situacion:
Deseo mejorar el rendimiento de Windows XP en redes P2P

Explicacion:
Como todos sabemos el ancho de banda contratado para Internet es subutilizado por la mayoria de las persona, ciertas estadisticas indican que incluso la mayoria de los suscriptores de DSLs aprovechan menos del 60% del ancho de banda que ofrece el proveedor. Por otro lado, Windows XP SP2 aplico en su stack TCP/IP ciertos algoritmos sobre intento de conexiones y conexiones simultaneas, entre ellas una que indica que solo puede realizar hasta 10 intentos de conexiones por segundo. Esta ultima afecta directamente los problemas P2P tales como torrent y emule.

Solucion:
Opcion 1:
1) Instalar el patch que se puede conseguir en: http://www.lvllord.de/?lang=en&url=downloads
El patch fue creado por: http://www.lvllord.de/ y se consigue en ingles y en aleman. Durante la instalacion probablemente Windows indique que se estan modificando archivos del sistema, indicarle que se desea continuar.

Opcion 2:
2) - En un editor hexadecimal localiza del lado izquiero el valor 4F322
- Cambiar 0a 00 00 00 a 00 00 0a 00

Extra #1:
Tambien recomiendo apoyarse en el sencillo programa TCP Optimizer el cual es una aplicacion sencilla, intuitiva que ajusta ciertos valores del registro de windows. No dejes de utilizarlo

Extra #2:
Asignarle más prioridad al proceso de P2P (por ejemplo utorrent o emule): Administrador de Tareas --> Procesos --> Click derecho sobre el proceso --> Arriba de lo normal

SIEMPRE REALIZAR UN BACKUP DEL ARCHIVO TCPIP.SYS

Luego de realizar los cambios mi windows mejoro notablemente en los servicios P2P

Nota:
Este articulo fue basado en http://www.speedguide.net/read_articles.php?id=1497 y en mi propia experiencia

Suerte!

miércoles, 16 de diciembre de 2009

Windows 2003. Windows no tiene acceso al dispositivo, ruta de acceso o archivo especificado

Problema:
Al intentar ejecutar un archivo en Windows 2003 aparece el siguiente mensaje:

"windows no tiene acceso al dispositivo, ruta de acceso o archivo especificado".




Solucion:

Si copiastes el archivo por la red en un recurso compartido probablemente Windows haya protegido dicho archivo por seguridad.
Haz click derecho, haz click sobre propiedades y haz click sobre el boton desbloquear al lado de donde indica: "Este archivo provino de otro equipo y puede que se bloquee para ayudar a proteger este equipo"



Posteriormente podras ejecutar dicho archivo.

Suerte!,

miércoles, 2 de diciembre de 2009

Bash Watchdog Script

Situación:
En algunas oportunidades es necesario tener un script que levante algún servicio/proceso cuando el mismo falla. Es decir, supongamos que tenemos un servidor web, mail, dns que falla, es necesario tener un script que sea capaz de levantarlo cuando sea necesario de manera automatica

Solución:
En mi caso, tengo el servicio snmpd que por alguna razón falla constantemente. Debido a que necesito tener el mismo levantando construí el siguiente script que luego coloqué en un crontab.

Ejemplo del SCRIPT:
#!/bin/bash
#FILENAME= /root/SCRIPTS/snmpd.Watchdog
# Reiniciar SNMPD cuando el servicio no se encuentra levantado
RESTART="/etc/init.d/snmpd restart"
#path to pgrep command
PGREP="/usr/bin/pgrep"
# Nombre del servicio (en en este caso snmpd)
SNMPD="snmpd"
# obtener el numero del PID del proceso
$PGREP ${SNMPD}
if [ $? -ne 0 ] # Si snmpd no esta corriendo
then
# reiniciar snmpd
$RESTART
fi

Ejemplo del crontab:
Cada minutos:
* * * * * /root/SCRIPTS/snmpd.Watchdog
Cada 5 minutos
*/5 * * * * /root/SCRIPTS/snmpd.Watchdog

Mas información:
El script anterior es basado en el que se encuentra en:
http://zedomax.com/blog/2008/07/28/linux-server-hack-how-to-setup-a-shell-script-to-auto-restart-apache-httpd-server/

miércoles, 25 de noviembre de 2009

Implementar DNSSEC sobre Linux. Solo resolver

*** POST OBSOLETO ****
*** FAVOR LEER LA VERSION 2 ***


Problema:

Montar un servidor DNS solo como resolver, es decir, sin funcionar como servidor autorizado para ciertas zonas


Que se necesita:

- Servidor Linux
- Bind 9.3 o superior (en mi caso utilicé 9.6)


Alcance

- Vamos a validar todo lo que sea .br
- Vamos a validar todo lo que sea udp53.org

Procedimiento:
1) Instalar bind en un servidor Linux. En mi caso utilizo Mandriva y con un sencillo urpmi bind fue suficiente. Es importante destacar que para que DNSSEC ande se necesita tener instalado openssl y sus librerias. Actualmente la inmensa mayoría de las distribuciones ya viene con openssl

2) En /var/named.conf se necesita:
options {
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside "." trust-anchor dlv.isc.org.;
};

La primera opción permite dnssec para las zonas autorizadas y la segunda opción para realizar recursividad utilizando DNSSEC. La tercera opción la veremos con detalle más adelante.


3) Es necesario obtener las llaves públicas de los registros .br y udp53.org (que son los dominios que queremos verificar en este momento). Para ello:

[root@localhost etc]# dig br DNSKEY

{...}

br. 21502 IN DNSKEY 257 3 5 AwEAAdDoVnG9CyHbPUL2rTnE22uN66gQCrUW5W0NTXJBNmpZXP27w7PM Npyw3XCFQWP/XsT0pdzeEGJ400kdbbPqXr2lnmEtWMjj3Z/ejR8mZbJ/ 6OWJQ0k/2YOyo6Tiab1NGbGfs513y6dy1hOFpz+peZzGsCmcaCsTAv+D P/wmm+hNx94QqhVx0bmFUiCVUFKU3TS1GP415eykXvYDjNpy6AM=

{...}


[root@localhost etc]# dig udp53.org DNSKEY

{...}

udp53.org. 5882 IN DNSKEY 257 3 5 BEAAAAMKj6IGc8E/bBW7i6zDGgnKUXwamtR9PlFiuTg0/oa4i1okCg4J vLEq7EVpxdDi4yc1Ym9kGTUngZ59iVleoL8O5Zq+oPAPCYSbtn+ASsL6 0iCp4PJ6LV0A9d2NE/BetXO/Re/NRsSG18yFZCWGfX8mBnb2zG7Mb+0t pUuRsu9dBN31ljsbTUGmkDbqEw2xaDAUXqDGD5+pgN0NGqcPg0/HzFv9

{...}

4) Necesitamos las llaves DLV que pueden ser conseguidas en la pagina de la ISC en:
http://ftp.isc.org/www/dlv/dlv.isc.org.key.
Las llaves DLV ((DNSSEC Look-aside Validation) son un recurso adicional utilizado en aquellos servidores DNSSEC con recursividad. La idea es apoyar al conglomerado de internet en las primeras etapas de DNSSEC en el mundo

5) Vamos a copiar esas llaves obtenidas en el archivo named.conf bajo la sección trusted-keys (si no existe dicha sección en el archivo la crearemos). Por ejemplo

trusted-keys {
"br." 257 3 5
"AwEAAdDoVnG9CyHbPUL2rTnE22uN66gQCrUW5W0NTXJB
NmpZXP27w7PMNpyw3XCFQWP/XsT0pdzeEGJ400kdbbPq
Xr2lnmEtWMjj3Z/ejR8mZbJ/6OWJQ0k/2YOyo6Tiab1N
GbGfs513y6dy1hOFpz+peZzGsCmcaCsTAv+DP/wmm+hN
x94QqhVx0bmFUiCVUFKU3TS1GP415eykXvYDjNpy6AM=";

"dlv.isc.org." 257 3 5 "BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh";

"udp53.org." 257 3 5 "BEAAAAMKj6IGc8E/bBW7i6zDGgnKUXwamtR9PlFiuTg0/oa4i1okCg4J vLEq7EVpxdDi4yc1Ym9kGTUngZ59iVleoL8O5Zq+oPAPCYSbtn+ASsL6 0iCp4PJ6LV0A9d2NE/BetXO/Re/NRsSG18yFZCWGfX8mBnb2zG7Mb+0t pUuRsu9dBN31ljsbTUGmkDbqEw2xaDAUXqDGD5+pgN0NGqcPg0/HzFv9";

};

6) Listo!!., reiniciar el servidor named. Por ejmplo:
/etc/init.d/named restart (o con rndc, como tu desees)

Revisar que se encuentre funcionando bien

La mejor opción es utilizar el famoso comando dig y chequear el flag AD en al respuesta. Por ejemplo:

RESPUESTA SIN DNSSEC

[root@localhost etc]# dig +dnssec registro.br

; <<>> DiG 9.6.0-P1 <<>> +dnssec registro.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43771 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5




RESPUESTA CON DNSSEC

[root@localhost etc]# dig +dnssec registro.br

; <<>> DiG 9.6.0-P1 <<>> +dnssec registro.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1063 ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 1



Más información:

* www.isc.org/files/DNSSEC_in_6_minutes.pdf
* http://registro.br/info/dnssec.html

viernes, 30 de octubre de 2009

Linux. Utilizar celular como modem para conectarse a Internet

Necesidad:
Utilizar el celular para conectarse a Internet. En mi caso utilicé el motorola W6 y Linux Mandriva

Que se necesita:
- Celular motorola
- Cable de conexión telefono -- PC

Procedimiento:
1) Instalar wvdial para maneja y discado del modem:

#urpmi wvdial

2) Identificar el nombre con el que Linux reconoce el modem. Para ello, ejecutaremos:

# tail -f /var/log/message

y simultaneamente conectaremos el telefono al PC/Laptop. Conseguiremos un nombre como /dev/ttyACM0

3) Verificar que el device se haya creado correctamente:

#ls -lh /dev/ttyACM0

4) Recomiendo crear un link simbolico entre /dev/modem y /dev/ttyACM0:

#ln -s /dev/ttyACM0 /dev/modem

5) Posteriormente hay que configurar el wvdial (ya estamos casi listos!). Para ello edita /etc/wvdial.conf similar a:

[Dialer Defaults]
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2
Abort on No Dialtone = off
Password = ''
Check Def Route = off
Phone = *99#
Idle Seconds = 0
Abort on Busy = off
;Minimize = on
Modem Type = Analog Modem
Stupid Mode = on
Baud = 115200
Auto DNS = on
Dial Command = ATM1L3DT
Auto Reconnect = off
Ask Password = off
Init = ATX3
ISDN = off
Dial Attempts = 1
Username = ''
;Dock = on
Carrier Check = on
Init3 = AT+CGDCONT=1,"IP","gprsweb.digitel.ve"
Modem = /dev/ttyACM0

La configuración anterior sirve perfectamente para Digitel en Venezuela. Las partes más importantes corresponden a los DNS, baud rate y el APN de digitel (gprsweb.digitel.ve).

6) Por último, ejecuta wvdial desde la consola:

#wvdial

Debes obtener algo como:

[root@localhost etc]# wvdial
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: ATX3
ATX3
OK
--> Sending: ATQ0 V1 E1 S0=0 &C1 &D2
ATQ0 V1 E1 S0=0 &C1 &D2
OK
--> Sending: AT+CGDCONT=1,"IP","gprsweb.digitel.ve"
AT+CGDCONT=1,"IP","gprsweb.digitel.ve"
OK
--> Modem initialized.
--> Sending: ATM1L3DT*99#
--> Waiting for carrier.
ATM1L3DT*99#
CONNECT
--> Carrier detected. Starting PPP immediately.
--> Starting pppd at Fri Oct 30 15:37:14 2009
--> Pid of pppd: 21573
--> Using interface ppp0
--> pppd: Connect: ppp0 <--> /dev/ttyACM0
--> pppd: PAP authentication succeeded
--> local IP address 10.251.89.163
--> remote IP address 192.168.100.101
--> primary DNS address 10.99.0.11
--> secondary DNS address 204.59.152.208

Espero esta información haya sido útil.

Suerte!

martes, 20 de octubre de 2009

Configurar SSH en Router Cisco

Como todo sabemos, telnet es un protocolo que ofrece bajos niveles de seguridad, basta con que coloquemos un sniffer y podamos las ordenes que el usuario esta escribiendo, desde nombre del usuario hasta el password que este uso para entrar en el equipo.

Para poder habilitar SSH en un equipo Cisco, el IOS debe de tener los modulos de cifrado DES o 3DES, IPsec.

De resto, es bastante sencillo.


Le asignamos un nombre al equipo

Router(config)# hostname Router-SSH
Router-SSH(config)#

Luego configuramos un nombre de dominio para el equipo con el comando ip domain-name

Router-SSH(config)# ip domain-name acostanetwork.com
Router-SSH(config)#

Luego creamos una llave RSA para la autenticacion y cifrado de la data

Router-SSH(config)# crypto key generate rsa
The name for the keys will be: Router-SSH.acostanetwork.com
Choose the size of the key modulus in the range of 360 to 2048
for your General Purpose Keys. Choosing a key modulus greater than
512 may take a few minutes.

How many bits in the modulus [512]: 1024
% Generating 1024 bit RSA keys ...[OK]


Luego ejecutamos el siguiente comando para que el router solo acepte peticiones SSH, de esta manera deshabilitamos el TELNET en el equipo


Router-SSH(config-line)#transport input ssh


Y listo!



Saludos!!!!

miércoles, 14 de octubre de 2009

Secuencia de Escape / Break Sequence Minicom - Linux - Cisco

Descripción:
En muchas ocasiones es necesario entrar en rommon a los routers y/o LAN Switch Cisco, tipicamente para una recuperación de password.

En las últimas dos semanas casualmente he recibido llamadas de un par de amigos indicandome que el break sequence no les funciona con Minicom y Linux, es decir, no pueden hacer el password recovery porque no la secuencia de escape (para minicom: ctrl-a f) no les funciona.

Solución:
La solución es muy sencilla, probada con diversos terminales y sistemas operativo; incluso, muchas veces es más sencillo que la propia combinación de las teclas de escape:

* Apagar el Router/LAN Switch
* Conectar la consola al PC/Laptop con Linux
* Configurar Minicom con la siguiente configuración:
1200 baud rate
No parity
8 data bits
1 stop bit
No flow control

* Enciende el router/switch y presiona la barra espaciadora por 10-15 segundos
* Luego configura nuevamente Minicom a 9600 baud rate.
* Presiona enter

Listo, ya debes tener un prompt similar a:

rommon 2>

P.D. Esta solución también se encuentra documentada en Cisco en: http://www.cisco.com/en/US/products/hw/routers/ps133/products_tech_note09186a0080174a34.shtml#topic3

viernes, 2 de octubre de 2009

Recuperar y actualizar telefonos Polycom IP que no arrancan

Problema: 
El teléfono polycom se queda en un loop y no arranca. En mi experiencia he trabajado perfectamente el provisioning de los teléfonos tanto con TFTP como con FTP, entre los teléfonos con los que he trabajado se encuentran los Polycom IP: 301, 330, 430, 501, 601 y 650. El Polycom IP-4000 no me funcionó con FTP, siempre tuve que trabajar con TFTP con este equipo. 
  Que se necesita: 
 Un servidor TFTP 
 Una conexión hacia Internet 
 Un Navegador Web 
 Una Herramienta para descomprimir archivos bien sea Winzip o Winrar 
 Una imagen para el telefono (se puede conseguir en www.polycom.com) 
  Procedimiento: 
 1) Conectaremos el Teléfono y el PC ambos a un concentrador o LAN Switch 
 2) El PC y el teléfono deben estar en el mismo bus físico y en la misma subred IP. En nuestro caso utilizamos IPs: 192.168.127.72 (PC) y 192.168.127.71 (Telefono). Ambos con la máscara 255.255.255.0 3) En el servidor TFTP el directorio raíz debe contener los archivos de polycom anteriormente mencionados. Es decir, los archivos correspondientes a la imagen y configuración del teléfono 4) La configuración en el teléfono se explica a continuación
  1. Seleccionar el Botón Menú
  2. Seleccionar en el menú la opción settings
  3. Dentro del menú settings seleccionar la advanced
  4. Seguidamente se le solicitar el Password para entrar en configuración del teléfono.
  5. Seguidamente aparecerá el menú admin Settings.
  6. Dentro del menú admin Settings seleccionar la opción network config.
  7. Seguidamente con las flecha de la parte derecha del teléfono buscar la opción Server menú y buscar la opción servidor TFTP y colocar la dirección IP de nuestro PC.
Luego de esto, el teléfono actualizará la imagen a la misma que se encuentre en el FTP server. 

  En caso de problemas: 
 * Revisar la mac-address del telefono. La misma se encuentra en la parte posterior del mismo 
 * Copiar el archivo 000000000000.cfg bajo el nombre mac-address.cfg (por ejemplo cp 000000000000.cfg 0004f2342041.cfg) 
 * Editar 0004f2342041.cfg e identificar el parámetro: APP_FILE_PATH y colocar el nombre del archivo .ld conseguido en tu TFTP server. Ejemplo: APP_FILE_PATH="version2.2.ld" 
 * Apagar y prender el telefono Eso es todo, este procedimiento debe servir para actualizar teléfonos Polycom y recuperar alguno de los mismos que tengan inconvenientes en arrancar. 


 





When you live with people that share the same purpose and passion, you have more time to share your thoughts, emotions, adventures, and growth together. Go to acimcentre.org/ to join them.

viernes, 21 de agosto de 2009

Implementando SNMPv3 en cisco y monitoreo en CACTI

Para la configuracion de de SNMP v3 en un equipo cisco, la configuracion es relativamente sencilla.


Primero que todo, configuramos una "view" de la siguiente manera, en modo de configuracion global, ejecutamos el siguiente comando

2801-1(config)#snmp-server view lectura iso included

En caso de querer limitar el arbol, podemos ponernos mas intensos y especificar oid por oid ( 100%), de esta manera vamos a evitar que un snmpwalk a nuestro equipo muestre informacion de mas.
Ejm:
snmp-server view lectura 1.3.6.1.2.1.2.2.1.10 included

o tambien ( podemos pasarle el nombre del objeto)

snmp-server view lectura ifInOctets included

Luego de esto, creamos el grupo que va a utilizar la vista que creamos anteriormente

2801-1(config)#snmp-server group sololectura v3 auth read lectura

La v3, hace referencia a que se esta usando la version 3 de snmp, el comando Auth, nos dice que la entidad que hace los snmpgets, snmpwalks, etc. Debe de ser autentificada y por ultimo "read lectura", nos dice que el grupo sololectura va a hacer uso de la vista "lectura".


2801-1(config)#snmp-server user rollingpaper sololectura v3 auth md5 acostanetwork

Por ultimo, creamos el usuario "rollingpaper" que pertenece al grupo "sololectura", y va a usar md5 para autentificacion y por ultimo, configuramos la clave "acosatnetwork"

Listo, como sabemos si funciona?, si tenemos un equipo linux (Si es Debian mucho mejor :P), podemos correl el siguiente comando


rolling:/home# snmpwalk -v3 -u rollingpaper -l authNoPriv -a MD5 -A acostanetwork X.X.X.X .1

Y obtendremos el resultado deaseado, en este caso, puse al final .1 para que camine sobre todo el arbol.

Ejm ( en este ejemplo yo use el objeto iso, por eso recomiendo hacer los "views" por OID, se da demasiada informacion poniendo el nombre de un objeto como "iso" a la hora de un snmpwalk)

rolling:/home# snmpwalk -v3 -u rollingpaper -l authNoPriv -a MD5 -A acostanetwork 192.168.127.84 .1
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, 2801 Software (C2801-IPVOICE-M), Version 12.3(11)T6, RELEASE SOFTWARE (fc3)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2005 by Cisco Systems, Inc.
Compiled Fri 03-Jun-05 02:19 by ccai
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.619
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (19653625) 2 days, 6:35:36.25
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: 2801-1.yourdomain.com
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 78
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
SNMPv2-MIB::sysORID.1 = OID: SNMPv2-SMI::enterprises.9.7.129
SNMPv2-MIB::sysORID.2 = OID: SNMPv2-SMI::enterprises.9.7.115
SNMPv2-MIB::sysORID.3 = OID: SNMPv2-SMI::enterprises.9.7.265
SNMPv2-MIB::sysORID.4 = OID: SNMPv2-SMI::enterprises.9.7.112
SNMPv2-MIB::sysORID.5 = OID: SNMPv2-SMI::enterprises.9.7.106
SNMPv2-MIB::sysORID.6 = OID: SNMPv2-SMI::enterprises.9.7.47
SNMPv2-MIB::sysORID.7 = OID: SNMPv2-SMI::enterprises.9.7.122
SNMPv2-MIB::sysORID.8 = OID: SNMPv2-SMI::enterprises.9.7.135
SNMPv2-MIB::sysORID.9 = OID: SNMPv2-SMI::enterprises.9.7.43
SNMPv2-MIB::sysORID.10 = OID: SNMPv2-SMI::enterprises.9.7.37
SNMPv2-MIB::sysORID.11 = OID: SNMPv2-SMI::enterprises.9.7.92
SNMPv2-MIB::sysORID.12 = OID: SNMPv2-SMI::enterprises.9.7.53
SNMPv2-MIB::sysORID.13 = OID: SNMPv2-SMI::enterprises.9.7.54


Ahora, para agregarlo a Cacti, solo hace falta colocar los siguientes valores, como se muestra en la imagen.







Espero que sea de su agrado,
Saludos

jueves, 20 de agosto de 2009

Comandos OpenVMS y ejemplos sencillos

En estos días tuve la necesidad de entrar en contacto con un equipo Digital (MUY viejo) con OpenVMS, recordé que hace algunos años había realizado un manual y aquí se los dejo. Ojalá les sea útil de alguna manera:

Ayuda #1
Para listar los dispositivos que el sistema ha detectado:
show devices

Ayuda #2
Para buscar un archivo
DIR [000000...]

Ejemplo:
DIR COMSAT$DKA200:[000000...]EVTLOG.DAT
Nota: El nombre del archivo acepta wildcard. Por ejemplo EVT*

Ayuda #3
Para cambiarse de directorio:
SET DEFAULT

Por ejemplo
SET DEFAULT COMSAT$DKA200:[SCP.DBA.EVT]
Ayuda #4
Para montar un dispositivo (Disco, Cinta magnética, etc)

MOUNT/FOR MKA500:
Ayuda #5
Pasos para realizar un backup
En el siguiente ejemplo, se le hace backup a los logs del sistema VSAT (Illuminet)

1) mount/for mka500:
2) Sacar y meter el cartucho
3) SET MAGTAPE/REW MKA500 (No importa si da error)
4) SET DEF COMSAT$DKA200:[SCP.DBA.EVT]
5) BACKUP/LOG *.* MKA500:NOMBRE_SAV/REWIND/SAVE/IGNORE=(INTER,LABEL)

Ayuda #6
PASOS PARA REALIZAR LA IMPRESION DE UN ARCHIVO

1) INIT/QUEUE/ON=LRA0 SYS$PRINT
2) SHOW QUEUE SYS$PRINT
3) START/QUEUE SYS$PRINT
4) PRINT
5) PRINT /QUEUE=SYS$PRINT SYS$STARTUP:SYSTARTUP_VMS.COM

En esta última línea se esta imprimiendo el archivo SYS$STARTUP:SYSTARTUP_VMS.COM, se puede cambiar el mismo por cualquier otro.

Ayuda #7
Revisar información de la red (Protocolo DECNET)
#mcr ncp
>show known nodes
(Para ver los nodos reconocidos en la red)
> show executor (Información de la propia PC)
>exit (salir del prompt actual)

martes, 11 de agosto de 2009

Solucion caidas de llamadas de llamadas luego de transferir en Asterisk

Problema:
Luego de transferir una llamada de una extensión a otra con Asterisk la llamada se cae a los pocos segundos

Topología:






Solución:

La solución es muy sencilla y es configurar en el peer del Media Gateway la opcion canreinvite=no. Dicha opción viene por defecto en yes.
canreinvite=no fuerza al Asterisk a manejar ambos legs de la llamada y permanecer en el medio. Es decir, la comunicación del MediaGateway y del IPPhone pasarán siempre por el Asterisk. Existen otras opciones para evitar ello por ejemplo: utilizar diferentes protocolos y/o utilizar diferentes codecs entre ambos legs.

Procedimiento:
Editar /etc/asterisk/sip.conf y colocar la opción canreinvite=no en el peer. Por ejemplo:

[10.1.1.1]
context=from-internal
dtmfmode=rfc2833
host=10.1.1.1
insecure=very
type=friend
canreinvite=no


Suerte!,

domingo, 19 de julio de 2009

Proteccion de hotlink con Apache

Problema: 
   Poseer un website con contenido de imágenes u otro tipo de media y que existan otros website que hagan referencia a tu contenido. El punto mas negativo de esta situación es que estas gastando TU ANCHO de banda, memoria y recursos de tu servidor. Al problema anterior se le conoce como Hotlinking. 

Solución: 
   En el caso de Apache (existen soluciones similares en IIS) la solución es utilizar el archivo .htaccess con un código que veremos más abajo. Existen dos soluciones: a) bloquear la solicitud HTTP si el HTTP_REFERER no contiene el contenido que deseamos b) Devolver una imagen pre-configurada. En el siguiente artículo nos enfocaremos en devolver un código de error que es mi opción preferida debido a que de esta manera gastamos menos CPU y ahorramos de verdad ancho de banda 

Requerimientos: 
 Servidor Apache con el modulo Rewrite (mod_rewrite). 

Procedimiento: 
  Colocar el siguiente código en el archivo .htaccess 

 RewriteEngine on 
 RewriteCond %{HTTP_REFERER} . RewriteCond %{HTTP_REFERER} !^http://(www\\.)?chistesdevenezuela\\.com [NC] RewriteRule \\.(gif|jpe?g)$ - [NC,F] 

Explicación código anterior: 
  RewriteEngine on Este comando comienza el modulo rewrite, necesario para poder trabajar con los comandos rewrite 
  RewriteCond %{HTTP_REFERER} . Con este comando permitimos HTTP_REFERERs en blanco. Esto es muy util porque alguien puede escribir directamente el URL en el navegador, su navegador puede estar configurado para no enviar el referrer y/o incluso existen Firewalls capa 7 que eliminan el HTTP_REFERER de la solicitud HTTP RewriteCond %{HTTP_REFERER} !^http://(www\\.)?chistesdevenezuela\\.com [NC] Esta línea hace match con aquellas solicitudes que vengan del dominio chistesdevenezuela.com, incluso, no es necesario que lleve el www en el referer. El doble back-slash luego del dominio es para crear un carácter de escape y que el punto en .com se comporte realmente como un punto. Importante: 
Para permitir dominios adicionales solo duplica esta línea cambiando el dominio. RewriteRule \\.(gif|jpe?g)$ - [NC,F] Esta linea indica que tipo de archivos serán permitidos desde el dominio especificado en la linea anterior. Para permitir nuevos tipos de archivos solo agrega nuevos pipes seguidos por el tipo de archivo (por ejemplo png, bmps, etc). 


Eso es todo, 

Suerte.

lunes, 13 de julio de 2009

Mantener el nivel del volumen en telefonos Polycom

Problema:
Durante una llamada telefónica se ajusta el volumen del teléfono. Al finalizar la llamada y comenzar una nueva el volumen retoma su valor original

Solución:
Primero que nada es necesario tener provisioning de los telefonos por TFTP o FTP. La solución no se puede implementar por la configuración vía Web.


Procedimiento:


1) Editar el archivo sip.cfg
2) Colocar el valor 1 a las etiquetas que indiquen: voice.volume.persist.XXX. Donde XXX puede ser: handset, headset o speakerphone. Por ejemplo: voice.volume.persist.handset=1

Reiniciar el teléfono.

Suerte!

Deshabilitar el boton de forward/redirigir en telefonos Polycom

Problema:
Algunas personas intencionalmente o inintencionalmente habilitan el forward/redirigir a otras extensiones, esto puede causar muchas molestias, inconvenientes y malestares innecesarios.

Necesidad:
Deshabilitar el boton de "forward" en los telefonos Polycom Sound Point (modelos 430, 330, 301, 401, 501, etc).

Solución:
Primero que nada es necesario tener provisioning de los telefonos por TFTP o FTP. La solución no se puede implementar por la configuración vía Web.

Procedimiento:

1) Abre el archivo mac.cfg (con vi, emacs o algún otro editor de texto/xml).

Ubica los parametros divert

3) Coloca divert.fwd.x.enabled en 0 (donde x es el número de registro del telefono, por ejemplo=1,2). Sin no consigues los tags/etiquetas de divert puedes copiarlos del archivo sip.cfg

Reinicia el telefóno.

Listo,

Suerte!

Traido gracias a: http://www.fenixone.com

viernes, 10 de julio de 2009

Como activar las licencias dentro de un firewall Juniper

Objetivo:
Activar las diferentes licencias adquiridad (por ejemplo Antivirus) dentro de una caja Juniper SSG5

Problema:
Luego de que recibí la caja no tenía la menor idea de como activar el Antivirus (AV) dentro del mismo

Procedimiento:
Procedí a abrir un ticket dentro del website de Juniper indicando mi problema

Solución:
* Conectar la caja a Internet y con navegación
* Asegurarse que el firewall pueda navegar. Recomiendo entrar a la caja por ssh y/o telnet y hacer un ping a yahoo.com o google.com
* Colocar fecha y hora de la caja (MUY importante)
* Posteriormente hay dos maneras de actualizar las licencias: Web y CLI

Vía Web:
Ir a: Configuration>update>screen OS/keys y hacer click en retrieve subscriptions

Vía CLI:
cst-1->exec license-key update
o
cst-1->exec license-key .

Luego la caja se conectará a lo que Juniper llama el Entitlement Server y traerá las licencias compradas y registradas dentro del Website de Juniper.

Eso es todo,

miércoles, 8 de julio de 2009

Firewall bueno, gratuito y configurable en Windows

Necesidad:
Quitar el acceso a Internet a 100 localidades y solo permitir DNS y FTP. De ser posible gratuito.
En cada localidad solo existe un PC conectado a Internet y dicho PC puede estar conectado de muchas maneras diferentes: Ethernet, Wireless; GSM, EVDO, UMTS, etc, etc.
Por ello, el firewall a utilizar debe de ser capaz de implementar las políticas en TODAS las interfaces del PC

Solución:

Luego de buscar mucho por Internet, incluso probar varios diferentes Firewall logré conseguir: WIPFW
Wipfw lo definen como un Firewall sencillo y eficiente para el mundo del sistema operativo Windows.

En fin, no voy a entrar en detalles de donde bajarlo y como instalarlo. Voy a indicar el procedimiento que seguí para unicamente permitir FTP Y DNS.

Procedimiento:

1) Luego de tener el software instalado en: c:\wipfw procedí a modificar el archivo: wipfw.conf y lo dejé de la siguiente manera:

# First flush the firewall rules
-f flush

# Localhost rules
add 100 allow all from any to any via lo*

# Mis politicas

add 101 allow tcp from me to any 53 out
add 102 allow udp from me to any 53 out
add 103 deny tcp from me to any 1863 out
add 104 allow tcp from me to any 20 out
add 105 allow tcp from me to any 21 out


# Prevent any traffic to 127.0.0.1, common in localhost spoofing
add 110 deny log all from any to 127.0.0.0/8 in
add 110 deny log all from 127.0.0.0/8 to any in

# Bloquear TODO el resto del tráfico. No quiero que naveguen y nada
add 115 deny log all from any to any out

add check-state
add pass all from me to any out keep-state
add count log ip from any to any

2) Posteriormente ejecutas el archivo: install.cmd ubicado en c:\wipfw

3) En caso de necesitar deshabilitar el firewall debes ejecutar: c:\wipfw\uninstall.cmd

Suerte!.

miércoles, 24 de junio de 2009

Conectando back2back routers Cisco. Frame Relay, HDLC y PPP

En estos dias he estado montando un laboratorio de CCNA y he tenido que realizar diferentes conexiones Back2Back entre diferentes routers Cisco. En fin les doy un pequeno resumen. Espero sea util:

1) Back2Back con enlaces seriales
Lo primero que necesitas son dos cables seriales: Uno debe ser DTE (generalmente con conector macho) y el otro debe ser DCE (generalmente con conector hembra)

a) Conectando HDLC (mas facil)
Configuracion del lado donde hayas colocado el cable DCE:

interface Serial0
ip address 10.0.0.1 255.255.255.252
clockrate 64000
no cdp enable

Configuracion del lado donde hayas colocado el cable DTE:

interface Serial1
ip address 10.0.0.2 255.255.255.252
no cdp enable


Notese que la configuracion del cable donde se encuentra el cable DCE debe tener el comando clockrate. Esto es muy necesario porque el router con el cable DTE necesito recibir el reloj porque son enlaces sincronos y es necesario un dispositivo que entregue el reloj a la red.

troubleshooting
#show controller s0
#ping 10.0.0.1
#ping 10.0.0.2
#show interface s0

b) Conectando utilizando Frame Relay (mi recomendacion en caso de un Laboratorio)
El motivo porque recomiendo esta configuracion sobre todo para un laboratorio de Cisco es que te permite crear varios enlaces (PVCs) entre los dos routers lo que te dara mas flexibilidad para tus configuraciones (protocolos de enrutamiento dinamico, suspender un enlace para una prueba, etc)

Configuracion del lado donde hayas colocado el cable DCE:
!
interface Serial0
no ip address
encapsulation frame-relay
no keepalive
clock rate 64000
!
interface Serial0.1 point-to-point
ip address 10.0.01 255.255.255.252
frame-relay interface-dlci 101


Configuracion del lado donde hayas colocado el cable DTE:
!
interface Serial0
no ip address
encapsulation frame-relay
no keepalive
!
interface Serial0.1 point-to-point
ip address 10.0.0.2 255.255.255.252
frame-relay interface-dlci 101


Notese que donde se encuentra el cable DCE tuvo que colocarse nuevamente el comando clockrate para que dicho router diera reloj a la red. En esta oportunidad adicionalmente hubo que colocar el comando no keepalive el cual deshabilita el procesamiento de LMI. Por ultimo, notese que se crearon subinterfaces point-to-point. A pesar de que la configuracion se puede realizar dentro de la interfaz madre (S0) aconsejo realizarlo dentro de la subinterfaz para ganar flexibilidad (por ejemplo, crear nuevas subinterfaces como s0.2, s0.3)

Troubleshooting:
#show interface
#show frame-relay pvc
#show frame-relay map
#ping
#show controller


2) Utilizando las interfaces Aux
Si te encuentras construyendo un Lab seguramente deseeas tener muchas conexiones para realizar muchas pruebas. Algo que puede ser muy util es conectar dos routers back2back utilizando el cable de consola entre dos routers en sus puertos Aux. La configuracion seria la siguiente:

Primo debes averiguar en cada router el numero de la interfaz Async, recomiendo que entres en modo configuracion global e intentes configurar la interfaz async1 a la async5.

En ambos routers lleva una configuracion como esta (ojo con los IPs). Esta configuracion permite IP, protocolos de enrutamiento, etc. Es muy importante que el txspeed en un router sea el rxspeed en el otro y viceversa.

interface Async1
ip address 192.168.10.1 255.255.255.0
encapsulation ppp
async default routing
async mode dedicated
!
line aux 0
modem InOut
transport input all
rxspeed 38400
txspeed 38400
flowcontrol hardware

Troubleshooting:
#show line
#ping


3) Utilizando enthernet

Tan solo es necesario un cable cruzado entre los puertos ethernet de los routers


Suerte y espero haya sido util esta informacion

viernes, 19 de junio de 2009

Comando oculto en Cisco. EIGRP

Esta es un post muy corto.
Otro comando oculto en Cisco. No esta documentado pero tiene información valiosa


2801#show ip eigrp timers
IP-EIGRP timers for process 1111
Hello Process
Expiration Type
| 0.548 (parent)
| 0.548 Hello (FastEthernet0/0.21)

Update Process
Expiration Type
| 10.840 (parent)
| 10.840 (parent)
| 10.840 Peer holding

SIA Process
Expiration Type
| 0.000 (parent)
2801#

miércoles, 17 de junio de 2009

Problemas con Postfix dsn= 4.4.2

En el dia de ayer, una empresa a la que a veces le presto servicios me llamo porque estaban teniendo fallas con su servicio de correo.

El primer paso que hice, fue revisar los logs, y al hacerlo me encontre con estos errores que ocurrian con varios Dominios:

dsn=4.4.2, status=deferred (lost connection with alt1.gmail-smtp-in.l.google.com[209.85.222.27] while sending message body)

dsn=4.4.2, status=deferred (lost connection with f.mx.mail.yahoo.com[98.137.54.237] while sending end of data -- message may be sent more than once)

Estos errores tienden a ser por problemas de latencia, que la transmision del correo se cierra debido al delay que se presenta, pero para mi sorpresa, el enlace estaba bien, no habia latencia en la red de la empresa.

Intente disminuir el MTU de la interfaz eth0:

debian:/home/xxxx# ifconfig eth0 mtu 1000
debian:/home/xxxx# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1a:4b:5e:10:c8
inet addr:10.10.10.10 Bcast:192.168.127.255 Mask:255.255.255.0
UP BROADCAST MULTICAST MTU:1000 Metric:1

Pense que esto iba a solucionarlo, pero no fue asi, despues de correr "mailq -q" para forzar la salida de los correos en cola, los mismos se mantenian en las mismas condiciones.

Capaz era problema se relacionaba con el MTU discovery

"debian:/home/xxxx#echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc"

Luego de volver a correr "mailq -q", seguia dando el mismo error.


Por lo que procedi a instalar tcpdump "debian:/home/xxxx# aptitude install tcpdump" y sniffear el trafico del puerto 25.

"debian:/home/xxxx# tcpdump -i eth0 port 25"

Y lo deje corriendo un rato, mientras enviaba correos a la empresa y de la empresa enviaba correos a otros dominios. Luego de obtener bastante informacion procedi a analizarla con Wireshark (esta herramienta es lo mejor creado por el ser Humano, junto con nmap :P).

Comparte con ustedes lo que vi en Wireshark


Al ver el error que estaba teniendo en cuanto al "TCP checksum offload", procedi a deshabilitarlo en la interfaz eth0.

Esto se puede hacer con una herramienta que se llama ethtool, que te permite manipular las propiedades de la interfaz.


debian:/home/xxxx# ethtool --show-offload eth0
Offload parameters for eth0:
Cannot get device rx csum settings: Operation not supported
Cannot get device flags: Operation not supported
rx-checksumming: off
tx-checksumming: on <============
scatter-gather: off
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: off
large receive offload: off

debian:/home/xxxx# ethtool --offload eth0 tx off

y luego

debian:/home/xxxx# ethtool --show-offload eth0
Offload parameters for eth0:
Cannot get device rx csum settings: Operation not supported
Cannot get device flags: Operation not supported
rx-checksumming: off
tx-checksumming: off <============ :)
scatter-gather: off
tcp segmentation offload: off
udp fragmentation offload: off
generic segmentation offload: off
large receive offload: off


Al hacer esto, los correos empezaron a salir :)....

Para quienes no tengan muy claro que es esto, les dejo una pequenha nota;

"If you are experiencing network problems and while trying to figure
it out with Wireshark you found these checksum errors, you may have a
network card with TCP checksum offload enabled and for some reason the
packet is not being fixed by the adapter (NAT, bridge or route
redirection is sending the packet to another interface). In this case,
you may want to check and disable checksum offload for the adapter, if
possible."

Mas detallado:

"tcp checksum offloading will not offer you very much performance wise
since it is so cheap to calculate it with the CPU. tcp checksum
offloading is dangerous for data however since it means that you will
send your packets across the least reliable component of your computer
(the pci bus) and without tcp checksum calculated by the stack you
will not detect bits being flipped/corrupted by the pci bus and thus
data might be corrupted. tcp checksum offloading is not as good as it
initially might be thought."

viernes, 12 de junio de 2009

Policy Based Routing, HSRP y redundancia. Cisco

Necesidad
Contar con dos routers y una dirección IP en Standby (HSRP), donde ciertas redes origen enrutarlas por el Carrier A y otras redes por el Carrier B, sin embargo en caso de fallar algún proveedor funcione la redundancia.
En el caso descrito anteriormente no se puede utilizar un protocolo de enrutamiento dinámico porque se desea enrutar por dirección fuente. Por otro lado, si pueden existir otros modos de realizar esta tarea.

Escenario

2 Router Cisco 1841
2 Enlaces WAN
HSRP
Redes a enviar por el Carrier 1:
10.1.0.0 0.0.255.255
192.168.30.0 0.0.0.255
Redes a enviar por el Carrier 2:
10.144.192.0 0.0.15.255

Diagrama





Procedimiento

Lo primero que haremos es configurar la parte de HSRP. Para ello utilizaremos la siguiente configuración:

En RTR-1
interface FastEthernet0/0
description TO-LAN
ip address 10.1.1.207 255.255.0.0
standby 1 ip 10.1.1.206
standby 1 timers 1 5
standby 1 priority 110
standby 1 preempt
standby 1 authentication CISCO
standby 1 track 1 decrement 20

En RTR-2
interface FastEthernet0/0
description TO-LAN
ip address 10.1.1.204 255.255.0.0
standby 1 ip 10.1.1.206
standby 1 timers 1 5
standby 1 preempt
standby 1 authentication CISCO

Con la configuración anterior tendremos en RTR-1 el IP 10.1.1.207 y en RTR-2 el IP 10.1.1.204. El IP virtual es el 10.1.1.206

2) Indicarle a cada router como alcanzar la WAN del router contrario e indicarles las listas de acceso:

En RTR-1
ip route 10.0.0.1 255.255.255.255 10.1.1.204
access-list 120 REMARK Por el carrier 1
access-list 120 permit ip 10.1.0.0 0.0.255.255 any
access-list 120 permit ip 192.168.30.0 0.0.0.255 any

access-list 121 REMARK Por el carrier 2
access-list 121 permit ip 10.144.192.0 0.0.15.255 any

En RTR-2
ip route 172.16.100.225 255.255.255.255 10.1.1.207
access-list 120 REMARK Por el carrier 1
access-list 120 permit ip 10.1.0.0 0.0.255.255 any
access-list 120 permit ip 192.168.30.0 0.0.0.255 any

access-list 121 REMARK Por el carrier 2
access-list 121 permit ip 10.144.192.0 0.0.15.255 any

3) Es necesario habilitar SLA (Service Level Agreement) y tracks en los routers para mantener el monitoreo vía ping de los enlaces WAN en cada router. Esto es necesario para que a través de PBR los route-maps puedan tomar la decisión de por donde enrutar los paquetes.

En RTR-1

ip sla monitor 2
type echo protocol ipIcmpEcho 172.16.100.225
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 2 life forever start-time now

ip sla monitor 3
type echo protocol ipIcmpEcho 10.0.0.1
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 3 life forever start-time now

track 2 rtr 2 reachability
track 3 rtr 3 reachability

En RTR-2

ip sla monitor 2
type echo protocol ipIcmpEcho 10.0.0.1
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 2 life forever start-time now

ip sla monitor 3
type echo protocol ipIcmpEcho 172.16.100.225
timeout 1000
threshold 50
frequency 3
ip sla monitor schedule 3 life forever start-time now

track 2 rtr 2 reachability
track 3 rtr 3 reachability

En el ejemplo anterior, en ambos routers se estan monitoreando los IPs WAN vía ping con un timeout de 1000 ms, un umbral de 50 ms cada 3 segundos.

4) Configurar los route-maps en cada router

RTR-1

route-map CARRIER permit 5
match ip address 120
set ip next-hop verify-availability 172.16.100.225 10 track 2
set ip next-hop verify-availability 10.0.0.1 20 track 3

route-map CARRIER permit 10
match ip address 121
set ip next-hop verify-availability 10.1.1.207 10 track 3
set ip next-hop verify-availability 172.16.100.225 20 track 2

RTR-2

route-map CARRIER permit 5
match ip address 121
set ip next-hop verify-availability 10.0.0.1 10 track 2
set ip next-hop verify-availability 10.1.1.207 20 track 3

route-map CARRIER permit 10
match ip address 120
set ip next-hop verify-availability 10.1.1.207 10 track 3
set ip next-hop verify-availability 10.0.0.1 20 track 2


5) Finalmente es necesario aplicar el comando ip policy route-map en la interfaz f0/0 en cada router

#conf termin
(config)#inter f0/0
(config-if)#ip policy route-map CARRIER

Explicación
Ahora bien, vamos a intentar correr esto en frio:
1) El host 10.1.0.100 envia un paquete a la red 192.168.1.0
2) El paquete lo recibe RTR-2 por la interfaz F0/0
3) La politica es aplicada según el route-map CARRIER
4) En RTR-1, el route-map CARRIER identifica la red origen 10.1.0.100 y coloca como next-hop el IP 10.1.0.207
5) Lo recibe la interfaz f0/0 de RTR-1 quien nuevamente aplica la politica CARRIER y sabe que debe enviar el paquete por la interfaz F0/1 con next-hop 172.16.100.225

Ahora bien, vamos a intentar correr esto en frio con el enlace f0/1 caido en RTR-1:

1) El host 10.1.0.100 envia un paquete a la red 192.168.1.0
2) El paquete lo recibe RTR-2 por la interfaz F0/0
3) La politica es aplicada según el route-map CARRIER. El route-map sabe que no puede ser alcanzado el IP 172.16.100.225 gracias a los comandos SLA previamente configurados (el router cada 3 segundos verifica si puede hacerle ping a este IP).
4) El route-map CARRIER identifica la red origen 10.1.0.100 y coloca como next-hop el IP 10.0.0.1

Verificacion
1) Traceroute desde las redes pertinentes
2) #show track 2
3) #show track 3

NAT en Cisco. 2 ISPs diferentes

Necesidad: 
  Tener un enlace primario y un enlace secundario en un mismo router con dos proveedores a Internet diferentes. 

Escenario(abajo la configuración detallada y explicada): 
 Router Cisco 1760 donde: 
Interfaz Fastethernet0/0 LAN (IP 172.20.0.1) 
Internaz Serial1/0.1 ISP Primario (IP 10.0.0.58) 
Internaz Serial0/0.1 ISP Secundario (IP 10.1.1.58) 


  Diagrama:
Procedimiento: 
Primero es necesario configurar unas rutinas en el router que se van a encargar de monitorear las interfaces WAN. 

ip sla monitor 1 (deseo monitorar el next-hop del enlace del ISP primario) 
type echo protocol ipIcmpEcho 10.0.0.57 source-interface Serial1/0.1 timeout 1000 threshold 400 frequency 3 ip sla monitor schedule 1 life forever start-time now (esta linea es para activar realmente el monitoreo) 

ip sla monitor 2 (deseo monitorar el next-hop del enlace del ISP secundario) type echo protocol ipIcmpEcho 10.1.1.57 source-interface Serial0/1.1 timeout 2000 threshold 1000 frequency 3 ip sla monitor schedule 2 life forever start-time now (esta linea es para activar realmente el monitoreo) ! 

Con las lineas arribas indicadas lo que se hace es monitorear si el next hop en el enlace WAN esta levantado. 

Por ejemplo en el primer caso se hace ping (ipIcmpEcho) al IP 10.0.0.57, con un timeout de 2000 ms, un umbral de 1000 ms cada 3 segundos. Posteriormente es necesario habilitar los comandos track en Cisco. Estos son muy utiles para conocer luego el estado de los SLA previamente configurados. Los comandos son: track 123 rtr 1 reachability delay down 15 up 10 ! track 345 rtr 2 reachability delay down 15 up 10 ! El truco se encuentra en el NAT (tanto asi que lo anterior se puede hacer con rutas flotantes, sin embargo de la manera implementada es la mejor practica). 
El NAT debe ser realizado en base a route-maps (no lo intentes de otra manera). Las lineas que personalmente utilice fueron: 

ip nat pool POOL-MINAT 200.30.30.30 200.30.30.30 prefix-length 29 
ip nat inside source route-map ISP-1 pool POOL-MINAT overload 
ip nat inside source route-map ISP-2 interface Serial0/1.1 overload 
access-list 150 remark PARA-NAT 
access-list 150 permit ip 172.20.0.0 0.0.0.255 any 
route-map ISP-1 permit 5 
 match ip address 150 
  match interface Serial1/0.1 
route-map ISP-2 permit 5 
  match ip address 150
  match interface Serial0/1.1 

En el ejemplo anterior vemos que el NAT es en base a los route-maps ISP-1 e ISP-2, el ACL a utilizar es el 150 extendido donde estamos nateando toda la red 172.20.0.0/24 Cuando los paquetes salgan por el ISP-1 saldran nateados con el IP 200.30.30.30 y cuando salgan con el ISP-2 saldran con el IP de la interfaz WAN. Logicamente puedes ajustar esto a tu necesidad. 
 Ahora bien, la ruta de los paquetes de salida son definidas con la siguiente configuracion: 

ip route 0.0.0.0 0.0.0.0 Serial1/0.1 track 123 
ip route 0.0.0.0 0.0.0.0 Serial0/1.1 track 345 

 La ruta por default es la interfaz s1/0.1 cuando el IP 10.0.0.57 se encuentre UP, en caso de que se caiga la interfaz y/o el ping al IP 10.0.0.57 NO sea satisfactorio se utilizara la ruta por la interfaz S0/1.1 (enlace secundario) 


Verificacion: 

1760-WAN#sh track 123 
Track 123 Response Time Reporter 1 reachability Reachability is Up 33 changes, last change 08:27:17 Delay up 10 secs, down 15 secs Latest operation return code: OK Latest RTT (millisecs) 11 

1760-WAN#sh track 345 
Track 345 Response Time Reporter 2 reachability Reachability is Up 36 changes, last change 3d01h Delay up 10 secs, down 15 secs Latest operation return code: OK Latest RTT (millisecs) 8 1760-WAN


#sh ip nat t [OUTPUT SUPRESSED] 


 Espero haya sido de tu ayuda, Suerte!,


pdf to word

viernes, 5 de junio de 2009

Tips de Seguridad para Linux

A la hora de instalar un Servidor en Linux, el paso del tiempo me ha dado ciertas experiencia a la hora de ajustar politicas de seguridad. Muchas de ellas van a ayudar a que nuestro servidor se encuentre mas seguro.

A continuacion, comparto varias de las politicas que siempre mantengo en mente a la hora de configurar un servidor.

Siempre despues de instalar un servidor, aprovecho para hacer estos cambios.

1) Con el comando chkconfig, elimino los siguientes daemons:
ppp, bind9 ( a menos que sea un servidor DNS), lwresd, portmap, exim4, netatalk, samba, fam, nfs-common, atd, apache2.

E inclusive, sino son necesarios, los elimino

2) Me aseguro de que el siguiente parametro este en el archivo /etc/security/limits.conf

* hard core 0

3) Asegurarse tambien de que las siguientes lineas esten en el archivo /etc/pam.d/login

session required /lib/security/pam_limits.so

4) Comento la siguiente linea en el archivo /etc/inittab

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

ejm:

#ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

5) Las claves deben de expirar cada 90 dias, esto se hace editando el siguiente parametro en /etc/logins.def

MASS_MAX_DAYS 90

6) Elimino las siguientes cuentas (/etc/passwd, /etc/shadow)

games, lp, news, uucp, proxy, irc, gnats, list


7)Cambio el shell por defecto de los siguientes usuarios a /bin/false
bin, daemon, mail, nobody, sync, sys

8) Elimino cualquier informacion que contengan los archivos

/etc/issue
/etc/issue.net

9)Todo los ejecutables que tenga el setuid y setgid, por defecto, ninguno puede ser escrito por el grupo "others"

find / -perm -4000 -exec ls -l {} \;
find / -perm -2000 -exec ls -l {} \;

Ejm
-rwsr-xr-x 1 root root 31640 2008-11-22 11:01 /usr/bin/passwd
||



9) Modifico el parametro a continuacion en el archivo /etc/login.defs:

LOGIN_RETRIES 3

( crear el archivo /var/log/faillog para grabar todo los intentos de acceso)

10) Editamos el archivo /etc/pam.d/common-password y nos aseguramos de que la opcion min=8 este en la configuracion de pam_unix


Estos tips van a ayudar de cierta manera a asegurar el servidor, mas adelante, colocare unas herramientas que van a ayudarnos a realizar tareas sobre el sistema y verificar la integridad del mismo.

domingo, 24 de mayo de 2009

Recuperar clave. Linksys WRT-54G

Buenas,
Hoy tuve la necesidad de recuperar el password de un router (access point) Linksys modelo WRT54G y luego de revisar varias páginas les indico el procedimiento:

1) Apagar el router
2) Desconectar cualquier cable en los puertos 1-4 y WAN
3) Prende el router
4) Presiona el botón reset en la parte trasera por 30 segundos. Los leds de adelante titilaran (wlan led). Luego espera que el router se inicie por completo (max 2 minutos)
5) Apaga el router
6) Conecta un PC/Laptop al puerto 1 (NO al puerto WAN)
7) Coloca a tu PC/Laptop el IP: 192.168.1.2 Mask: 255.255.255.0
7) Prende el router. Espera 2 Minutos
8) Listo!.., realiza un ping al IP: 192.168.1.1 y debe funcionar.
9) Abre un navegador y apunta el mismo al IP: http://192.168.1.1 te va a pedir usuario y contraseña.

Por defecto el equipo no tiene usuario (dejalo en blanco) y la clave es admin

Como recomendación cambia el channel 6 con el cual viene por defecto la mayoría de los APs. En esta frecuencia seguramente existiran otros APs (sobre todo si vives en un edificio!!) y lamentablemente entre los mismos se crea algún tipo de interferencia. Del lado del cliente nunca es necesario cambiar nada. Realizar este cambio es sencillo y te trae varios beneficios. Por favor utiliza los channel 10 u 11 y con cifrado WPA (NUNCA WEP)

Si quieres ver en que frecuencia se encuentran trabajando los APs en tu zona, en linux puedes utilizar el siguiente comando:

#iwlist wlan0 scan
(donde wlan0 es la interfaz wireless)

o algo más sencillo y ves la "competencia":
#iwlist wlan0 scan | grep Channel


Suerte.

miércoles, 20 de mayo de 2009

Capturar más de 68 o 96 bytes con tcpdump

Varias veces he tenido la necesidad de capturar y luego analizar más de la información que guarda tcpdump por defecto (con la opción -w) luego de guardarla en un archivo.

TCPDUMP generalmente solo captura 96 bytes del paquete que viaja en el el cable, este valor por lo general es suficiente para analizar ethernet, ip, tcp/udp, icmp. Sin embargo, por ejemplo el contenido de un paquete grane HTTP imposible.

Por ello, en caso de tener la limitante antes mencionada la solución es el flag -s:

Ejemplo de captura por defecto:

tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes


0 packets captured
0 packets received by filter
0 packets dropped by kernel

Ejemplo de captura de todo el paquete en el cable:



[root@localhost tmp]# tcpdump -s 0
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C

Notese el flag -s en el pase de parametros para tcpdump. Otros flags importantes:

* port
* host
* dst port
* src port
* dst host
* src host
* -w file

y es muy importante recordar que se puede contruir expresiones como las siguientes:

#tcpdump -s 0 dst port 23 and host 1.1.1.1 -w sniff.dump

Con el ejemplo anterior veremos que solo capturará paquetes donde el puerto destino sea 23 y contenga (origen o destino) el host 1.1.1.1

No voy a indicar más ejemplos porque la red se encuentra llena de ejemplos de tcpdump.

Suerte!

martes, 19 de mayo de 2009

Como recuperar el password de un AP TP-LINK

Hola,
El otro dia tuve la necesidad de recuperar el password de un equipo Access Point TP-LINK y dure muchisimo en buscar una pagina que tuviese un procedimiento efectivo para recuperar la clave del equipo.
En este sentido, les dejo un procedimiento que funciona perfecto en un TP-LINK en los modelos: TL-WR641G / TL-WR642G

a) Apagar el equipo
b) Presionar el boton reset
c) Prender el equipo con el boton reset presionado
d) Dejarlo por 10 segundos
e) admin/admin son los default login/password

Suerte,

martes, 12 de mayo de 2009

Calidad de servicio en Asterisk. VoIP

Buenas,
En estos dias necesitaba implementar Calidad de Servicio en una red de VoIP y quería asegurar que la misma fuese óptima.
En este sentido, primero voy a mencionar unos pocos detalles que hay que considerar:

* Tener SIEMPRE redes separadas de Voz y de Datos. Es decir, colocar datos en una VLAN y Voz en otra VLAN. Para ello se recomienda tener LAN Switchs administrables. La experiencia me indica que enseguida se mezclan los paquetes de Voz y Datos, la voz se deteriora inmediatamente.

* Tener teléfonos de calidad. Yo siempre utilizo Polycom y Cisco, sin embargo, SNOM y Linksys son muy buenos. No recomiendo Grandstream

* En enlaces WAN manejar siempre QoS. Cisco tiene muchas maneras de realizar esto. Posteriormente en otro post colocaré una configuración ejemplo de QoS con Cisco sobre Frame Relay.

Ahora bien, en el Asterisk te recomiendo el siguiente extracto de código en /etc/sip.conf:

tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.

y en el teléfono Polycom (en el archivo sip.conf) colocar el siguiente extracto de código



Luego de ello pudieses utilizar wireshark o tcpdump y ver como quedan marcados los paquetes salientes del Asterisk y del Polycom. Revisa el campo DSCP en el datagrama IP.

Suerte!

Traido gracias a http://www.fenixone.com

viernes, 8 de mayo de 2009

Upgrade de Screen OS en Netscreen/Juniper

El siguiente comentario fue algo que me ha sucedido dos veces con diferentes firewalls Juniper 5GT que necesitaba realizar el upgrade del sistema operativo (ScreenOS).

Tenía que realizar un upgrade de 5.2.0r1.0 a 5.4 y sencillamente el firewall a través de la interfaz Web no me dejaba subirla siempre devolviendo un error en la imagen.

La solución para lo anterior fue primero realizar un upgrade de 5.2 a 5.3 y luego a screenos 5.4. Voila!.., funcionó perfecto.

Luego, tuve la misma situación pero necesitaba hacer el upgrade de una versión 4.x a 5.x..., nuevamente hice un upgrade "poco a poco" y funcionó.

La moraleja es que no se puede cambiar de imagen a otra imagen de manera muy radical, es recomendable realizar el upgrade prudencialmente

Espero te ayude.

jueves, 7 de mayo de 2009

Integrar Blogspot con Google Analytics

Debido al crecimiento moderado que ha tenido el presente blog se me ocurrió añadir/integrar las estadisticas de google analytics a mi blog.
Cual fue mi sorpresa cuando al momento de la integración Google Analytics te solicita la inserción de cierto código sobre la directiva body del la página html.
Luego de buscar dentro de mi cuenta de blogspot no conseguí como hacer eso :-(

Finalmente, después de navegar en la red conseguí esta solución y funciona perfecto. Este es el procedimiento:

a) Entra en google analytics con tu cuenta
b) Obten el código html a ser insertado en la(s) páginas Web
c) Luego entra en tu cuenta de blogspot
d) Click en Diseño
e) Seleccionar "Edición de HTML"
f) Copiar y pegar el código de google analytics exactamente entre los tags final de body y del final de html

Por último, para probar si esta funcionando entra en: http://google.com/analytics/ y revisa si se encuentra recogiendo información. Recomiendo que esperes al menos un día para ver si efectivamente se encuentra funcionando.

Por el momento me encuentro averiguando una manera sencilla de redactar copy/paste código html/xml y que luego se muestre correctamente en el blog.

Suerte,

lunes, 4 de mayo de 2009

Listado de directorio en Apache

El día de hoy tuve la necesidad de que mi servidor Apache listara el contenido de los archivos y carpetas de un directorio. Es decir, por ejemplo, que al entrar a:
http://miservidor.com/mi/directorio/quedeseo/listar/ apareciera el listado del contenido.

Hay muchas maneras de lograr lo anterior. Te voy a dar el siguiente ejemplo y luego tu puedes colocarlo como quieras (en un .htaccess, virtualhost, global, etc).


Options indexes


Luego reinicias el apache como service httpd restart o /etc/init.d

En el ejemplo anterior, cuando entren a http://miservidor.com/mi/directorio/quedeseo/listar/ veran el contenido de la carpeta. OJO, en dicho directorio no puede haber ningún archivo index.html o index.php.

Suponiendo que en algún momento deseas revertir el comportamiento, puedes hacerlo de la siguiente manera:



Options -Indexes


Con el ejemplo anterior NO será listo el contenido de la carpeta.

Por último, recomiendo que tengas en httpd.conf el ServerSignature Off como pequeña medida de seguridad. El ServerSignature es información del Apache que será incluida en páginas auto-generadas por el Apache (como el listado, errores, etc), esta información puede ser de utilidad para un hacker.

Att.

Alejandro

domingo, 3 de mayo de 2009

Windows XP como Access Point wireless

Hace un par de dias se dano el Access Point de mi casa y en realidad los dias fueron horribles. Tuve que regresar a estar atado a un punto fijo en la pared de mi casa!. Sentia que yo no era productivo, que perdia tiempo, etc. Y no hablar de los comentarios de mi esposa: "En casa de herrero cuchillo de palo", y cosas similares.

En mi afan de solucionar y gracias a que tenemos varios computadores en la casa, decidi probar en colocar mi Linux como AP y para mi sorpresa: SI se puede!.., wow, muy buena noticia. La mala noticia es que la tarjeta de red que tengo (Broadcom 43XX) no soporte colocarla en modo master (iwconfig wlan0 mode master).

En fin averiguando en Internet consegui una solucion poco elegante pero que al menos iba a funcionar momentaneamente. Colocar un Windows XP en modo ad-hoc y cableado hacia la red Banda Ancha. Voila!.., funciono.

El procedimiento es el siguiente:

1) Coloca como direccion IP de tu red Wireless el IP: 192.168.0.1 (no puedes utilizar otro IP)

2) Instala un DHCP server si quieres que los equipos Wireless se conecten facil a tu red. Recomiendo http://tftpd32.jounin.net/ (que tambien recomiendo como TFTP server). Asegurate que el DHCP se encuentre entregando IPs por la interfaz Wireless. Seria algo similar a:




3) Luego en la interfaz de redes Wireless, realiza lo siguiente:
* Crea una nueva red con el nombre que desees. Por ejemplo Acosta
* Asegura dejar la autenticacion Abierta y el cifrado Sin cifrar
* Finalmente, asegurate de marcar el check box que indica Ad-HOC al final de la panatalla.

Nota: En este momento ya puedes ir a otro PC y buscar redes Wireless y ver tu red listada.

4) Click en Inicio --> Conectar a --> Mostrar todas las conexiones

5) Click derecho sobre la conexion cableada --> Propiedades --> Avanzada --> Permitir otras computadoras a utilizar esta conexion. Quedaria algo asi:




6) Aceptar --> Aceptar



Y eso es todo. Busca el otro equipo con el que te quieres conectar Wireless y disfrute de tu nuevo AP.

sábado, 2 de mayo de 2009

Crear un tunel IPv6 in IPv4 entre Cisco y Linux

Tengo la fortuna de trabajar para un ISP con IPv6 implementado. Voy a explicar el procedimiento para levantar un tunel IPv4 para pasar paquetes IPv6 entre un router Cisco y un PC con Linux.

Topologia:

PC Linux (2820:26:11::/64) ------ RED IPv4 (ISP) ----- Cisco router (Ipv4 e IPv6) ---- RED IPv6

Comenzaremos configurando el Cisco:

Es necesario crear una interfaz tunnel similar a la siguiente:

interface Tunnel0
description Tunel hacia mi casa
no ip address
ipv6 address 2820:26:10::1/64
ipv6 enable
tunnel source 210.57.51.107
tunnel destination 211.28.235.85
tunnel mode ipv6ip
end

ipv6 route 2820:26:11::/64 Tunnel0

Explicacion:
En la configuracion anterior se aprecia que hay que indicarle la direccion IPv4 fuente, la direccion IPv6 destino y una direccion IPv6 al tunel. El modo del tunel es lo mas importante el cual indica que son paquetes ipv6 en ipv4. Recordemos que Cisco soporta muchos tipos de tunel y recomiendo ser explicito. Adicionalmente el modo del tunel concuerda con el tipo de tunel que vamos a utilizar en Linux (modo sit). Notese que la direccion IPv4 origen del tunel puede ser cualquier IPv4 configurado en el router (una loopback, otra interfaz, etc).
Por ultimo, el comando ipv6 route indica la red que va a manejarse del lado del linux. Muy importante para que exista conectividad y enrutamiento dentro del tunel.

A configurar el linux:

Del lado del Linux es mas facil de lo que uno esperaria. Estos son los comandos utilizados por mi persona:

ifconfig eth0 add 2820:26:11::1/64
ifconfig sit0 tunnel ::210.147.51.107
ifconfig sit1 up
route -A inet6 add ::0/ dev sit1
ping6 2820:26:10::1

Explicacion:
El primer comando le indica la red IPv6 a la interfaz eth0.
El segundo comando indica la interfaz sit (modo ipv6 en ipv4) y el IPv4 donde va a terminar el tunel. El comando route indica la ruta por defecto para que sea enviado por la interfaz sit 1.

Luego de esto, estamos listos para probar la conexion. Primero, vamos a ubicarnos del lado del Linux:

Lo primero es realizar un ping al IPv6 del tunel
[root@localhost ~]# ping6 2800:26:10::1 -c 4
PING 2800:26:10::1(2800:26:10::1) 56 data bytes
64 bytes from 2820:26:10::1: icmp_seq=1 ttl=64 time=153 ms
64 bytes from 2820:26:10::1: icmp_seq=2 ttl=64 time=154 ms
64 bytes from 2820:26:10::1: icmp_seq=3 ttl=64 time=153 ms
64 bytes from 2820:26:10::1: icmp_seq=4 ttl=64 time=152 ms

Luego un ping6 a ipv6.google.com:
[root@localhost ~]# ping6 ipv6.google.com -c 4
PING ipv6.google.com(qw-in-x68.google.com) 56 data bytes
64 bytes from qw-in-x68.google.com: icmp_seq=1 ttl=55 time=232 ms
64 bytes from qw-in-x68.google.com: icmp_seq=2 ttl=55 time=229 ms
64 bytes from qw-in-x68.google.com: icmp_seq=3 ttl=55 time=230 ms
64 bytes from qw-in-x68.google.com: icmp_seq=4 ttl=55 time=231 ms

Tambien recomiendo hacer traceroute y el primer salto que veras es el IPv6 del Cisco.

Ahora bien, del lado del Cisco podemos ver la cantidad de paquetes que han transitado por la interfaz tunel y comprobar el incrementos de paquetes:

#sh int tunne0
Linkstar_PBR#sh int tunnel 0
Tunnel0 is up, line protocol is up
Hardware is Tunnel
Description: Tunel a mi casa
MTU 1514 bytes, BW 9 Kbit, DLY 500000 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation TUNNEL, loopback not set
Keepalive not set
Tunnel source 210.147.51.107, destination 211.28.235.85
Tunnel protocol/transport IPv6/IP
Tunnel TTL 255
Fast tunneling enabled
Tunnel transmit bandwidth 8000 (kbps)
Tunnel receive bandwidth 8000 (kbps)
Last input 00:00:07, output 00:00:06, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 0
Queueing strategy: fifo
Output queue: 0/0 (size/max)
5 minute input rate 0 bits/sec, 0 packets/sec
5 minute output rate 0 bits/sec, 0 packets/sec
19 packets input, 2736 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
51 packets output, 5540 bytes, 0 underruns
0 output errors, 0 collisions, 0 interface resets
0 output buffer failures, 0 output buffers swapped out

En otra oportunidad indicare como hacer que toda tu red navegue en IPv6 dentro del Tunel.

Suerte y exitos,

viernes, 1 de mayo de 2009

Instalar Mandriva sin unidad de CD

En esta oportunidad voy a explicar el procedimiento de instalacion de Linux Mandriva en un equipo sin utilizar unidad de CDROM. En dos oportunidades me ha ocurrido que necesidad de cambiar el Mandriva de mi Laptop sin embargo no tengo el CD de instalacion a la mano y no quiero ir a un sitio a comprar un CD en blanco y luego quemar el iso.

El procedimiento indicado aqui es un extracto, adaptacion y traduccion de una excelente referencia que consegui en: http://wiki.mandriva.com/en/Docs/Installing_Mandriva_Linux#Booting_the_installer_direct_from_a_hard_disk_-_Linux_method

Por ello la siguiente explicacion:

Primero, en el linux actual bajar el ISO de mandriva de cualquier repositorio en Internet. Por favor bajarlo en una particion que durante la instalacion no sea necesario formatear (por ejemplo NO bajarlo en /). Adicionalmente debes recordar el directorio donde lo bajaste y a que particion pertenece (sda3, hda2, etc)

Posteriormente es necesario extraer dos archivos del iso bajado, para ello es necesario montar el iso como loop. El comando es similar al siguiente:

mkdir /mnt/iso
mount -t iso9660 -o ro,loop /home/mandriva2009.iso /mnt/iso

Luego vamos a copiar al directorio /boot los siguientes archivos. Personalmente prefiero cambiar el nombre durante la copia:

cp /mnt/iso/x86_64/isolinux/alt0/allnew.rdz /boot/allnew.rdz
cp /mnt/iso/x86_64/isolinux/alt0/vmlinuz /boot/vmlinuznew

Es importante que identifiques correctamente tu arquitectura (i586 o x64).

Posteriormente es necesario indicarle a tu boot-loader (grub o lilo) la existencia de dichos archivos. En mi caso quedo de la siguiente manera utilizando grub:

title mandriva2009
kernel (hd0,0)/boot/vmlinuznew root=/dev/ram3 ramdisk_size=32000 vga=791
initrd (hd0,0)/boot/allnew.rdz

Para prevenir cualquier error recomiendo que utilicen una entrada ya existente y te bases en ella unicamente cambiando los nombre de kernel e initrd.

Voila!.., reinicia tu equipo y escoje mandriva2009 al momento del arranque y sigue el procedimiento de instalacion.

Suerte!.

martes, 28 de abril de 2009

Ejemplo VPN entre Juniper y Cisco

El siguiente ejemplo muestra la creación de una VPN entre un Firewall Juniper con ScreenOS 5.4 y un Cisco router con el set de Crypto.

La topología es la siguiente:

LAN_lado_Juniper <----> Juniper <---- INTERNET <---> Cisco <--- LAN_lado_Cisco --->

Del lado del Cisco la configuración es la siguiente:

*** BEGIN ***
crypto isakmp policy 1
encr 3des
authentication pre-share
group 2
crypto isakmp key MISECRETO address IP_JUNIPER


crypto map MIVPN 1 ipsec-isakmp
set peer IP_REMOTO
set transform-set MIVPN
match address 140

access-list 140 permit ip LAN_LADO_CISCO 0.0.0.255 LAN_LADO_JUNIPER
crypto ipsec transform-set VPN_to_SW7B esp-3des esp-sha-hmac

interface f0/0
description VPN-SUICHE7B
ip address IP_CISCO 255.255.255.255
crypto map MIVPN
end

*** FIN ***

Aqui podemos ver que el isakmp map utiliza shared secret (clave compartida) para levantar la VPN, MISECRETO es la clave y donde indica IP_JUNIPER hay que colocar el IP del Firewall de la interfaz externa del Juniper.

Luego el Crytp map llamada MIVPN indica el Peer Remoto (nuevamente el IP de la interfaz externa del Juniper, el transform set a utilizar (donde se indica lo que es la fase 2 de la negociación de la VPN) y finalmente el Access-list (ACL con el cual va a hacer match al momento de cifrar y no cifrar los paquetes).

El ACL en realidad define los SA (security association) que se van a intercambiar en la VPN. Es muy importante que utilices un ACL extendido para que puedas definir IPs origen y destino. Es decir, aqui se definen (desde la perspectiva del cisco) cuales son las redes remotas y cuales son las redes locales.

Luego el comando crypto ipsec es en realiad quien define que tipo de cifrado y hash para los datos se va a utilizar. En este caso 3DES y SHA1, sin embargo se puede utilizar DES, MD5, combinaciones y otros.

Finalmente, lo que hay que hacer es aplicar el cryto map a la interfaz por donde va a "transitar" el tráfico en el Cisco, en nuestro caso F0/0

Con lo anterior, ya terminamos con el lado del Cisco...., ahora vamos a Juniper.

Pasos:

1) Crear una interfaz tunnel (tunnel -- interfaces --- new interface) con los siguientes parametros:
* Unnumbered
* Interfaz WAN del Juniper
2) VPN --> Autokey advance --- Gateway
3) New

Debemos dejar la configuración como aparece en la siguiente pantalla:



4) Click en Advance
5) Dejar la configuración como aparece en la siguiente pantalla:



6) VPN --> Autokey advance --- Gateway

7) Click en new

8) Dejar la configuración similar a como aparece en la imagen:



9) Click en advance

10) Dejar la configuración como a aparece en la imagen:



11) Comenzar a pasar tráfico por el tunel (MUY IMPORTANTE)

Luego de esto.., ya debe comenzar a funcionar el tunel sin inconvenientes. La típica prueba en este caso es dejar un ping extendido entre ambos sitios.

Suerte y saludos,

BGP en IPv6 y Cisco

Configurar BGP sobre IPv6 en Cisco es parecido a IPv4.
En realidad los principios son los mismos de IPv4 tales como:
* Debe existir una ruta en la tabla de enrutamieto para que sea publicada vía BGP
* Hay que crear el peering con el equipo remoto
* Colocar filtros correspondiente tales como filtros entrantes y salientes

Antes de crear la sesión BGP hay que conocer:
* Dirección IPv6 local
* Subred IPv6 a publicar
* Dirección IPv6 remota
* Password (opcional)

Un ejemplo de configuración de BGP sobre IPv6 sería:

router bgp 65501
bgp log-neighbor-changes
neighbor 2820:22:1:1::1 remote-as 1111
neighbor 2820:22:1:1::1 update-source POS3/0
!
address-family ipv6
neighbor 2820:22:3:1::1 activate
network 2820:26::/32

En caso de querer levantar sobre el mismo enlace una sesión BGP en IPv4 es necesario también el siguiente comando:

address-family ipv4
neighbor 2820:22:3:1::1 activate

Comandos utiles para troubleshooting:

1) sh bgp ipv6 unicast (vemos los prefijos ipv6 aprendidos por BGP)
2) sh bgp ipv6 unicast neighbors 2820:22:3:1::1 advertised-routes (prefijos IPv6 que nosotros publicamos al peer)
3) show ipv6 route

Suerte!

jueves, 23 de abril de 2009

IPv6 y Apache

En esta oportunidad indicaré como se configura Apache con soporte para IPv6.
La buena noticia es que a partir de Apache 2.0 el soporte IPv6 viene intrinsico dentro de Apache y en realidad no hay que hacer nada.
Debajo de estas lineas encontraras una configuración que funciona perfectamente en un servidor dualstack ipv4/ipv6 y que adicionalmente posee los comandos ErrorLog y CustomLog para un virtualhosting en IPv6. La ventaja de esta configuración es que permite dentro del mismo servidor separar los logs ipv6 de los ipv6.

La configuración es la siguiente:





Posteriormente reinicias Apache (service httpd restart o /etc/init.d/apache restart) y listo!.

Ahora bien, para revisar que efectivamente tu servidor se encuentre escuchando en el puerto 80 tcp ejecuta los siguientes comandos:

#netstat -pan | grep 80
y
#telnet ::1 80

Con el primer comando puedes ver si tu servidor se encuentra escuchando en IPv6 en el puerto 80. Busca un string similar a:
tcp 0 0 :::80 :::* LISTEN 24972/httpd

y con el segundo comando puedes revisar que efectivamente el puerto 80 responda. El output sería similar al siguiente:

[root@www ~]# telnet ::1 80
Trying ::1...
Connected to ::1 (::1).
Escape character is '^]'.


Saludos,

martes, 21 de abril de 2009

Actualizar el bootrom de un telefono Polycom

En día de hoy tuve la necesidad de actualizar el bootrom de un telefono Polycom. Este es el procedimiento:

* Bajar el software necesario de: http://polycom.com/support/voice/soundpoint_ip/soundpoint_ip501.html

* Colocar el archivo bootrom.ld en el servidor de provisioning

* Reiniciar el teléfono.
El teléfono detectará la nueva versión y realizará el proceso de manera automática. Verás varias pantallas como: formateando el filesystem, reiniciando, etc. No te preocupes
Mi recomendación: utiliza primero solo un teléfono antes de realizarlo con toda la red.

* Listo!.., verifica la version dentro del menú del teléfono.

Suerte!.

Probar IPv6

Tradicionalmente suelo escribir mis experiencias con IPv6 por ello en esta oportunidad voy a comentar tres pequeños TIPs:

* Cuando quieras probar si estas navegando con IPv6 te recomiendo:

- Visitar http://www.ipv6tf.org. En esta página puedes ver con cual dirección IPv6 te encuentras navegando. En caso negativo, la página te mostrará tu dirección IPv4

- Visitar http://www.whatismyipv6.co. En esta página puedes ver con cual dirección IPv6 te encuentras navegando. En caso negativo, la página te mostrará tu dirección IPv4

- Abril la página web de IPv6 de google: http://ipv6.google.com. Esta página solo funciona en IPv6, es imposible utilizarla desde una dirección IPv4

- Realizar ping6 a ipv6.google.com, nuevamente esta dirección solo resuelve en IPv6.



Suerte!

lunes, 13 de abril de 2009

Linksys WRT-54GL y Linux

El otro día conversando con un amigo nos encontrabamos hablando de Linux y redes Wireless, especificamente un Access Point Linksys. Si todavía deseas quedarte con tu Firmware original, te indico varias razones para que lo reconsideres.

Con DD-WRT puedes contar con: VPN, QoS, NAT, Firewall SPI (Stateful Packet Inspection), bloqueo de URLs, colocación de scripts, DMZs, MZs y mucho más.

Entre otras cosas incluso puedes decirle a la caja con cual antena transmita y porque antena reciba. Puedes incluso crear varios SSIDs!. Esto es muy bueno para redes Wireless donde también quieres manejar telefonía IP. En estas situaciones puedes levantar un SSID donde se se encuentre tu red de datos y otro SSID para tu red de Voz...., añade QoS y listo!.., una excelente red wireless.

No voy a entrar en detalle de como utilizar e instalar DD-WRT porque Internet se encuentra inundado de esta información. Te dejo los links principales al respecto:

* http://www.dd-wrt.com/dd-wrtv3/index.php
* http://www.dd-wrt.com/wiki/index.php?title=Espanol
* http://www.dd-wrt.com/dd-wrtv3/dd-wrt/downloads.html

Ojo, DD-WRT se encuentra soportado en muchas otras Cajas
En base a lo anterior imagina una caja de menos de US$ 100 que hago todo esto?. Eres capaz de mencionar otra?

Suerte!

BGP Stream: un año de análisis sobre incidentes BGP

BGP Stream: un año de análisis sobre incidentes BGP 04/03/2024 Por  Alejandro Acosta , Coordinador de I+D en LACNIC LACNIC presenta  la prim...