miércoles, 10 de diciembre de 2008

Tu propio AP casero con Debian

Como soy un chico pobre y no tengo dinero para comprarme un access point hace un tiempo átras decidí hacerme el mio propio, hoy les mostraré como se hace.
Yo lo instale con Debian dado que lo monte en mi homeserver el cual ya estaba andando anteriormente, pero existe una distro realizada especificamente para hacer esto llamada ZeroShell la cual aparentemente esta genial, si la prueban cuenteneme su experiencia.

Los requerimientos

Necesitarán:

  • Placa de Red Inalámbrica con chipset Atheros, con otras placas el procedimiento puede variar e incluso hasta no funcionar, algunas placas no soportan modo ap, verificar que la suya lo soporte.
  • Placa de Red Ethernet 10/100, para conectarse a la red cableada.
  • PC x86 o compatible Pentium o superior, cualquiera debería funcionar sin problemas, yo tengo un p3 con 512mb de Ram (ja y después me quieren vender el Linksys con unos miserables 16mb de ram :P).
  • Una Iso de Debian, si se animan con otra distro adapten el ejemplo.

Instalar la Placa Wifi

Para empezar deben tener instalada la placa wifi, si es una placa con chipset atheros deberán instalarla con los drivers de madwifi, para ello pueden utilizar la aplicación module assistant de debian. La secuencia de pasos es la siguiente

apt-get update

Instalamos los paquetes básicos

apt-get install build-essential module-assistant wireless-tools
module-assistant prepare

Instalamos el driver

module-assistant auto-install madwifi-source

Cargamos el modulo

modprobe ath_pci

Por último deben añadir el modulo en el archivo modules en etc para que se cargue al arranque del sistema.

echo "ath_pci" >> /etc/modules

Y deberán añadir esta opción en el archivos modprobe.d en etc para que la interface se levante en modo ap.

options ath_pci autocreate=ap


Configurar las Interfaces

Asumo que la interface ethernet la tienen configurada correctamente y es la eth0, por el otro lado la interface ath0 es la correspondiente a la placa wifi. La forma fácil de montar la red es mediante la creación de un bridge que trabaje con ambas interfaces, la forma difícil es mediante un nateo entre ambas interfaces. Les voy a mostrar como es con nateo dado que no quise crear un bridge porque mi server ya tiene demasiadas interfaces y no quiero añadirle una mas.
La intefaz eth0 obtiene una IP del la red cableada perteneciente a la subred 192.168.10.0/24 y la red inalámbrica tiene una subred del tipo 10.0.0.0/8 siendo la interfase la 10.0.0.1.

Nos vamos al archivo interfaces en /etc/network y empezamos a editar.

auto lo
iface lo inet loopback

allow-hotplug eth0 ath0
auto ath0 eth0


iface eth0 inet dhcp

#Configuracion de la placa wifi

iface ath0 inet static
address 10.0.0.1
netmask 255.0.0.0
post-up /etc/network/start-nat


La última línea ejecuta el script star-nat después de levanta la interface ath0, este configura el iptables para hacer el nateo. Este script no es la gran ciencia, las opciones básicas son las siguientes.

iptables -F
iptables -t nat -F
iptables -t mangle -F

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ath1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ath0 -o eth0 -j ACCEPT


Si quieren, pueden añadirle mas reglas para montar un firewall interno y proteger tanto el acceso a la red cableada como la red inalámbrica. Otra opción es montar un proxy transparente para la red, esta es una buena idea en el caso de que tengan muchos usuarios colgados y quieran optimizar la navegación, pero eso lo vamos a dejar para otra oportunidad.

Paso siguiente reiniciar la red

/etc/init.d/networking restart


En este punto tienen el AP funcionando, si escanean la red desde una máquina cliente seguro que va a funcionar, la cuestión es que no disponemos de ningún mecanismo de seguridad, dejando nuestra red abierta a todo el mundo que quisiese conectarse.

Seguridad, Hostapd al rescate!

Para evitar dejar nuestra red abierta al mundo lo que vamos a hacer es instalar una utilidad llamada Hostapd, esta utilidad corre como un demonio y se bindea con la intefaz inalámbrica para realizar el proceso de autenticación de los clientes, dejando o no conectarse, en caso de éxito y que el cliente se conecte al AP posteriormente realiza la encriptación de la comunicación.

Para instalarlo deben utilizar el sagrado apt

apt-get install hostapd

