lunes, 27 de junio de 2011

Actualización de Iphones, Ipods a través de Dansguardian

Hola, esta vez voy ha tratar algo que me aconteció en el trabajo y es que todo el mundo me acusaba al creer que yo les estaba bloqueando el acceso para la actualización de iphones ipads, ipods etc, a través del itunes, es por ello que les comparto esto.

En la empresa donde trabajo tengo como filtrado de contenidos a Dansguardian, y aunque considero que está bien afinada la restricción de sitios no deseados resulta que mis usuarios quienes salen al internet a través de este filtro no podían actualizar sus iphones ni ipads, ipods etc, y el problema básicamente es porque las direcciones a donde se conecta el itunes para su sincronización el Dansguardian lo califica como mal formada.

Como funciona esto?

Simple, cuando un usuario que tiene un iphone o cualquiera de los dispositivos mencionados y quiere actualizar alguna de sus aplicaciones o simplemente el sistema operativo este lo hace a través de una aplicación que se llama itunes, al escojer buscar actualizaciones salía un mensaje "No se ha podido contactar con el servidor de actualizaciones de software del Iphone", en primera instancia pensé que además de ello necesitaba la apertura de un puerto adicional y efectivamente la conexión que hace itunes hacia los sitios de apple es a través de 443 TCP (https) pero aun así el problema percistía, entonces investigando un poco encontré que el problema estaba en dansguardian, actualmente yo trabajo con la version 2.9.9.4 sin embargo al querer hacer las actualizaciones de sistema operativo de un iphone a través de tcpdump pude ver que en el proceso de actualización que realiza el itunes este se conecta a las siguientes direcciones:

- ax.init.itunes.apple.com.
- itunes.apple.com.
- ax.phobos.apple.com.edgesuite.net.

El problema de estas direcciones es que todas terminan en punto, entonces es por ello que dansguardian lo bloquea porque sostiene que al finalizar con un punto el url entonces es una dirección mal formada y no lo deja pasar pese a que las había puesto como excepciones pero ni así funcionaba.

Solución:

Lo que hice fué sacar a estas direcciones de dansguardian, es decir los redireccioné directamente hacia el puerto 80 como es esto?

Se supone que si tenemos corriendo dansguardian en nuestro servidor linux este escucha en el puerto 8080 entonces seguro tenemos una regla como esta para re dirigir el tráfico hacia el dansguardian.

(Tomando en cuenta que eth1 es mi red interna)
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

Para re direccionar el tráfico de las direcciones antes mencionadas e indicar que no deseo que pasen por dansguardian si no mas bien que directo pasen por el puerto 80 hice lo siguiente:

$ nslookup ax.init.itunes.apple.com
Name: a771.da1.akamai.net
Address: 208.44.23.128
Name: a771.da1.akamai.net
Address: 208.44.23.104

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -d 208.44.23.128/32 -j ACCEPT

Lo mismo toca hacer para las otras direcciones mencionadas, una cosa adicional recuerden que iptables es secuencial entonces estas reglas deben estar antes de la re dirección hacia dansguardian.

La otra opción que podrían hacer es actualizar la versión de dansguardian, según dice ya se soluciona este bug.
Bueno espero que les haya servido nos vemos en el siguiente post.
Saludos,

miércoles, 2 de marzo de 2011

Huawei E1756C de Movistar funcionando en Debian Squeeze

Resulta que en el trabajo me regalaron un modem de movistar para poder conectarme a la red de la empresa en cualquier momento que me encuentre fuera de ella, así poder solucionar o dañar algo en la misma según sea del caso. El modem es un Huawei E1756C 3.5 G de movistar y lo primero que vi fué los requisitos del sistema para que este funcionara, como era de esperarse funciona en todos los windows y también en mac osx pero en gnu/linux nada que ver "que raro" dije yo pero bueno ha trabajar se ha dicho.

Bueno una vez conectado el modem lo primero es ver como nos reconoce el mismo entonces para eso podemos verlo con:

#lsusb

la salida del mismo muestra algo como esto:



Como podemos ver en la primera línea después de ingresar el comando mencionado el sistema nos reconoce el modem como un huawei tecnologies, en mi caso lo reconoció sin problema pero si no nos hubiese reconocido lo que tenemos que hacer es instalar la siguiente aplicación para que nos reconozca el modem, esto lo hacemos con el comando:

# apt-get install usb-modeswitch

Bueno ahora ya lo tenemos reconocido al modem, este por lo general trabaja con el puerto /tty/USB0, al momento de conectar el modem lo podemos ver abriendo una consola y poniendo el comando:

