• Créer une borne Wifi avec un serveur FreeBSD

    On veut transformer un serveur FreeBSD en borne Wifi (point d'accès) sécurisée, simplement.

    Le serveur possède 2 interfaces réseaux (a minima)
    - une ethernet (re0 pour l'exemple), configurée et connectée à internet.
    - une wifi (wlan0 - l'interface logique, rtwn0 étant la carte wifi physique (realtek))

    Je ne vais pas détailler tout le processus, (demandez à n'importe quel modèle d'IA, il vous expliquera le pourquoi du comment), simplement vous donner des fichiers de configurations fonctionnels, avec une configuration pf un minimum sécurisée (pour éviter le bruteforce etc..).

    1) Installer les programmes nécessaires: 

    pkg info -e hostapd >/dev/null 2>&1 || pkg ins -y hostapd
    pkg info -e isc-dhcp44-server >/dev/null 2>&1 || pkg ins -y isc-dhcp44-server

    2) Ce qui concerne le schmilblick dans /etc/rc.conf : (ce n'est pas le fichier entier !! juste la partie point d'accès). Veillez à ne pas avoir d'instructions redondantes ou concurrentes.

    ifconfig_re0="DHCP"
    wlans_rtwn0="wlan0"
    create_args_wlan0="wlanmode hostap"
    ifconfig_wlan0="inet 172.18.19.1 netmask 255.255.255.0 ssid MonSuperWifi mode 11g channel 6"
    gateway_enable="YES"
    hostapd_enable="YES"
    dhcpd_delay="10"
    dhcpd_conf="/usr/local/etc/dhcpd.conf"
    dhcpd_enable="YES"
    dhcpd_ifaces="wlan0"
    dhcpd_flags="-q"
    pf_enable="YES
    pf_rules="/etc/pf.conf"

    3) Le contenu du fichier /etc/hostapd.conf (le point d'accès wifi)

    interface=wlan0
    ssid=MonSuperWifi
    hw_mode=g
    channel=6
    wpa=2
    wpa_passphrase=SuperMotDePasse
    wpa_key_mgmt=WPA-PSK
    wpa_pairwise=CCMP

    4) Le fichier de configuration pour /etc/pf.conf (pour le NAT et la protection du réseau wifi)

    # Définition des interfaces
    ext_if = "re0" # Interface ethernet reliée à Internet
    int_if = "wlan0" # Interface wifi du hotspot

    # Tables pour les adresses bloquées et les limites de connexion
    table <bruteforce> persist
    table <conn_limit> persist

    # Options de normalisation
    scrub in all

    # NAT pour le trafic sortant
    nat on $ext_if from $int_if:network to any -> ($ext_if)

    # Règles par défaut
    block all
    pass out quick keep state

    # Autoriser le trafic entrant sur l'interface WiFi
    pass in on $int_if keep state

    # Protection contre les attaques par force brute
    block quick from <bruteforce>

    # Limiter les nouvelles connexions
    pass in on $int_if proto tcp to port { 22 80 443 } flags S/SA \
    keep state (max-src-conn 100, max-src-conn-rate 15/5, \
    overload <conn_limit> flush global)

    # Bloquer les adresses qui dépassent la limite de connexion
    block quick from <conn_limit>

    # Autoriser le trafic DNS
    pass out proto udp to port 53 keep state

    # Journalisation
    pass log (all)

    5) Le contenu du fichier /usr/local/etc/dhcpd.conf (pour le serveur DHCP qui fournira les configurations IP des clients connectés au wifi)

    authoritative;
    default-lease-time 600;
    max-lease-time 7200;
    lease-file-name "/var/db/dhcpd/dhcpd.leases";

    subnet 172.18.19.0 netmask 255.255.255.0 {
    interface wlan0;
    range 172.18.19.100 192.168.1.200;
    option routers 172.18.19.1;
    option domain-name-servers 8.8.8.8, 8.8.4.4;
    }

    6) Activer le routage des paquets :

    sysctl net.inet.ip.forwarding
    sysctl net.inet.ip.forwarding=1
    echo "net.inet.ip.forwarding=1" >> /etc/sysctl.conf

    7) Lancer les services

    service netif restart ; sleep 2
    service routing restart ; sleep 2
    service hostapd restart ; sleep 2
    service isc-dhcpd restart
    service pf restart

     

     


    Tags Tags : , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :