Crear un punto de acceso con Hostapd y Dnsmasq

En este artículo vamos a crear un punto de acceso en Kali Linux que sirva internet de forma que podamos navegar con nuestro dispositivo.

Requisitos:

Para realizar esta prueba de concepto hemos utilizado el siguiente hardware/software:

  1. Ordenador con Kali Linux actualizado.
  2. Tarjeta Alfa AWUS036NH.

Instalación de Hostapd:

Hostapd es un demonio de usuario utilizado para crear puntos de acceso wifi (gestión de IEEE 802.11) y servidores de autenticación  (autenticaciones IEEE 802.1X/WPA/WPA2/EAP, servidores de autenticación RADIUS, servidores EAP, etc..). Instalaremos Hostapd con el siguiente comando:

 

Configuración de Hostapd:

El fichero de configuración por defecto de Hostapd lo podemos encontrar en la ruta “/etc/hostapd.conf“:

 

Nosotros vamos a dejar ese fichero como está y vamos a crearnos un fichero de configuración nuevo cuyo contenido será el siguiente:

 

A continuación se detalla el contenido mostrado:

  • interface=wlan0 : nombre de la interfaz que vamos a utilizar como punto de acceso
  • driver=nl80211 : tipo de driver de la interfaz
  • ssid=xxxxx : nombre que le vamos a dar a nuestro punto de acceso
  • hw_mode=g : modo de operación (a = IEEE 802.11a (5 GHz), b = IEEE 802.11b (2.4 GHz), g = IEEE 802.11g (2.4 GHz), ad = IEEE 802.11ad (60 GHz))
  • channel=1 : número de canal en el que emitiremos
  • macaddr_acl=0 : autenticación basada en la dirección MAC (0 = accept unless in deny list, 1 = deny unless in accept list, 2 = use external RADIUS server (accept/deny lists are searched first)
  • ignore_broadcast_ssid=0 : enviar el SSID vacío en los beacons e ignorar frames del tipo “probe request” que no especifiquen el SSID completo (0 = disabled
    1 = send empty (length=0) SSID in beacon and ignore probe request for broadcast SSID
    2 = clear SSID (ASCII 0), but keep the original length (this may be required with some clients that do not support empty SSID) and ignore probe requests for broadcast SSID)
  • auth_algs=1 : algoritmo de autenticación (bit 0 = Open System Authentication, bit 1 = Shared Key Authentication)
  • wpa=2 : configura el punto de acceso para requerir cifrado WPA (bit0 = WPA, bit1 = IEEE 802.11i/RSN (WPA2))
  • wpa_passphrase=xxxxx : clave WPA precompartida para WPA-PSK
  • wpa_key_mgmt=WPA-PSK WPA-PSK-SHA256 : algoritmos de gestión de claves aceptados.

Guardamos y salimos.

Instalación de Dnsmasq:

Dnsmasq es un servidor DNS (resolución de nombres), DNS Caching (resolución de nombres almacenando consultas en Caché), TFTP (protocopolo de transferencia de archivos ) y DHCP (distribución de parámetros de configuración de red como ip’s) . Para instalar Dnsmasq utilizaremos el siguiente comando:

 

Configuración de Dnsmasq:

El fichero de configuración de Dnsmasq lo podemos encontrar en “/etc/dnsmasq.conf”:

 

Al igual que la configuración de Hostapd, dejaremos ese fichero como está y vamos a crearnos un fichero de configuración nuevo con el siguiente contenido:

 

A continuación se detalla el contenido mostrado:

  • interface=wlan0 : interfaces en las que vamos a escuchar sólo peticiones DHCP y DNS.
  • cache-size=2048 : tamaño de la caché
  • log-async=5 :
  • dhcp-range=10.0.0.3,10.0.0.254,12h : habilita el servidor DHCP para asignar direcciones ip del rango establecido y un tiempo de concesión.
  • no-resolv: deshabilita la resolución DNS contra el fichero resolv.conf
  • server=8.8.8.8 : servidor de nombres primario
  • server=8.8.4.4 : servidor de nombres secundario

Levantando el punto de acceso:

Una vez que ya tenemos configurado hostapd y dnsmasq vamos a proceder a levantar el punto de acceso para poder conectarnos con nuestro dispositivo y tener internet. Primero arrancamos hostapd indicando el fichero de configuración que vimos anteriormente:

 

Tal y como se ve en la imagen anterior, puede que al arrancar hostapd nos aparezca un error relacionado con el driver y con que la interfaz no se pudo arrancar. Esto es debido al servicio NetworkManager, que es un programa que proporciona funcionalidades para redes inalámbricas o redes por cable. Entre estas funcionalidades destacamos:

  • Preferencia de redes cableadas antes que inalámbricas.
  • Cambio de conexión a una red wifi más confiable.
  • Soporte para conexiones VPN.

Para solventar esta incidencia, podemos detener el servicio:

o excluir la interfaz utilizada (wlan0) del NetworkManager en el fichero de configuración /etc/NetworkManager/NetworkManager.conf:

Una vez arrancado Hostapd podemos observar que en nuestro dispositivo aparece un punto de acceso con el nombre que le hayamos asignado, en este caso haremos la PoC con el nombre “ThOr”:

Si intentamos conectar, aparecerá el mensaje de “Obteniendo dirección ip…” pero no pasará de ahí:

Esto es debido a que no tenemos levantado el servidor DHCP para que nos asigne una dirección ip válida. Por lo tanto arrancaremos dnsmasq:

 

En la imagen anterior se pueden observar mensajes de que el paquete DHCP recibido no tiene dirección. Esto se debe a que la interfaz wlan0 no tiene asignada una dirección IP, por lo que le tendremos que asignar una manualmente con sudo ifconfig <interfaz> <dirección_ip> netmask 255.255.255.0 :

Con dnsmasq ya arrancado nuestro dispositivo se conectará al punto de acceso, donde podemos observar la asociación del dispositivo y la dirección IP asignada 10.0.0.4 :

El dispositivo ahora mostrará Connected, no internet, pues aún necesitamos realizar un par de cosillas más:

Configuración de Iptables y redireccionamiento:

Iptables es un firewall integrado en el kernel de Linux en el que se pueden añadir reglas o políticas para filtrar paquetes, realizar traducciones de direcciones de red, mantener registros en el log, etc… .

Por defecto, Linux no permite que los paquetes pasen de una interfaz de red a otra, por lo que es necesario activar el redireccionamiento o activar el bit de forward:

Estos cambios no son persistentes pues se eliminan cuando de apague el ordenador debido a que el directorio “/proc” se encuentra en memoria. Si se requiere que los cambios perduren ante los reinicios del equipo, definiremos dicha activación en el fichero “/etc/sysctl.conf”:

Con esto haremos que nuestro equipo actúe como NAT. El último paso es añadir reglas a iptables para permitir el redireccionamiento y el enrutamiento de los paquetes. Las reglas que añadiremos son del siguiente tipo:

FORWARD : para poder hacer llegar los paquetes de la interfaz wlan0 alcancen la interfaz eth0 para salir a internet, necesitamos permitir el redireccionamiento a la interfaz destino eth0 (wlan0 >> eth0).

POSTROUTING : los dispositivos conectados al punto de acceso (interfaz wlan0) están interconectados entre sí pero no tienen conexión con internet ya que sus direcciones ip son privadas (10.0.0.0/24). Para hacer que tengan internet, añadiremos una regla NAT en la que cambiaremos la dirección ip de origen de esos paquetes (10.0.0.0/24) a internet y que utilicen la dirección ip pública que tenga la interfaz eth0 (10.0.0.10 >> #dirección pública#).

 

Con todo esto configurado, el dispositivo muestra Connected y ya podremos navegar por internet:

 

Esperamos que os haya gustado.

“Never give up, great things take time”.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *