Para esto paso vamos a necesitar 3 cosas para crear un punto de acceso:
a) Un router para montar el AP
b) Un servidor DHCP para asignar las direcciones ip's a los clientes
c)Un servidor DNS para manejar las peticiones
Primero se tiene que modificar iptables y activar la retransmisión de paquetes:
echo 1 > /proc/sys/net/ipv4/ip_forward # Permite retransmititir paquetes de una interfaz de red a otra
iptables --flush # Borrar todas las reglas de iptables en las tablas "filter", "nat" y "mangle
iptables --table nat --flush # Borrar todas las reglas de iptables en la tabla "nat".
iptables --delete-chain # Borrar todas las cadenas personalizadas de iptables en la tabla "filter".
iptables --table nat --delete-chain # Borrar todas las cadenas personalizadas de iptables en la tabla "nat".
iptables -P FORWARD ACCEPT # Permite el reenvío de paquetes entre interfaces de red.
Crear archivos necesarios para el AP:
dnsmasq.conf
# Nombre de la interfaz de red
interface=wlan0
# Rango de ip's y tiempo que van a durar
dhcp-range=10.0.0.10,10.0.0.100,8h
# Ip del gateway (ip nuestra)
dhcp-option=3,10.0.0.1
# Ip del dns (ip nuestra)
dhcp-option=6,10.0.0.1
# Redireccionar todas las requests a nuestra ip
address=/#/10.0.0.1
hostapd.conf
# Interfaz de red
interface=wlan0
# Nombre de la red
ssid=wifi
# Canal en el que va a estar nuestro AP
channel=1
# Driver de la interfaz de red
driver=nl80211
Redireccionar todo el tráfico hacia el server apache y habilitar SSL
a2enmod rewrite # Habilita las rewritesrules en apache
a2enmod ssl # Habilitar ssl
echo "Listen 443" >> /etc/apache2/ports.conf # Opcional si no se configuró solo
# Agregar esas lineas al final del /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /home/lorito/Desktop/cert.pem
SSLCertificateKeyFile /home/lorito/Desktop/cert.key
</VirtualHost>
<Directory "/var/www/html">
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ / [L,QSA]
</Directory>
Ejemplo básico de login con PHP
apt install php-mysql # Permite usar mysql con php
apt install mariadb-server mariadb-client
sudo mysql -u root
CREATE DATABASE basededatos;l
CREATE USER 'usuario'@'localhost' IDENTIFIED BY 'contraseña';
GRANT ALL PRIVILEGES ON basededatos.* TO 'usuario'@'localhost';
FLUSH PRIVILEGES;
<?php
// Conectar a la base de datos
$conexion = mysqli_connect("localhost", "usuario", "contraseña", "basededatos");
// Verificar la conexión
if (!$conexion) {
die("Error al conectar a la base de datos: " . mysqli_connect_error());
}
// Recuperar los valores del formulario
$username = $_POST['username'];
$password = $_POST['password'];
// Insertar los valores en la base de datos
$sql = "INSERT INTO usuarios (username, password) VALUES ('$username', '$password')";
if (mysqli_query($conexion, $sql)) {
echo "Registro guardado correctamente";
} else {
echo "Error al guardar el registro: " . mysqli_error($conexion);
}
// Cerrar la conexión a la base de datos
mysqli_close($conexion);
?>
Activar el punto de acceso
hostapd $(pwd)/hostapd.conf -B
dnsmasq -C $(pwd)/dnsmasq.conf
ifconfig <wlan iface> 10.0.0.1 netmask 255.255.255.0
service apache2 start
service mysql start