domingo, 24 de abril de 2011

m0n0wall y PfSense en el Nortel Convity 100





En este post voy a detallar paso a paso la instalacion de un Router/Firewall en el switch Nortel Convity 100 usando las distribuciones pfSense y m0n0wall.


Que son  M0n0wall y pfSense?




      



Son distribuciones  derivadas de FreeBSD las cuales se enfocan para su uso como Firewall y Router. Se caracteriza por ser de código abierto, puede ser instaladas en una gran variedad de ordenadores, y además cuentan con una interfaz web sencilla para su configuración.

m0n0wall es un potente firewall que se caracteriza por ocupar poco espacio en el disco (entre 7 MB y 12 MB dependiendo de la plataforma)  implementa un completo firewall con una interfaz de sencillo manejo (basada en un servidor web con soporte PHP). Estas son algunas de sus caracteristicas:

  • web interface (supports SSL)
  • serial console
    • set LAN IP address
    • reset password
    • restore factory defaults
    • reboot system
  • wireless support (including access point mode)
  • captive portal
  • 802.1Q VLAN support
  • IPv6 support
  • stateful packet filtering
    • block/pass rules
    • logging
  • NAT/PAT (including 1:1)
  • DHCP client, PPPoE and PPTP support on the WAN interface
  • IPsec VPN tunnels (IKE; with support for hardware crypto cards, mobile clients and certificates)
  • PPTP VPN (with RADIUS server support)
  • static routes
  • DHCP server and relay
  • caching DNS forwarder
  • DynDNS client and RFC 2136 DNS updater
  • SNMP agent
  • traffic shaper
  • SVG-based traffic grapher
  • firmware upgrade through the web browser
  • Wake on LAN client
  • configuration backup/restore
  • host/network aliases

pfSense es una distribución basada en FreeBSD, derivada de m0n0wall. Su objetivo es tener un cortafuegos (firewall) fácilmente configurable a través de una interface web e instalable en cualquier PC, incluyendo los miniPC de una sola tarjeta.
Se trata, por tanto, de una solución muy completa, bajo licencia BSD y, por tanto, de libre distribución.El cortafuegos forma parte del Kernel del sistema. De hecho, se trata del Packet Filter (PF) originario de OpenBSD, considerado com el sistema operativo más seguro del mundo. Packet Filter (PF) está presente como estándar en FreeBSD desde noviembre de 2004. Incluye funcionalidades como el regulador de caudal ALTQ, que permite asignar prioridades por tipo de tráfico.Todo ello da una gran flexibilidad a la solución pfSense, ya que se puede montar tanto en equipos miniPC (basados en una sola placa) que emplean como disco una Compact Flash como en PC estándar con disco duro. En este último caso se pueden añadir paquetes como Snort, Squid, Radius, etc.

Caracteristicas:

  • Firewall
  • State Table
  • NAT
  • Redundancy
  • CARP - CARP from OpenBSD allows for hardware failover. Two or more firewalls can be configured as a failover group. If one interface fails on the primary or the primary goes offline entirely, the secondary becomes active. pfSense also includes configuration synchronization capabilities where changes made to the primary firewall will automatically synchronize to the secondary firewall.
  • pfsync - pfsync ensures the firewall's state table is replicated to all failover configured firewalls. This means your existing connections will be maintained in the case of failure, which is important to prevent network disruptions.
  • Outbound and Inbound Load Balancing
  • VPN - IPsecOpenVPNPPTP
  • PPPoE Server
  • RRD Graphs Reporting
  • Real Time Information - Using AJAX
  • Dynamic DNS
  • Captive portal
  • DHCP Server and Relay
  • Live CD Version Available
  • Proxy server
  • VDSL-Router - Aufrüstung von pfSense zum High-Speed-Router.
  • Support for software extensions.
  • Squid proxy server and Snort intrusion prevention/detection system.
  • Squid Guard - a high-performance web proxy filter.
  • FreeRADIUS - a free implementation of the RADIUS protocol.
  • Zabbix Agent - a monioring agent.
  • FreeSWITCH - a scalable open source cross-platform telephony platform designed to route and interconnect popular communication protocols using audio, video, text or any other form of media.
  • FusionPBX project - an open source web based management interface for the very powerful and highly scalable voice switch called FreeSWITCH.
  • Siproxd - a proxy/masquerading daemon for the SIP protocol.
  • stunnel - designed to work as an SSL encryption wrapper between remote client and local (inetd-startable) or remote servers.
  • Darkstat - a network statistics gatherer. It's a packet sniffer that runs as a background process on a cable/DSL router, gathers all sorts of statistics about network usage, and serves them over HTTP.
  • Iperf - a tool for measuring maximum TCP and UDP bandwidth, reminiscent of ttcp and nettest. It has been written to overcome the shortcomings of those aging tools. Iperf can also test UDP bandwidth, loss, and jitter.
  • ntop - a network probe that shows network usage.
  • arping - a computer software tool that is used to discover hosts on a computer network.
  • DNS-server - a version of TinyDNS which features failover host support.


Ambas aplicaciones permite guardar toda la configuración del sistema en un único archivo XML que podemos salvar en un disco, pendrive o un simple diskette. Esta facilidad de almacenamiento de la configuración permite un rápido despliegue del sistema y rápidas migraciones de éste. 


Caracteristicas de Nortel Convity 100

procesador Via Cyrix MII-333  de 333 Mhz, soporta hasta  550 Mhz modificando el SW3
12 MB of RAM internas 
8MB o 16MB en la CF card.
fuente de poder ATX ,  
7 puertos 10/100 switch
2 puertos Ethernet independientes 10/100 Mbps 
un puerto serial 
chipset VIA





Pasos para realizar la instalación:

Antes que nada es necesario destapar el Switch para poder observar cada uno de sus componentes y realizar los cambios pertinentes, en mi caso he removido la CF card de 8MB y he conectado un disco duro de 6GB, he añadido 64 MB de RAM DIMM PC-100, he añadido una correa con puerto VGA en el J16 para poder observar el arranque en mi monitor, el Convity no arranca unidad de CD por defecto, solamente arranca los discos, tampoco me fue posible conectar Teclado o Mouse aunque en esta pagina dice que en J12 esta el teclado con el conector PS/2. 



MUY IMPORTANTE !

Es necesario desactivar el watchdog que trae activada la motherboard de lo contario el switch se reiniciará para ello es necesario quitar el puente del J14, en algunos casos viene un Jumper en otros un simple alambre que une dos puntos , para este ultimo caso por favor cortar el alambre cuidadosamente. 



                     En la imagen de arriba podemos localizar el J14  encerrado en el recuadro amarillo


Instalar m0n0wall:

descargar m0n0wall desde el siguiente link: 


Conectar el disco duro o CF Card en otro computador

Seguir los siguietes pasos segun el sistema operativo:
    • FreeBSD:
    • gzcat generic-pc-1.33.img | dd of=/dev/rad[n] bs=16k
      Donde n es el numero que identifica al disco

    • Linux:
    • gunzip -c generic-pc-1.33.img | dd of=/dev/hdX bs=16k
      Donde X es el numero que identifica al disco, en algunos casos puede ser sda, sdb etc... segun el tipo de disco IDE o SATA

    • Windows:
      (usar -u si el disco es mayor de 800 MB)
    • physdiskwrite [-u] generic-pc-1.33.img
      (usar la version 0.3 o superior!)

  • Conecte de nuevo el disco al Convity 100
  • conecte un computador al switch en algun puerto (LAN/WAN/...)
  • Encienda el switch
  • Verifique que el computador conectado al switch reciba una IP por medio del DHCP
  • ingrese a la interfaz grafica del switch por medio de la IP 192.168.1.1 desde su navegador
  • Ingrese (user: 'admin', default password: 'mono')
  • Haga los cambios y la configuracion que ud desee


Instalar pfSense:

descargar pfSense para sistemas embebidos desde el siguiente link: 


Conectar el disco duro o CF Card en otro computador

Seguir los siguietes pasos segun el sistema operativo:
    • FreeBSD:
    • gzcat pfSense-1.2.2-Embedded.img.gz | dd of=/dev/rad[n] bs=16k
      Donde n es el numero que identifica al disco

    • Linux:
    • gunzip -c pfSense-1.2.2-Embedded.img.gz | dd of=/dev/hdX bs=16k
      Donde X es el numero que identifica al disco, en algunos casos puede ser sda, sdb etc... segun el tipo de disco IDE o SATA

    • Windows:
      (usar -u si el disco es mayor de 800 MB)
    • physdiskwrite [-u] pfSense-1.2.2-Embedded.img.gz
      (usar la version 0.3 o superior!)
  • Conecte de nuevo el disco al Convity 100
  • conecte un computador al switch en algun puerto (LAN/WAN/...)
  • Encienda el switch
  • Verifique que el computador conectado al switch reciba una IP por medio del DHCP
  • ingrese a la interfaz grafica del switch por medio de la IP 192.168.1.1 desde su navegador
  • Ingrese (user: 'admin', default password: 'pfsense')
  • Haga los cambios y la configuracion que ud desee
Nota: se recomienda activar el servidor SSH para poder acceder a la consola de manera remota ya que el convity aparentemente no trae soporte para teclado.


viernes, 18 de marzo de 2011

LUBUNTU 10.10 RMX EDITION




