Raspberry Pi als Access-Point

closeDieser Beitrag gehört zu der Artikelserie Hacking in a Box

Bisher erst von anderen ausprobiert, nun bin ich auch selbst im Besitz eines eigenen Raspberry Pi. Meine Absicht dahinter, eine Box zu schaffen, welche über ein Battery-Pack betrieben und über ein Wifi-Dongle kommunizieren kann. Im Funktionsumfang schwebt mir etwas in Richtung Man-in-the-Middle- oder Deauth-Attacken vor, welche vollautomatisch nach dem Einschalten gestartet werden sollen. Doch erst mal zum Grundsetup:

Ich habe einen gewöhnlichen Pi (das stärkere Modell), einen Zyxel Wifi Dongle und mein bereits bekanntes Adata Battery-Back. Auf der SDCard läuft ein Raspbian und folgend will ich mal beschreiben, wie ich das Ding zu einem Access-Point umgewandelt habe.

Zuerst beginnen wir mit dem Herunterladen:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo apt-get install hostapd isc-dhcp-server vim

Nun können in der Datei /etc/dhcp/dhcpd.conf die ersten Anpassungen vorgenommen werden. Die folgende Zeile muss dabei auskommentiert werden:

#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;

Und der folgende Punkt dafür einkommentiert werden:

authoritative;

Nun kann eine Konfiguration am Ende der Datei ergänzt werden:

subnet 192.168.66.0 netmask 255.255.255.0 {
        range 192.168.66.10 192.168.66.50;
        option broadcast-address 192.168.66.255;
        option routers 192.168.66.1;
        default-lease-time 600;
        max-lease-time 7200;
        option domain-name "local";
        option domain-name-servers 8.8.8.8, 8.8.4.4;
}

Nun soll der DHCP noch begrenzt werden auf das WLAN. Also muss in der Datei /etc/default/isc-dhcp-server der folgende Eintrag aktualisiert werden:

INTERFACES="wlan0"

Nun muss dem WLAN Dongle eine fixe IP zugewiesen werden. Eine mögliche Konfiguration könnte etwa so aussehen:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

iface wlan0 inet static
  address 192.168.66.1
  netmask 255.255.255.0
  allow-hotplug wlan0

#iface wlan0 inet manual
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp

Nach dem Speichern kann das Interface ganz simple hochgefahren werden:

ifup wlan0

Kommen wir nun zum Access Point. Zuerst erstellen wir eine neue Datei unter /etc/hostapd/hostapd.conf und befüllen diese mit folgendem Inhalt:

interface=wlan0
driver=rtl871xdrv
ssid=Internet
hw_mode=g
channel=6
macaddr_acl=0
ignore_broadcast_ssid=0

Nun soll die Konfiguration auch automatisch geladen werden. Dazu öffnen wir die Datei /etc/init.d/hostapd und ergänzen die folgende Zeile:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Gleichzeitig wollen wir auch noch das Forwarding zwischen eth0 und wlan0 aktivieren. Dazu ergänzen wir in der Datei /etc/sysctl.conf den folgenden Eintrag:

net.ipv4.ip_forward=1

Einschränken kann man das Forwarding noch über die iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

Damit die Einstellungen auch nach einem Reboot noch vorhanden sind, müssen diese zuerst gespeichert:

sh -c "iptables-save > /etc/iptables.ipv4.nat"

Und danach wieder automatisch geladen werden, indem folgende Zeile am Ende von /etc/rc.local ergänzt wird:

iptables-restore < /etc/iptables.ipv4.nat

Nun müssen wir noch hostapd beibringen unseren Treiber zu unterstützen:

cd /tmp
wget http://www.adafruit.com/downloads/adafruit_hostapd.zip 
unzip adafruit_hostapd.zip
mv /usr/sbin/hostapd /usr/sbin/hostapd.ORIG
mv hostapd /usr/sbin
chmod 755 /usr/sbin/hostapd

Und um allen Allfälligkeiten gerecht zu werden, wir der WPASupplicant noch deaktiviert:

mv /usr/share/dbus-1/system-services/fi.epitest.hostap.WPASupplicant.service ~/

Nun kann der erste Test folgen. Dazu starten wir die passenden Services oder starten gleich den Pi neu:

/etc/init.d/isc-dhcp-server restart
/etc/init.d/hostapd restart

Auf einem anderen WLAN-Gerät sieht man nun das WLAN Internet und sollte sich mit diesem auch problemlos verbinden können und auch ins Internet kommen.

Damit ist nun der erste Schritt gemacht, ich habe ein WLAN, welchem ich einen beliebigen Namen geben kann. An den passenden Stellen platziert und mit einem geschickt gewählten Namen ausgestattet, verbinden sich die Leute praktisch von selbst – der erste Schritt für Man-in-the-Middle ist getan.
Noch offen ist jetzt ein Versuch, vom eth0 wegzukommen und ggf. über Tethering via iPhone ins Internet zu kommen, den wer hat schon überall einen Ethernet-Anschluss zur Hand. Ausserdem soll es noch eine Webinterface geben, über welches z.B. der Name des WLANs oder andere Einstellungen einfach und unkompliziert aktualisiert werden können. Ach und ein eigener DNS soll natürlich auch noch drauf, ein bisschen Phishing muss ja sein. 😉 Doch dazu später mehr!

2 Kommentare bei „Raspberry Pi als Access-Point

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.