destapeman
FUCK PUSSYS, YES BADASS
Moderador
Paladín de Nodo
Jinete de Nodo
Burgués de Nodo
Noderador
Nodero
Noder
- 11 Ene 2019
- 4.229
- 8.771
Buenas noders,
Lo bueno siempre se hace esperar, esta vez os traigo un post de como convertir nuestra Raspberry Pi en un AP o Access Point o Punto de Acceso WI-FI, para conectarnos con el smartphone cuando nos encontramos en una situación en la que solo tenemos una conexión ethernet sin opción inalámbrica por ejemplo; echadle vosotros imaginación y econtradle utilidades a este post.
Para este tutorial necesitaremos:
- Raspberry Pi 2 Modelo B (Yo lo realizaré sobre esta versión)
- S.O. Raspbian Jessie 8 (Yo lo realizaré sobre esta versión)
- Adaptador WI-FI (En el modelos de raspi que utilizo ya viene con uno integrado de serie)
Lo primero será actualizar los repositorios para los programas que nos descarguemos para el post, estén actualizados:
Ahora instalaremos los programas que harán correr los servicios:
hostapd-> es el encargado de crear el punto de acceso
isc-dhcp-server-> es el encargado de crear el servicio DHCP
Con esto ya tenemos instaladas todas las herramientas necesarias para la tarea que nos atañe, ahora toda configurarlas:
DHCP
Vemos si el servicio DHCP está corriendo y si en efecto lo vemos activo lo paramos:
Lo primero antes de nada Y ESTO GRABÁROSLO A FUEGO es realizar backup de CADA FICHERO que vayáis a modificar.
Un vez realizado el backup, podemos modificarlo para dar el servicio que necesitamos
Abrimos el fichero de configuración del servicio DHCP, el fichero es '/etc/dhcp/dhcpd.conf ' ejecutando un editor de texto, yo utilizo vi, podéis utilizar otros como nano si os sentín más cómodos, esto no es ley.
El fichero tiene muchas opciones, pero en este post solo explicaré las que necesitamos, si queréis saber para que funcionan el resto podéis mirarlo en el man o lo indicáis en el post y abriré uno nuevo explicando para qué sirven los parámetros.
Buscamos las siguientes líneas que estarán descomentadas:
La opción 'domain-name-servers' se emplea para enviar al cliente los servidores DNS que utilizará. Los servidores hay que especificarlos por orden de preferencia, primero el principal, y luego los secundarios. Si no disponemos de un servidor DNS en nuestra red entonces deberemos poner la IP del servidor y aún así se aconseja poner la IP porque ahorras trabajo al no tener que hacer resoluciones DNS cada vez que se quiera llamar al servidor. Nosotros lo incluiremos mas tarde dentro de la configuración que enviaremos al cliente en el paquete dhcp, por lo que las comentamos poniendo una "almohadilla" delante '#':
Buscamos la línea:
Si un servidor es autoritario entonces podrá enviar mensajes DHCPNACK a aquellos clientes que envían un DHCPREQUEST con una propuesta de IP no válida, debido a que al cliente se le ha cambiado de segmento de red. En estos casos, si el servidor no es autoritario, lo que hace es no contestar.
Este parámetro se suele poner en el ámbito global indicándose así que el servidor DHCP es autoritario en todos los segmentos de la red, pero también puede aplicarse individualmente a cada segmento. No puede haber mas de un servidor DHCP autoritario en el mismo segmento de red, sino ocasionaría un problema.
El comportamiento autoritario del servidor DHCP también tiene una serie de connotaciones de seguridad, pues hace que los mensajes del diálogo entre el cliente y el servidor incluyan una serie de códigos para impedir que un equipo atacante puede interferir en dicho diálogo.
Y la descomentamos:
Buscamos las siguientes líneas
Y las modificamos para que quede algo así:
Para resumir:
- indicamos que la subred que vamos a ofrecer en el servidor DHCP es la 192.168.10.0/24
- que el rango de IPs que vamos a dar va de la .10 a la .90
- los DNS a los que se conectan para resolución de nombres indicamos que se conecten a los gratuitos de Google
- el nombre de nuestra raspberry
- la puerta de enlace (la IP de nuestra raspberry)
- la dirección broadcast
- los tiempos en segundos de concesión y de expiración.
Podéis poner cualquier IP del rango reservado para privadas, yo he puesto la 192.168/16 por costumbre, ya que tampoco vamos a conectar 5000 equipos a nuestra raspi
Según hemos configurado el archivo de esa forma, lo guardamos y salimos. En mi caso :wq y para los que usan nano creo que era ctrl+o y ctrl+x
Ahora toca modificar el archivo '/etc/default/isc-dhcp-server' (realizamos backup)
Buscamos la línea:
Incluimos nuestra interfaz de red wi-fi, en mi caso la wlan0 entre las comillas:
Con esto indicamos que las peticiones del servicio dhcpd se gestionarán por esta interfaz.
Ahora tenemos nuestro servidor DHCP configurado, pero no hemos terminado, aún tenemos que modificar la IP de la interfaz wlan0 e indicarle una IP estática puesto que la hemos configurado como puerta de enlace y receptor de las peticiones, en definitiva, es la interfaz a la que nos conectaremos.
Desactivamos la interfaz que vamos a modificar:
Vamos al archivo '/etc/network/interfaces' y lo modificamos (realizamos backup):
Después de la línea allow-hotplug wlan0, añade lo siguiente:
Y comenta con un '#' estas tres líneas:
Una vez configurado, lo guardamos y salimos, y volvemos activar la interfaz de red pero con la nueva IP que le hemos puesto:
Con esto hermos terminado con el DHCP, ahora toca el siguiente.
HOSTAPD
Le toca el turno al AP (Access Point, iros acostumbrando a las siglas porque se utilizan mucho). Crearemos el archivo de configuración nosotros:
Una vez dentro añadimos las siguientes líneas al fichero, mucho ojo de no dejar ningún salto de línea o espacio al final de cada parámetro, podría dar fallo:
Menciones especiales:
- driver: el que he puesto es el de por defecto, y es el que necesito yo y cualquiera que realice esto en su raspberry, pero si utilizáis un dongle como antena para emitir la señal, tendréis que poner el driver de vuestra dongle.
- ssid: es el nombre con el que se va a ver la red, podéis poner AP_RASPBERRY, WIFI_RASPBERRY, ME_CAGO_EN_MIS_VECINOS....el que queráis, a gusto de consumidor.
- wpa_passphrase: aquí irá la contraseña, podéis no ponerla, lo mismo que lo anterior, a gusto del consumidor.
Ahora que tenemos nuestro fichero de configuración creado necesitamos indicar a la raspberry donde tiene que llamarlo. Para ello hay que modificar el archivo '/etc/default/hostapd' (realizar backup):
Una vez dentro buscamos la línea '#DAEMON_CONF' , la modificamos incluyendo de nuestro archivo de configuración y descomentamos la línea; debería de quedar así:
Ya tenemos el AP creado, pero queda un paso más para ponerlo en marcha, hay que realizar un NAT.
NAT
Para quien no lo sepa, a groso modo, NAT son las sigla de Network Address Translation. La idea es sencilla, hacer que redes de ordenadores utilicen un rango de direcciones especiales (IPs privadas) y se conecten a Internet usando una única dirección IP (IP pública). Lo hace el router de nuestra casa, es algo básico de redes. En nuestro caso para salir a internet sería raspberry>router>ISP, habría dos saltos. Se harían dos NAT, uno de IP privada a IP Privada, la de la red de nuestra raspberry y la del router de donde nos conectemos, y otra entre la red del router y el ISP (Provedor de Servicios de Internet). Lo mismo que con el DHCP, si queréis mas información sobre NAT, mirad el man o pedírmelo por comentarios.
Lo primero necesitamos modificar el siguiente archivo de configuración (realizad backup):
Buscamos la línea #net.ipv4.ip_forward=1 y la descomentamos:
Binario básico, 1 activo y 0 desactivado. Estos cambios se aplicarán cuando reiniciemos el sistema, pero para hacerlo inmediatamente puedes introducir lo siguiente en consola, que tiene el mismo objetivo que lo anterior:
Por último configuramos las iptables para dirigir el tráfico a través de las interfaces y que todo fluya:
Vale, cosa importante, eth0 es el nombre de la interfaz física, puede que a vosotros no os salga así nombrada, puede que os salga algo así como enp0s3 o algo por el estilo, simplemente es modificarlo. La wlan0 si que entiendo que al menos habéis hecho lo que teníais que hacer y la habéis llamado así.
En mi caso yo le he metido un dongle y así poder conectar de WI-FI a WI-FI, es lo mismo, pero con interfaces inalámbricas, es un dato para que sepáis que también se puede hacer así.
El problema de esto es que habría que ejecutar los comandos anteriores cada vez que encendamos la Raspberry Pi, pero para que sea automático introducimos lo siguiente:
A continuación volvemos al archivo de configuración de las interfaces de red que hemos modificado con anterioridad:
Al final del todo, hay que añadir la línea siguiente:
Ahora que tenemos todo configurado y hemos llegado a este punto, solo queda iniciar los demonios y ver si funciona:
Y para habilitar los demonios:
Parece que si me da la opción a conectarme:
No me voy a desconectar porque estoy con otros asuntos, pero funciona.
Bueno, es largo pero entretenido, no está mal para pasar la tarde, o en mi caso la noche 😂😂😂😂
Ya con esta base podéis dejar volar la imaginación y hacer cosas muy chulas, yo cuando estudie FP Medio me hice una de estas y le añadí el TOR para conectarse a la deepweb y poder navegar de forma anónima. Hay varios proyectos que parten de esta misma base, podéis haceros un FW con iptables, si le añadís un squid y configuráis un proxy transparente podéis fichar donde se conectan por http y https los usuarios de la red, y con un SSL strip romper las cadenas de cifrado y ver credenciales....¡no se experimentad coño, que mas ideas se os ocurren joder! Si falta algo decídmelo por comentarios, o tenéis problemas....lo que sea.
Viva el puto NODO313
Lo bueno siempre se hace esperar, esta vez os traigo un post de como convertir nuestra Raspberry Pi en un AP o Access Point o Punto de Acceso WI-FI, para conectarnos con el smartphone cuando nos encontramos en una situación en la que solo tenemos una conexión ethernet sin opción inalámbrica por ejemplo; echadle vosotros imaginación y econtradle utilidades a este post.
Para este tutorial necesitaremos:
- Raspberry Pi 2 Modelo B (Yo lo realizaré sobre esta versión)
- S.O. Raspbian Jessie 8 (Yo lo realizaré sobre esta versión)
- Adaptador WI-FI (En el modelos de raspi que utilizo ya viene con uno integrado de serie)
Lo primero será actualizar los repositorios para los programas que nos descarguemos para el post, estén actualizados:
$> sudo apt-get update
Ahora instalaremos los programas que harán correr los servicios:
$> sudo apt-get install hostapd isc-dhcp-server
hostapd-> es el encargado de crear el punto de acceso
isc-dhcp-server-> es el encargado de crear el servicio DHCP
Con esto ya tenemos instaladas todas las herramientas necesarias para la tarea que nos atañe, ahora toda configurarlas:
DHCP
Vemos si el servicio DHCP está corriendo y si en efecto lo vemos activo lo paramos:
$> sudo service isc-dhcp-server status
$> sudo service isc-dhcp-server stop
Lo primero antes de nada Y ESTO GRABÁROSLO A FUEGO es realizar backup de CADA FICHERO que vayáis a modificar.
$> sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.20190104
Un vez realizado el backup, podemos modificarlo para dar el servicio que necesitamos
Abrimos el fichero de configuración del servicio DHCP, el fichero es '/etc/dhcp/dhcpd.conf ' ejecutando un editor de texto, yo utilizo vi, podéis utilizar otros como nano si os sentín más cómodos, esto no es ley.
$> vi /etc/dhcp/dhcpd.conf
El fichero tiene muchas opciones, pero en este post solo explicaré las que necesitamos, si queréis saber para que funcionan el resto podéis mirarlo en el man o lo indicáis en el post y abriré uno nuevo explicando para qué sirven los parámetros.
Buscamos las siguientes líneas que estarán descomentadas:
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
La opción 'domain-name-servers' se emplea para enviar al cliente los servidores DNS que utilizará. Los servidores hay que especificarlos por orden de preferencia, primero el principal, y luego los secundarios. Si no disponemos de un servidor DNS en nuestra red entonces deberemos poner la IP del servidor y aún así se aconseja poner la IP porque ahorras trabajo al no tener que hacer resoluciones DNS cada vez que se quiera llamar al servidor. Nosotros lo incluiremos mas tarde dentro de la configuración que enviaremos al cliente en el paquete dhcp, por lo que las comentamos poniendo una "almohadilla" delante '#':
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
Buscamos la línea:
#authoritative;
Si un servidor es autoritario entonces podrá enviar mensajes DHCPNACK a aquellos clientes que envían un DHCPREQUEST con una propuesta de IP no válida, debido a que al cliente se le ha cambiado de segmento de red. En estos casos, si el servidor no es autoritario, lo que hace es no contestar.
Este parámetro se suele poner en el ámbito global indicándose así que el servidor DHCP es autoritario en todos los segmentos de la red, pero también puede aplicarse individualmente a cada segmento. No puede haber mas de un servidor DHCP autoritario en el mismo segmento de red, sino ocasionaría un problema.
El comportamiento autoritario del servidor DHCP también tiene una serie de connotaciones de seguridad, pues hace que los mensajes del diálogo entre el cliente y el servidor incluyan una serie de códigos para impedir que un equipo atacante puede interferir en dicho diálogo.
Y la descomentamos:
authoritative;
Buscamos las siguientes líneas
# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
# range 10.5.5.26 10.5.5.30;
# option domain-name-servers ns1.internal.example.org;
# option domain-name "internal.example.org";
# option routers 10.5.5.1;
# option broadcast-address 10.5.5.31;
# default-lease-time 600;
# max-lease-time 7200;
#}
Y las modificamos para que quede algo así:
# A slightly different configuration for an internal subnet.
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.90;
option domain-name-servers 8.8.8.8, 8.8.4.4;
option domain-name "raspberry";
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 600;
max-lease-time 7200;
}
Para resumir:
- indicamos que la subred que vamos a ofrecer en el servidor DHCP es la 192.168.10.0/24
- que el rango de IPs que vamos a dar va de la .10 a la .90
- los DNS a los que se conectan para resolución de nombres indicamos que se conecten a los gratuitos de Google
- el nombre de nuestra raspberry
- la puerta de enlace (la IP de nuestra raspberry)
- la dirección broadcast
- los tiempos en segundos de concesión y de expiración.
Podéis poner cualquier IP del rango reservado para privadas, yo he puesto la 192.168/16 por costumbre, ya que tampoco vamos a conectar 5000 equipos a nuestra raspi
Según hemos configurado el archivo de esa forma, lo guardamos y salimos. En mi caso :wq y para los que usan nano creo que era ctrl+o y ctrl+x
Ahora toca modificar el archivo '/etc/default/isc-dhcp-server' (realizamos backup)
$> sudo vi /etc/default/isc-dhcp-server
Buscamos la línea:
INTERFACES=""
Incluimos nuestra interfaz de red wi-fi, en mi caso la wlan0 entre las comillas:
INTERFACES="wlan0"
Con esto indicamos que las peticiones del servicio dhcpd se gestionarán por esta interfaz.
Ahora tenemos nuestro servidor DHCP configurado, pero no hemos terminado, aún tenemos que modificar la IP de la interfaz wlan0 e indicarle una IP estática puesto que la hemos configurado como puerta de enlace y receptor de las peticiones, en definitiva, es la interfaz a la que nos conectaremos.
Desactivamos la interfaz que vamos a modificar:
$> sudo ifdown wlan0
Vamos al archivo '/etc/network/interfaces' y lo modificamos (realizamos backup):
$> sudo vi /etc/network/interfaces
Después de la línea allow-hotplug wlan0, añade lo siguiente:
iface wlan0 inet static
address 192.168.100.1
netmask 255.255.255.0
Y comenta con un '#' estas tres líneas:
#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
Una vez configurado, lo guardamos y salimos, y volvemos activar la interfaz de red pero con la nueva IP que le hemos puesto:
$> sudo ifconfig wlan0 192.168.10.1
Con esto hermos terminado con el DHCP, ahora toca el siguiente.
HOSTAPD
Le toca el turno al AP (Access Point, iros acostumbrando a las siglas porque se utilizan mucho). Crearemos el archivo de configuración nosotros:
$> sudo /etc/hostapd/hostapd.conf
Una vez dentro añadimos las siguientes líneas al fichero, mucho ojo de no dejar ningún salto de línea o espacio al final de cada parámetro, podría dar fallo:
interface=wlan0
driver=rtl871xdrv
ssid=WIFI_DESTAPEMAN
hw_mode=g
channel=6
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=El_Puto_Nodo313
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
Menciones especiales:
- driver: el que he puesto es el de por defecto, y es el que necesito yo y cualquiera que realice esto en su raspberry, pero si utilizáis un dongle como antena para emitir la señal, tendréis que poner el driver de vuestra dongle.
- ssid: es el nombre con el que se va a ver la red, podéis poner AP_RASPBERRY, WIFI_RASPBERRY, ME_CAGO_EN_MIS_VECINOS....el que queráis, a gusto de consumidor.
- wpa_passphrase: aquí irá la contraseña, podéis no ponerla, lo mismo que lo anterior, a gusto del consumidor.
Ahora que tenemos nuestro fichero de configuración creado necesitamos indicar a la raspberry donde tiene que llamarlo. Para ello hay que modificar el archivo '/etc/default/hostapd' (realizar backup):
$> sudo vi /etc/default/hostapd
Una vez dentro buscamos la línea '#DAEMON_CONF' , la modificamos incluyendo de nuestro archivo de configuración y descomentamos la línea; debería de quedar así:
DAEMON_CONF="/etc/hostapd/hostapd.conf"
Ya tenemos el AP creado, pero queda un paso más para ponerlo en marcha, hay que realizar un NAT.
NAT
Para quien no lo sepa, a groso modo, NAT son las sigla de Network Address Translation. La idea es sencilla, hacer que redes de ordenadores utilicen un rango de direcciones especiales (IPs privadas) y se conecten a Internet usando una única dirección IP (IP pública). Lo hace el router de nuestra casa, es algo básico de redes. En nuestro caso para salir a internet sería raspberry>router>ISP, habría dos saltos. Se harían dos NAT, uno de IP privada a IP Privada, la de la red de nuestra raspberry y la del router de donde nos conectemos, y otra entre la red del router y el ISP (Provedor de Servicios de Internet). Lo mismo que con el DHCP, si queréis mas información sobre NAT, mirad el man o pedírmelo por comentarios.
Lo primero necesitamos modificar el siguiente archivo de configuración (realizad backup):
$> sudo vi /etc/sysctl.conf
Buscamos la línea #net.ipv4.ip_forward=1 y la descomentamos:
net.ipv4.ip_forward=1
Binario básico, 1 activo y 0 desactivado. Estos cambios se aplicarán cuando reiniciemos el sistema, pero para hacerlo inmediatamente puedes introducir lo siguiente en consola, que tiene el mismo objetivo que lo anterior:
$> sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Por último configuramos las iptables para dirigir el tráfico a través de las interfaces y que todo fluya:
$> sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$> sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
$> sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
Vale, cosa importante, eth0 es el nombre de la interfaz física, puede que a vosotros no os salga así nombrada, puede que os salga algo así como enp0s3 o algo por el estilo, simplemente es modificarlo. La wlan0 si que entiendo que al menos habéis hecho lo que teníais que hacer y la habéis llamado así.
En mi caso yo le he metido un dongle y así poder conectar de WI-FI a WI-FI, es lo mismo, pero con interfaces inalámbricas, es un dato para que sepáis que también se puede hacer así.
El problema de esto es que habría que ejecutar los comandos anteriores cada vez que encendamos la Raspberry Pi, pero para que sea automático introducimos lo siguiente:
$> sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
A continuación volvemos al archivo de configuración de las interfaces de red que hemos modificado con anterioridad:
$> sudo vi /etc/network/interfaces
Al final del todo, hay que añadir la línea siguiente:
up iptables-restore < /etc/iptables.ipv4.nat
Ahora que tenemos todo configurado y hemos llegado a este punto, solo queda iniciar los demonios y ver si funciona:
$> sudo service hostapd start
$> sudo service isc-dhcp-server start
Y para habilitar los demonios:
$> sudo update-rc.d hostapd enable
$> sudo update-rc.d isc-dhcp-server enable
Parece que si me da la opción a conectarme:
No me voy a desconectar porque estoy con otros asuntos, pero funciona.
Bueno, es largo pero entretenido, no está mal para pasar la tarde, o en mi caso la noche 😂😂😂😂
Ya con esta base podéis dejar volar la imaginación y hacer cosas muy chulas, yo cuando estudie FP Medio me hice una de estas y le añadí el TOR para conectarse a la deepweb y poder navegar de forma anónima. Hay varios proyectos que parten de esta misma base, podéis haceros un FW con iptables, si le añadís un squid y configuráis un proxy transparente podéis fichar donde se conectan por http y https los usuarios de la red, y con un SSL strip romper las cadenas de cifrado y ver credenciales....¡no se experimentad coño, que mas ideas se os ocurren joder! Si falta algo decídmelo por comentarios, o tenéis problemas....lo que sea.
Viva el puto NODO313