Estaba buscando casi de forma obsesionada una distro que se comportara de manera decente en mi netbook MSI U-100, ya que habia tenido algunas experiencias con distintas versiones y sabores de Ubuntu,  derivadas como Linux-Mint, pero el el gran problema radicaba en el rendimiento, porque GNOME, KDE, XFCE eran interfaces demasiado pesadas pero al mismo tiempo no queria migrar a una distro que fuera diferente de Ubuntu porque esta ultima ofrece un entorno muy amigable para el uso orientado a escritorio y su variado repositorio de aplicaciones y fácil instalación la hace estar un paso mas adelante que las otras distros orientadas a equipos de escritorio, entonces he probado Lubuntu la cual es una distribucion derivada de Ubuntu pero su diferencia radica en su entorno de escritorio LXDE que es muy liviano y amigable, aunque siendo sincero no es tan bella esteticamente como las otras, pero me he topado por azar con la version LUBUNTU 10.10 RMX la cual viene tuneada con algunos iconos de estilo Faenza, un bar-dock muy liviano llamado Wbar, algunos codecs, y aplicaciones como dropbox, chromium, ubuntu-tweak,  Gnote para notas rapidas entre muchas otras , el resultado ha sido fantastico con una rapidez muy superior que se puede comparar con del Enlightenment. En estos momentos tengo instalada sobre mi netbook dos distros que son esta version de Lubuntu junto Jolicloud (ahora llamado JoliOS) de la que mas adelante les voy a hablar.

Dejo a continuación  algunos pantallazos del escritorio de mi netbook:




sábado, 5 de marzo de 2011

WAVEMON

Hace poco por casualidad me encontré con una herramienta llamada Wavemon  muy buena para medir la potencia de la señal de recepción y transmisión de dispositivos wireless, entre sus características podemos encontrar: 




  • La calidad del enlace inalámbrico
  • El nivel de la señal recibida
  • El nivel de interferencia en el entorno
  • La relación Señal/Ruido
  • Cantidad de información transmitida y recibida
  • La frecuencia de operación del canal
  • El cifrado de la conexión
  • Dirección IP y MAC de las interfaces tanto local como el dispositivo remoto al cual se esta asociado
  • La interface por donde se está conectado
  • El estandar ya sea 802.11 a/b/g/n
  • El ESSID
El manejo es simple: se indica en el momento de lanzar el programa qué interface va a usar por ejemplo:

wavemon -i wlan0 

Con las teclas de función accedemos a las distintas pantallas:

F1 Muestra la pantalla principal, con barras de progreso que indican la calidad de señal, nivel de ruido, nivel se señal, estadísticas (RX, TX), modo, punto de acceso, bitrate, encriptación, nuestro interface,
nuestra MAC, address, netmask y bcast.
F2 Muestra un histograma con el nivel de señal, nivel de ruido y relación señal/ruido de la conexión.
F3 Muestra la Mac de los AP's detectados ( ademas del nivel de señal, nivel de ruido y la calidad de enlace )
F7 Es una pantalla de configuración donde podemos modificar parámetros como interface, tiempo de actualización de estadísticas, etc.
F8 Ayuda. Viene sin implementar.
F9 About
F10 Quit. Abandona el programa.

Para instarlo en sistemas Debian, Ubuntu o derivados basta con digitar en el terminal:

apt-get install wavemon

O bien lo puedes descargar  y compilarlo con:

./configure
make
make install 



domingo, 27 de febrero de 2011

Instrucciones utiles para Python





Estos son algunas instrucciones muy interesantes para implementar en Python, muy utiles cuando queremos manejar comandos internos de GNU/Linux para Scripting

Invocar un comando del shell:

import subprocess
subprocess.call(["ls"])

En este caso importamos la librería subprocess e invocamos el comando ls

Canalizar el la salida de un comando a una variable usando pipes:

ruta = subprocess.Popen("pwd", stdout=subprocess.PIPE)
result = ruta.communicate()[0]

En el ejemplo anterior ejecutamos el comando pwd y el resultado de salida lo almacenamos en result


Si deseamos convertir el resultado anterior a un valor de tipo string para su mejor manipulación ya que el resultado es de tipo popen :

Texto=str(result)


Cambiar de directorio (funciona de manera análoga al comando cd) : 

import os
os.chdir(/home/usuario)


Invocar al bash shell:

os.system('bash')


Exportar una variable de entorno por ejemplo $HOME


os.putenv('HOME',/home/usuario)


Es similar que digitar "export HOME=/home/usuario" en el terminal



domingo, 20 de febrero de 2011

Conocer la direccion IP pública desde el terminal







En algunas ocasiones  es muy útil conocer la dirección IP pública por la cual  tenemos acceso a internet, desde la consola  lo podremos hacer usando una variedad de comandos que también serian  de mucha ayuda a la hora de hacer Scripts para una determinada tarea que asi lo requiera. Estos son algunos de los comandos que nos permiten realizar esta tarea:

Ejemplo 1:

echo "IP pública: "$(wget -q -O - checkip.dyndns.org|sed -e 's/.*Current IP Address://' -e 's/<.*$//')

Ejemplo2:

curl http://www.cual-es-mi-ip-publica.com/ | grep -A1 Publica:

Ejemplo 3:

curl icanhazip.com

Ejemplo 4:

GET tuip.info/ip; echo

Para usar el comando curl es necesario instalarlo, sino lo tienes es facil de hacerlo.

Instalacion para  debian, ubuntu  y derivados:

apt-get install curl

Instalación para Red Hat, Fedora, CentOS y derivados :

yum install curl