# tail -f /var/log/syslog

En este caso teniendo el modem reconocido tenemos que ver como conectarnos al proveedor de servicio es movistar, podría hacerlo a través de NetworkManager si usara Gnome, pero lamentablemente ese no es mi caso yo uso KDE 4.3 así que lo hice a través de wvdial que es una aplicación que permite hacer el llamado al proveedor de servicio, entonces debemos instalarla así:

# apt-get install wvdial

Una vez instalado el programa lo editamos, en mi caso y para ecuador voy ha poner la configuración que funcionó:

En el archivo que se encuentra en /etc/wvdial.conf

[Dialer reset]
Modem = /dev/ttyUSB0
Init1 = AT

[Dialer movistar]
Modem = /dev/ttyUSB0
Init2 = ATZ
Init3 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init5 = AT+CGDCONT=1,"IP","navega.movistar.ec","",0,0
Modem Type = Analog Modem
Phone = *99#
ISDN = 0
Baud = 9600
Username = movistar
Password = movistar
New PPPD = yes

La siguiente configuración hace referencia a un diler creado que se llama movistar, este tiene comandos que envía al modem a inicializarse, posteriormente navega.movistar.ec es a donde se conecta el modem, Phone=*99# es el número de marcado, Baud = 9600 hace referencia a la velocidad en baudios, e iniciamos una instancia con el demonio pppd.

Para conectarnos solo debemos ejecutar el comando:

# wvdial movistar

Este automáticamente se conecta, aquí una terminal que detalla mi conexión:




Para para la conexión solamente debemos digitar Ctrl + C, una cosa que me pasó es que los dns que movistar los puso no funcionaron entonces lo que hice fué poner los dnss de google y funcionó perfecto.

Bueno no es mas por hoy, espero lo disfruten y comprueben que las cosas que son solo para windows si funciona también en GNU/Linux.

domingo, 20 de junio de 2010

Autenticación Mysql con FreeRadius en GNU/Linux Centos 5.4

De vuelta por acá y esta vez le debo al Fabricio quién me animó nuevamente a publicar cosas y experiencias en software libre que hemos desarrollado y que pueden servir como aporte a quienes intenten realizar estas implementaciones probablemente como deberes o quien sabe en la empresa donde presten sus servicios.

La tarea de hoy tiene por objeto la instalación y configuración de una infraestructura que permita la autenticación de usuarios de una wlan o red wireless hacia un servidor de FreeRadius mismo que debe conectarse a una base de datos en MySql y extraer de ahí la información para autenticar, si la autenticación es correcta entonces el usuario de la wlan podrá hacer uso del internet.


La idea aquí es que el mismo server que vemos en el gráfico con FreeRadius va actuar como server de base de datos con Mysql, es decir ese server va ha brindar ambos servicios y entonces debemos:

  • Instalar y Configurar FreeRadius
  • Instalar y Configurar MySql
  • Configurar la Base de Datos e ingresar información a la misma
  • Configurar el Access Point

Asumimos que ya tenemos instalado el sistema operativo en este caso GNU/Linux 5.4 actualizado y todo lo demás, entonces para la instalación de FreeRadius lo que haremos es desde una consola lo siguiente:

Instalando y Configurando FreeRadius

# yum -y install freeradius

FreeRadius tiene sus archivos de configuración en la ruta: /etc/raddb, sin embargo con los que vamos ha trabajar son los siguientes:

→ Users .- En este archivo se puede especificar los usuarios autorizados para conectarse a la red, también se puede añadir mas usuarios, cabe mencionar que aquí se pueden configurar varios usuarios vía texto y serán usados cuando no exista autenticación con mysql por ejemplo. El cambio que realizaremos en este archivo es habilitar el usuario de prueba.

steve Auth-Type := Local, User-Password == "testing"

→ clientes.conf .- aquí especificamos los dispositivos que realizarán sus consultas al servidor Radius mediante una pequeña descripción que contiene: ip, secreto y nombre corto.

client 127.0.0.1 {
secret = testing123
shortname = localhost
nastype = other
# localhost isn't usually a NAS...
}

client 192.168.1.5 {
secret = elsecreto
shortname = router1
}

Donde la dirección 192.168.1.5 es el cliente quien puede hacer las consultas al servidor de radius, OJO: el cliente será el access point el es quien tendrá esa dirección ip.

→ eap.conf .- este archivo contiene las diferentes directivas de eap configuradas
posteriormente en radius.conf.

