configurando un punto de acceso freebsd para tu red wireless

Anuncio
CONFIGURANDO UN PUNTO DE
ACCESO FREEBSD PARA TU RED
WIRELESS
Por Michael S. DeGraw-Bertsch
y traducción por Alberto Fernández Sanchez (LievenX)
A iro n e t
Yagi Antenna-1
BSD AP Wireless
1
INTRODUCCIÓN
Un punto de acceso es (semejante a un teléfono celular), tiene un enlace desde la LAN
wíreless a la red cableada y la salida a Internet . Hay bastantes puntos de accesos
disponibles en el mercado, integrados con las funciones de cable-modem o router DSL
firewall. Estas soluciones especiales son convenientes , pero se hacen a veces un tanto
rígidos en cuanto a nuestros propósitos y algo inseguros.
La mayoría de los puntos de acceso comerciales (Access Points) están sujetos a las
limitaciones propias del protocolo WEB . (Para mas información buscar por el
documento de Ido Dubrawsky “Wíreless (In)Security”.
Este artículo describe como configurar un PC corriendo con FreeBSD para servir como
punto de acceso (AP) aplicado a un escenario de una red inalámbrica. Este punto de
acceso FreeBSD no necesita que sea un servidor o un PC moderno. En base a esto, hay
gente que recomienda el aprovechar las viejas “máquinas” tipo 386 o 486 para
desempeñar esta tarea, los procesadores altos la verdad es que sobran en esta
implementación.
Encontrando el Hardware
Una vez que consigas tu viejo portátil ( futuro access point ), necesitaras tarjetas
wíreless 802.11b . Algunas compañías trabajan con este tipo de Standard , como
Orinoco (a.k.a, WaveLAN,Lucent, o Agüere), Cisco, o LinkSys. Las Orinoco siempre
son las mas popularmente aceptadas debido a su conector para una posible conexión a
una antena externa, (aunque el conector del pigtail es propietario…). La potencia de la
tarjeta suele ser de 30 mW de salida que será suficiente ya que le conectaremos una
tarjeta externa. Las tarjetas Cisco Aironet 350 tiene una potencia de salida en EEUU de
100 mW (autolimitadas a 30 mW por favor si conseguís que trabajen a 100 mW
hacermelo saber [email protected]) claro está que el precio de estas tarjetas Cisco son
bastante mas elevado. Todos los casos prácticos de este manual están basados en tarjetas
wíreless Orinoco, pero pueden ser exportadas las ideas a otro tipo de tarjetas
.
2
Una nota desafortunada referente a las tarjetas Orinoco:
Las tarjetas antiguas llamadas WaveLAN en vez de Orinoco , necesitarán una
actualización de BIOS antes para que trabajen debidamente bajo FreeBSD. La
actualización está gratis disponible en la página web de Orinoco
(http://www.wavelan.com). El problema es que la utilidad de actualización solo
funciona bajo Microsoft Windows. La solución sería saltar a Windows y con un
adaptador PCMCIA actualizar la tarjeta.
Se puede considerar la posibilidad de obtener una antena externa o dos . Así si la zona
donde esté ubicado tu FreeBSD tiene poca cobertura podremos desplazar la antena
externa en zonas mas ricas en cobertura.
Las antenas externas también serán usadas para el control de la radiación y aprovecharlo
al máximo. El rango de radiacción de una antena PCMCIA y mayoritariamente vertical,
el cual limita algo el alcance de la radiación. En cambio las antenas externas proveerá
mayor cobertura (ya que la radiaccion es mayoritariamente horizontal) se podrá
concentrar el rango de radiación para proveer mayor ganancia de señal.
En lo referente a la seguridad, las tarjetas wireless pueden trabajar con encriptación de
128 bits WEP o con 40 bits WEP. WEP es ( Wired Equivalency Protocol). Esta
seguridad es deficitaria y realmente no trabaja en una encriptación fiable (tal como
discutiremos al final del artículo). La compra de una tarjeta con 128 bits de WEP
realmente no merece la pena por la gran diferencia en cuanto a la relación servicios
prestados-precio. El consejo es que se compren tarjetas de 40-bits de WEP y que os
ahorreis el dinero.
Finalmente, si tu punto de acceso es una máquina de sobremesa, necesitaras también los
correspondientes adaptadores PCI o ISA a PCMCIA , ya que las tarjetas wíreles solo
son vencidas como PCMCIA . Ambos adaptadores trabajan con FreeBSD , a través de
PCI Orinoco y requieren a versión de FreeBSD más reciente ( por lo menos 4.4RELEASE). Mira la sección de loader.conf para las opciones que necesitaras si estas
usando adaptadores PCI. .
CONFIGURANDO EL FREEBSD
Una vez se haya reunido todo el material necesario (antenas,adaptadores,tarjetas,equipo)
puedes configurar el FreeBSD. Con algunos cambios en el kernel, un script de
configuración adaptado a nuestras prentensiones, y unos a cuantos minutos de
paciencia, entonces ya estaremos listos. Las siguientes secciones te guiarán a través de
los cambios que se necesitarán hacer a nivel de configuración.
3
EL KERNEL
El primer paso es configurar el kernel . Si tu has hecho esto anteriormente , estupendo,
solo pasa a la siguiente sección para las opciones que necesitas añadir . Si crees que no
lo tienes el kernel adaptado y no sabes como no te preocupes dirígete al episodio 9 de el
HandBook de FreeBSD
(http://www.freebsd.org/doc/en_US.ISO88591/books/handbook/kernelconfig.html).
Una pequeña guía que te servirá para empezar.
Para empezar, necesitarás las fuentes del kernel en tu mákina. Si no existe el directorio
/usr/src/sys/ en tu sistema, necesitaras instalar las fuentes. La manera más facil de
hacerlo es arrancar /stand/sysinstall como root, elegir “Configure”, después
“Distributions”, luego “src” , y finalmente “sys”.
1.- CONFIGURE
2.- DISTRIBUTIONS
3.- SRC
4.- SYS
Aceptamos después y las fuentes del kernel estarán en tu máquina.
Con las fuentes instaladas, cambia de directorio a /usr&src/sys/i386/conf. Copia
GENERIC a un nuevo archivo, como por ejemplo MYKERNEL.
Edita el archivo, añade las opciones de la siguiente seccion y cuando termines graba el
archivo y pon:
config MYKERNEL
cd ../ ../compile/MYKERNEL
make depend && make && make install
Reinicia el sistema , y cuando rearranques de Nuevo estaremos usando el Nuevo kernel
adaptado a nuestras pretensions. ( Si observamos cualquier problema o incluso no
arranca , cuando salga la linea de comandos en el arranque, presiona cualquier tecla, y
teclea “boot kernel.old [enter] así lo que conseguiremos es usar el kernel viejo. Si esto
pasa por favor vuelve al capitulo 9 de el HandBook mencionado anteriormente.)
LAS OPCIONES DEL KERNEL
Si estas usando el kernel genérico (GENERIC KERNEL), solo hay unas pocas opciones
que deberías activar; todo lo demás está activado por defecto con lo cual no hará falta
modificarlo.
Si tienes ya en el momento de ponernos manos a la obra un kernel personalizado,
verifica que tu tienes activadas las líneas apropiadas.
4
Primero, debes añadir el soporte para tarjetas wireless . Si lo tienes quitado, añade el
dispositivo <wi|an|awi>, donde WI es para tarjetas Orinoco, AN es para tarjetas
Airones, y AWI es para tarjetas PRISM.
Segundo, si es necesario, añade el soporte para PCMCIA con las siguientes tres
lineas:
device card
devide pcic0 at isa? Irq 0 port 0x3e0 iomem 0xd0000
device pcic1 at isa? Irq 0 port 0x3e2 iomem 0xd4000 disable
Además de lo expuesto deberíamos añadir el soporte para filtros IP y para desvio de IP,
con las siguientes opciones:
1.- filtros IP -> con la opcion IPFILTER
2.- desvio de IP -> con la opcion IPDIVERT.
3.- demas opciones -> device bpf , y opcionalmente, options IPFILTER_LOG.
Mientras lo estas activando podríamos aprovechar y activar las opciones relativas a
IPsec , para configurar la seguridad en nuestro sistema: options IPSEC, options
IPSEC_ESP, y options IPSEC_DEBUG. Estas utilidades serán discutidas en breve en
el apartado de Seguridad en Redes Wireless. Con los dispositivos apropiados y las
opciones en su sitio, compila e instala tu kernel.
LOADER.CONF
Si estas usando un adaptador PCI y tienes algún problema (como por ejemplo a la hora
de arrancar y no reconoce tu tarjeta wireless, o la tarjeta directamente no trabaja) ,
prueba añadiendo las siguientes líneas a /boot/loader.conf:
hw.pcic.intr_path=”1”
hw.pcic.irq=”0”
Tal vez necesites decir a tu BIOS que no esta corriendo un Sistema Operativo PnP
(plug & play), y permitir las interrupciones ISA en el parámetro IRQ que estes usando.
(El tema de IRQs será tratado también en la sección de pccard.conf.) Si estás usando un
equipamiento viejo WaveLAN , tendrás que añadir hw.pic.ignore_function_1=”1” al
fichero /boot/loador.conf . Es la solución más fácil, de todas formas, para usarlos
juntos en un portátil o en un adaptador ISA.
5
RC.CONF
Tu fichero de configuración /etc/rc.conf necesita 3 cambios. Primero, añade la linea
pccard_enable=”YES” para habilitar el demonio de PCMCIA . Si estás usando un
portátil, esta opció debería estar activada pero nunca esta de más que te lo repases una
segunda vez. Segundo , poner el gateway_enable=”YES” para permitir tu servidor para
pasar el trafico gíreles al resto de la red. Tercero y último , para NAT (Network Address
Translation ) o lo que es lo mismo traducción de direcciones de red , añade la linea
ipnat_enable=”YES”. NAT sera explicada en la siguiente sección.
TRADUCCIÓN DE DIRECCIONES DE
RED (NAT)
NAT es un de los grandes “diablillos “ de Internet hoy en día. Previene las conexiones
end-to-end . Desafortunadamente, IPV6 no tiene un uso extenso, y almenos que tu
quieras invertir un buen rato configurando la red con IPV6 , recurriremos a NAT. ( Si
quieres gastar tiempo configurando IPV6, revisa la pagina http://www.6bone.net y, si tu
tienes una ip dinámica, mira esta otra: http://www.freenet6.net.) El NAT en FreeBSD
usa el codigo de filtro de IP del kernel y es muy simple de ponerlo.
En la sección anterior habilitamos NAT en el arranque , pero no lo configuramos. Lo
siguiente es un ejemplo /etc/ipnat.conf, el cual es leido en el arranque y habilita NAT
en salida del interfaz ep0, traduciendo todo el tráfico desde la 10.0.0.0/16 para cualquier
direccion del ep0:
map ep0 10.0.0.0/16 -> 0.0.0.0/32 portmap tcp/udp 40000:65000
map ep0 10.0.0.0/16 -> 0.0.0.0/32
Sustituye tu identificativo interfaz externo y tu subred gíreles, reinicia , y tus conexiones
gíreles serán enrutadas y configuradas correctamente con NAT.
CONFIGURACIÓN WIRELESS
Como hemos hablado en la introducción, este artículo se basa unicamente en tarjetas
Orinoco Wireless, los cuales son dispositivos WI . El principal comando de
configuración es , wicontrol, que trata sobre esto. Las tarjetas Airones que son
dispositivos AN , se configurarán con ancontrol.
Hay varios parámetros que necesitaran ser configurados para tu conexión wireless, tales
como frecuencia, modo de operación, y nombre de estación. Por conveniencia, tu
6
puedes crear un script llamado /usr/local/sbin/wireless.sh , el cual meterá estos
parámetros cada vez . El script, que comentamos , podría ser según ponemos abajo:
#!/bin/sh
#Arrancar a través de la shell sh
wicontrol –f 7
#Mete la frecuencia de la tarjeta wireless. Legalmente el rango es desde 1 (2.412
GHz) #a (2.462 GHz) en los Estados Unidos, 1 a 13 (2.472 GHz) en Europa, 10
(2.457 GHz) #a 13 en Francia , y 1 a 14 (2.484 GHz) en Japón. Elige la frecuencia
en base a esto. o #toma otra frecuencia si lo deseas.
wicontrol –p 1
#Modo BBS, significa quelos clientes tienen que ser miembros con un solo AP, y no
#directamente conectados con ningún otro.
wicontrol –c 1
#Modo IBSS, una extensión del modo BSS.
wicontrol –s “servername”
#Mete el nombre de la estación. No tiene que encontrar un nombre DNS al
servidor.
wicontrol –k “12345”
#La llave WEP. Cambiala a un bit menos …. obvio.
wicontrol –e 1
#Habilita seguridad WEP.
ifconfig wi0 ssid “frfa”
#Mete el nombre de la red inalálmbrica.
ifconfig wi0 inet 10.0.0.77 netmask 255.255.255.0
#Configura la dirección IP y la máscara de red para el dispositivo de tu AP
wireless. #Cambia el nombre del dispositivo si es necesario.
Hay opciones adicionales disponibles , pero no son necesarias en nuestro caso. Estas
opciones están perfectamente documentadas en el manual de wicontrol. La siguiente
sección cubrirá como el script de configuración correrá dinámicamente.
PCCARD.CONF
Un consejo que damos es no configurar estáticamente con el script en el arranque del
sistema, porque tu tarjeta puede no ser inicializada cuando el script esta arrancado.
Arrancarlo el script a mano de todas formas es bastante molesto y necesitas acceso
continuamente al equipo para arrancarlo.
La solución más simple es añadir una línea al archivo de configuración de la PCCARD.
El archivo está típicamente /etc/defaults/pccard.conf, pero su localización actual es
definida por la variable de pccard_conf. Si lo defines esta en /etc/rc.conf, usa el valor
que indica. De otra manera se aplica los valores por defecto.
Edita el archivo, y busca en la seccion con el título:
card “Lucent Technologies” “WaveLAN/IEEE”
7
Ahora inserta /user/local/sbin/wireless después del último comentario en ese bloque .
Esto arracancara tu script wireless tantas veces como la tarjeta sea insertada, asegurate
que tu conexión esta siempre debidamente configurada.
Un detalle muy importante es si estamos usando diferentes tarjetas wíreless, la sección
del titulo será diferente como por ejemplo card “Airnonet” “PC4800”. Los cambios
permanecen iguales.
Si tu CPU se cuelga cuando la pccard arranca, puede ser debido a que esta utilizando
una IRQ para la tarjeta wireless que está realmente en uso.Saca la tarjeta y reinicia, y
encuentra el IRQ libre desde la salida del comando dmesg. Ahora solo tendrás que
editar el fichero de configuración de nuevo, revisando la sección de la tarjeta apropiada.
En esa línea de configuración de esa sección, cambia el espacio “?” por un numero IRQ
libre.
Esto forzará a la pccard a tomar un número IRQ libre por esta razón evitarás los
conflictos IRQ.
Configuración de clientes
La configuración de los clientes wíreless es muy parecido a la configuración de los
puntos de acceso aquí relatados. La configuración del kernel es la misma, exceptuando
para las opciones de IPDIVERT y el IPFILTER y para el dispositivo bdf. En el
fichero /etc/rc.conf , simplemente revisa que la opcion de pccard_enable=”YES” este
reflejada. Las opciones de NAT y de gateway no son necesarias.
Los cambios en pccard.conf son identicos a los descritos para el caso de AP . El
script de configuración tiene que ser identico tanto como en el caso de Punto de Acceso
como en el caso de Cliente Wireless. Si estas usando un modo diferente, frecuencia,
network name, o llave WEP, tus máquinas no verá a ninguna otra y no podrán conectar.
Hay una linea que debes añadir al script /usr/local/sbin/wireless.sh . En el final del
script deberemos añadir :
route add default a.b.c.d
Sustituye a.b.c.d con la dirección IP de tu Punto de Acceso Wireless. Finalmente, si tu
cliente es un ordenador de sobremesa usando un adaptador PCI, deberás tener el
loader.conf según hemos descrito anteriormente.
Es esto seguro?
En este punto, casi has acabado, el punto de acceso y los clientes están trabajando.
Deberías configurar tu red inalámbrica en casa , y quizás poner una en la oficina. La
verdad es que estás contentísimo de tener una red Wifi trabajando en tu salón o en la
cafetería. Has conectado para revisar tu correo por telnet , de todas formas empiezas a
preocuparte cuando piensas que tu contraseña en texto plano puede mandarse por
8
broadcast por toda tu zona de cobertura y que algún tipo curioso esté esnifando la LAN
simplemente con tener una tarjeta wíreless, el software apropiado y una antena.
Podríamos filtrar el tráfico por direcciones MAC trivial para un cracker que escanea el
medio inalámbrico , toma una MAC válida , y la usa para sus propósitos.
Entonces es cuando nos preguntamos por WEP… (Wired Equivalency Protocol)
WEP fue adoptado por el Standard 802.11 sin ningún cambio, y esto es ligeramente
mejor que no tener nada implementado. Este algoritmo es relativamente facil para
crackear, especialmente si interceptamos mas texto cifrado con el misma llave de
cifrado, la implementación es deficiente, y presta a debate sobre la vulnerabilidad de la
encriptación de este mecanismo para redes WIFI.
WEP se supone que brinda integridad en los datos: cambia un bit en texto cifrado RC4,
y lanzará de nuevo el mismo bit en texto plano. Para cubrirnos de los exploits, WEP
añade checksum CRC-32 como parte de la carga útil de los paquetes encriptados.
De todas formas, muchas cadenas de caracteres diferentes producen el mismo checksum
CRC-32. Puesto que es matemáticamente simple cambiar el mensaje y mantener el
mismo CRC, la integridad de cada paquete protegido por WEP está lejos de ser
garantizada.
¿Pero entonces WEP es completamente inútil ? No realmente. Recuerda que esto es el
Wired Equivalency Protocol y ofrece casi tanto la misma seguridad que una LAN
cableada. El momento en que el cracker necesite obtener tus datos wireless es problable
que sea semejante al ataque sufrido a que alguien tome acceso a tu LAN cableada, si y
si ellos lo prueban es realmente complicado.
¿Así que, que tiene que hacer el usuario wireless ? Arriesgarse del todo y solo
implementar WEP? De ningún modo, aunque no protejera tus datos wireless , puedes
crear un DMZ (zona desmilitarizada que divirá tus ordenadores internos de la red
pública) solo para tu tráfico wireless. Si tus usuarios necesitan acceso a los recursos
internos tales como intranet, configurales dentro de una VPN, como si ellos estubieran
en casa. Esto prevendrá intrusos que ganen acceso inmediato a tu red local. Si la
maquina FreeBSD que estás usando como Gateway wireless es también tu router, un
firewall o reglas de filtros IP mantendra controlado el tráfico inseguro que viaja entre
las redes wireless y la red cableada de tu lan.
El siguiente paso, para asegurar tus datos, acuerda trabajar con protocolos seguros. SSH
(versión 2 ) proveerá casi la seguridad a prueba de hackers para tus necesidades de
conexiones por terminales. Una idea mejor es trabajar con protocolos no seguros bajo
tuneles reenviando los puertos por SSH. Por ejemplo para tunelizar el trafico POP3
entre tu cliente , 192.168.77.12, y tu servidor de correo, 192.168.1.25, corre lo siguiente
en tu cliente:
9
Ahora dirije tu cliente de correo a localhost , y tu contraseña y correo estarán libres.
Hemos visto que SSH es bastante potente, de todas formas no es perfecto. Según hemos
hablado deberíamos crear un tunel, en un unico puerto, por cada una de las conexiones
seguras que queramos hacer. Esto es poco práctico. Especialmente si no tienes accesso
al servidor al cual te quieres conectar de forma segura.
La solución , meter IPsec. Acordar tuneles mediante IPsec con Encapsulated Security
Payload (ESP) entre tus clientes y el punto de acceso. De esta manera , todo el tráfico
entre las máquinas será encriptado. Cuando el tráfico de los clientes es llevado mas allá
del punto de acceso, esto mandrendrá encriptado entre los clientes y el punto de acceso.
Similarmente, todo el tráfico entrante independientemente del origen, es encriptado
entre el punto de acceso y el cliente. Esto limitara el fisgoneo que en otras soluciones es
posible.
IPsec añade la ventaja de proveer autentificación bastante robusta. Desde la conexión de
las maquinas tienen una llave prestada de autentificación o un certificado X.509, solo
los host autorizados podrán conectar. Ver los manuales de cómo configurar IPsec en
redes FreeBSD. Recomendamos leer el proyecto KAME (http://www.kame.net) . Ellos
han desarrollado IPsec y IPv6 para BSDs, y tienen más links de información a otros
sites. Tambien puedes buscar información de racoon, ipsec, y setkey. Ver “OpenBSD
como una solucion VPN” por Alex Withers (Sys admin., September 2000) para temas
relaccionados de IPsec bajo OpenBSD.
Conclusiones
En este artículo, hemos dado una introducción de el maravilloso mundo de las redes
inalámbricas 802.11b . Hemos mostrado como crear un punto de acceso económico,
como configurar los clientes FreeBSD, y como tapar los agujeros de seguridad.
Lo ultimo que queda es que salgas , compres algo de equipamiento , lo conectes y
configures y disfrutes de este nuevo mundo.
Sobre los autores
•
Mike DeGraw-Bertch es escritor sobre el tema de la seguridad y sistemas UNIX
en Boston , en el area de Massachussets . Cuando no está trabajando,
escribiendo, hacheando con Perl, o jugando con sus redes inalámbricas, puede
10
•
estar localizable jugando al jockey sobre hielo. Para contactar con Mike puedes
dirijirte a [email protected]
Alberto Fernández Sanchez (LievenX) es el traductor del texto , es miembro de
la asociación de usuarios de redes inalambricas de Guadalajara (AURIGA) y
miembro del grupo GuadaWireless (http://www.guadawireless.net) . Para
contactar con LievenX puedes dirijirte a [email protected]
11
Descargar