Una vez instalado deben configurar el archivo hostapd en el directorio /etc/hostapd/, debería quedarles algo así.
interface=ath0
driver=madwifi
logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
debug=0
dump_file=/tmp/hostapd.dump
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
ssid=My_Secure_WLAN
#macaddr_acl=1
#accept_mac_file=/etc/hostapd/accept
auth_algs=3
eapol_key_index_workaround=0
eap_server=0
wpa=3
wpa_psk_file=/etc/hostapd/wpa_psk
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
stakey=0

Por último debemos crear un archivo con la lista de las direcciones mac de los clientes y la contraseña de acceso para cada uno. Dicho archivo esta definido en el archivo de configuración anterior en wpa_psk_file=/etc/hostapd/wpa_psk. Creamos y editamos dicho archivo poniendo lineas como esta

00:00:00:00:00:00 PASSPHRASE
El último paso es cambiar las opciones por defecto de hostapd en /etc/default/hostapd. Debería quedarles algo así

RUN_DAEMON="yes"
DAEMON_CONF="/etc/hostapd/hostapd.conf"


Esto es importante, dado que sino no les va a funcionar hostapd como demonio.

Ahora reiniciamos el demonio hostapd con la nueva configuración.

/etc/init.d/hostapd restart

Si miran la interface ath0 con iwconfig les va a aparecer esto

ath0 IEEE 802.11g ESSID:"casiva" Nickname:""
Mode:Master Frequency:2.412 GHz Access Point: 06:40:05:29:24:FA
Bit Rate:0 kb/s Tx-Power:16 dBm Sensitivity=1/1
Retry:off RTS thr:off Fragment thr:off
Encryption key:2C0D-B181-3C45-C195-13D6-AC8A-D123-CC63 [3]
Power Management:off
Link Quality=37/70 Signal level=-59 dBm Noise level=-96 dBm
Rx invalid nwid:10 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0


Ahora tienen un AP con contraseña y además con filtrado por mac, que tal.

Configurar Clientes

El último paso es configurar los clientes, pero de esto ya hablamos en un post anterior así que solo me limito a la referencia. Observen que pusimos como mecanismo de encriptación WPA-PSK y para transferencia del par CCMP, pueden cambiarlos en la configuración de Hostapd.

http://www.casivaagustin.com.ar/2008/10/wpa-supplicant-en-debian-lenny.html


Conclusiones

Bueno con esto tendrían un AP casero realizado con no mas de 100 pesos y una computadora viejita. Quedarían miles de cosas para hacerle, como por ejemplo configurar posta posta el firewall, poner un proxy y hasta algo más elemental poner un Dhcp.
Para el caso del Dhcp les recomiendo Dnsmasq, se levanta rápidamente y se pueden hacer miles de cosas con el, como filtrar la respuesta de solicitudes de Dhcp por mac, configurar IP estáticas, montar Dns relay o estático y miles de cosas más.

Lo mas gracioso de todo esto es que todos los AP que andan dando vueltas como los Linksys, Dlink, Encore y otros utilizan las mismas utilidades que nombramos aquí, capas otra versión, capaz con esteroides, pero básicamente es lo mismo.

Otra cosa que me gustaría ver es algo así corriendo en windows, a ver si un MSGeek me pasa un link a un howto así, quiero ver si es tan fácil como en Linux y si tienen herramientas tan buenas.

Les dejo un enlace que me ayudo mucho para la instalación

http://www.linux.com/feature/55617

3 comentarios:

Unknown dijo...

El detalle importante a tener en cuenta es la placa Atheros, resulta que de a ratos salen chips mejorados, lo que se refleja en los números de versión que se puede extraer del hard y si no coinciden con los que están compilados, no se cargan los drivers y la placa no anda.

Para el uso en una pc típica, es cuestión de buscar un repositorio y bajarse el último paquete disponible, en ZeroShell podría ser más complicado.

Estuve buscando (una mirada rápida al sitio) una lista de chipsets Atheros que funcionen, pero no encontré (no miré en foros relativos donde es el típico lugar en que están); la apuesta relativamente segura para maximizar la posibilidad de compatibilidad sería buscar una placa que no sea tan nueva.

Sldos.

pelin dijo...

vieja,vos sabes que estaba con el mismo problema que vos... el de escasez de dinero pa comprar un AP. es una buena opcion la que propones, la he de probar en breve...aunque.. cuanto cuesta un placa con ese chipset?.
un abrazo

Casiva Agustin dijo...

Ciertamente nunca tuve problemas con placas Atheros, y eso que trabaje con varias. Otras que también suelen funcionar bien son las Realtec, pero desconozco si funcionan en modo AP. Lo heavy sería conseguir una prism o la diosa orinoco, pero las casas de hardware zonal no traen hardware tan elitista.

Peli, una plaquita Dlink ronda los 110 pesos, deberías chequear el chipset, varía según los modelos.