eap {
default_eap_type = tls
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
md5 {
}
leap {
}
gtc {
auth_type = PAP
}
tls {
private_key_password = whatever
private_key_file = ${raddbdir}/certs/cert-srv.pem
certificate_file = ${raddbdir}/certs/cert-srv.pem
CA_file = ${raddbdir}/certs/demoCA/cacert.pem
dh_file = ${raddbdir}/certs/dh
random_file = ${raddbdir}/certs/random
fragment_size = 1024
include_length = yes
}

→ sql.conf .- en este archivo vamos a realizar las diferentes configuraciones para la respectiva comunicación entre la base de datos de mysql y el servidor de freeRadius, la parte mas importante del archivo para sql es la siguiente:

sql {
driver = "rlm_sql_mysql"
server = "localhost"
login = "root"
password = "ibmlnx"
# Database table configuration
radius_db = "radius"
acct_table1 = "radacct"
acct_table2 = "radacct"
postauth_table = "radpostauth"
authcheck_table = "radcheck"
authreply_table = "radreply"

Como podemos fijarnos hasta este momento, este es el archivo mas importante ya que es aquí donde especificamos los parámetros necesarios para indicarle al freeradius con cual base de datos de mysql debe autenticar y esos parámetros son:
server = "localhost" ( si tuviéramos por separado la base de datos de freeradius en esta directiva deberíamos especificar la ip o el nombre de la máquina o server de base de datos )
login = "root" (hacemos referencia al usuario que estamos usando para la conexión con la base de datos)
password = "ibmlnx" ( es la clave del usuario root de la base de datos, no tiene nada que ver con el root del sistema operativo)
radius_db = "radius" ( es la base de datos donde residiran los usuarios quienes deseen autenticarse)

Instalando y Configurando MySql

# yum -y install mysql mysql-server freeradius-mysql

Una vez instalada la base de datos lo que tenemos que hacer es ingresar a ella y luego crear las bases de datos e ingresar información para los usuarios que vamos a autenticar.

Creando la base de datos:

# mysql -u root -p
mysql> create database radius;
mysql> exit;


Creando las Tablas dentro de la base de datos “Radius”, en esta parte cabe mencionar que dentro de la instalación de freeRadius este viene con un script
de creación de las tablas para mysql u oracle, de acuerdo a nuestro caso vamos a usar el script para la creación de las tablas en mysql.

# cd /usr/share/doc/freeradius-1.3.3/examples/
# mysql -uroot -proot radius <> use radius
mysql-> insert into radgroupcheck values ('', 'admin', 'Auth-Type', ':=', 'Local');
mysql-> insert into usergroup values ('joseluis', 'admin','');
mysql-> insert into radcheck values ('', 'joseluis', 'Password', '==', 'abc123');
mysql-> insert into usergroup values ('jorge', 'admin','');
mysql-> insert into radcheck values ('', 'jorge', 'Password', '==', '123abc');
mysql-> exit;

Comprobando lo hecho:



Configurar el Access Point

Ahora lo que tenemos que hacer es configurar nuestro access point, indicándole que la autenticación debe ser 802.1x es decir que apunte a la dirección ip de nuestro servidor con freeradius con mysql para que sepa que de ahí debe tomar los usuarios que tienen que ser autenticados, en este caso pondré un par de imágenes donde detallo la configuración.


Configurando la dirección ip del Access Point




Activando la configuración 802.1x e indicando la dirección ip del servidor FreeRadius.



Como podemos ver, le estamos indicando que la dirección ip del servidor freeradius es 192.168.11.100

Configurando el SSID y el Tipo de Encryptación.



Configurando el SSID



En resumen:

Todo cliente wlan o wireless que desee navegar al internet primero deberá ser autenticado, para ello el deberá configurar sus credenciales como una red WPA - LEAP y con SSID = RadiusTest (como vemos en el gráfico), el Access Point que tiene la ip 192.168.1.5 este realizará solicitará la autenticación al servidor FreeRadius con dirección 192.168.11.100, este a su vez hará la consulta sql a la base de tados que está en Mysql y si el usuario existe lo autenticará y en lo posterior podrá salir al internet.

Bueno espero que les sirva este manual, si tienen alguna consulta no duden en comentar.

Saludos,




lunes, 2 de noviembre de 2009

Como Romper WEP en linux debian lenny

Hola, este es mi primer post y decidí hacerlo porque quiero compartir con ustedes un deber que me enviaron en la universidad donde estudio,el tema que debía hacer es: "romper wep", para quienes no sepan wep (Wired Equivalent Privacy) es un protocolo de seguridad en una red wireless, a través de este permite cifrar la información que se transmite en la misma, este se basa en un algoritmo de cifrado RC4 y actualmente ya está roto, es decir para quienes deseen configurar una red wireless con confidencialidad WEP en sus hogares pues ya no es recomendable, ahora hay muchas técnicas que permiten obtener la clave de cifrado y tranquilamente ingresar a una red sin pedir permiso, bueno esto NO puede suceder si tomamos alguna otra técnica de seguridad como por ejemplo hacer un filtrado por MAC address en los AP (access points) que vayamos a configurar.
Para empezar ahora hay muchos programas, incluso distribuciones que permiten romper wep, conozco el caso de wifislax , pueden descargar un livecd, esta es una distribución basada en Slackware con un entorno kde donde pueden ejecutar los comandos que pronto comentaré.

Bueno basta de palabrerias, se supone que sabemos lo que vamos hacer, entonces a continuación detallo los pasos que debemos tomar en cuenta para romper wep.

- Asumiremos que ya tenemos configurado un Access Point con encriptación WEP, así como también hosts autenticados al AP navegando sin problemas.
- Desde el punto de vista de la máquina que va actuar como intrusa lo primero que debemos ver es si la tarjeta wireless es compatible con aircrack-ng que es el programa que vamos a usar para la demostración, aqui podemos revisar si es compatible o no.

En mi caso utilizo una interfaz Centrino b/g la misma que usa el driver ipw2200 en linux es decir soy compatible con el programa.

Pues bien ahora que sabemos que tenemos instalada nuestra interface wireless y que somos compatibles con el programa que vamos a usar entonces instalemos el programa.

# apt-get install aircrack-ng

Una vez instalado el programa, ejecutamos este comando:

# airmon-ng (este comando detecta la interface inalambrica que tenemos, así como el chipset y los drivers) esta es la salida de ese comando:

~# airmon-ng


Interface Chipset Driver

eth1 Centrino b/g ipw2200


- Ahora es necesario desactivar el modo monitor de la interface inalámbrica

# airmon-ng stop eth1

- Apagamos la interface

# ifdown eth1

- Cambiamos la mac-address de la interface, con el afán de no mostrar quienes somos.

# macchanger --mac 00:11:22:33:44:55 eth1

- Habilitamos el modo monitor nuevamente.

# airmon-ng start eth1

- Ahora si snifiemos la red con el siguiente comando.

# airodum-ng eth1

La salida de este comado mostrará algo como esto.., lo cual significa que está sniffiando todas las redes que recepta mi tarjeta inalámbrica, para nuestro ejemplo he marcado solamente quien tiene el protocolo wep, pues ese va ha ser nuestra demostración.


Como podemos ver en la imagen, el SSID que tiene configurado el AP con wep es "Gigo", trabaja a 54M, está trabajando en el canal 1, la mac-address del AP es: 00:12:0E:99:D7:0A, este dato en lo posterior lo llamaremos como bssid, eso entre los datos mas importantes de la captura.

Nuestro siguiente paso es ahora si capturar datos específicamente de la conexión wep, ya no del resto solamente wep y para ello ejecutamos el siguiente comando.

# airodum-ng -c 1 -w capturawep --bssid 00:12:0E:99:D7:0A eth1

Lo que hacemos con este comando, es sniffear la red exclusivamente wep, la opción -c significa al canal donde nos vamos a conectar, recuerden el canal lo tomamos del comando anterior ingresado pues este nos mostraba el canal en el que está trabajando el AP. Con la opción -w le indicamos que escriba la captura a un archivo, en nuestro caso yo para este ejemplo he puesto que se llame capturawep, este al final de la captura generará 2 archivos uno que se llame capturawep.cap y otro capturawep.txt, --bssid aquí especificamos la mac-address del AP, por último la interface eth1 es nuestra interface inalámbrica.
En este momento debemos esperar al menos unos 5 a 10 minutos, esto depende de cuanta información estén transmitiendo los hosts que formen parte de esta red.
Después de esperar el tiempo sugerido entonces le damos un Crtl-C para parar la captura y vemos efectivamente que se han creado los archivos antes mencionados.

Por último ejecutamos el siguiente comando y con esto determinaremos la clave que están usando para ingresar al AP que tiene un cifrado wep.

# aircrack-ng -b 00:12:0E:99:D7:0A capturawep.cap

La opción -b de este comando especifica la mac-address del AP comprometido y por último capturawep.cap es el archivo que se creó con el comando anterior.

Por obvias razones no pongo que clave descubrí pero espero que alguien de ustedes ponga en práctica este pequeño tuto y compruebe que realmente funciona vale la pena recalcar que este manual solo tiene fines educativos no lo usen para hacer daño.

Saludos,