Skip to content

Unix & Linux

Beastie und Penguin. Ein Weblog für FreeBSD und Linux.

Menu
  • Startseite
  • FreeBSD
  • Linux
  • Windows
  • Anwendungen
  • Befehle
  • Shell
  • Web
  • Allgemein
  • Impressum
  • Meine 5 Unix-Regeln für das Leben!
Menu

Statische IP im Netzwerk verhindern

Posted on 28. Juni 201728. Juni 2017 by Robert Friemer

Ich habe ein Problem. Und dieses Problem hatte und hat so mancher Admin auch in seinem Netzwerk. User, die meinen eine Zugriffs-Policy mit einer statischen IP-Adresse zu umgehen, weil man ja mehr möchte.

Mein Problem an dieser Sache ist zum Einen, die Problematik mit doppelten IP-Adressen im Netzwerk und die Sicherheit der Firewall. Da ich Firewall-Regeln habe, die bestimmten IP-Adresse den Internetzugang zeitlich beschränken, ist eine von User selbst-vergebene IP nicht wünschenswert. Was also tun?

Im ersten Schritt sollte man den User bitten, von der statischen IP-Adresse wieder auf DHCP zu wechseln. Leider fruchtet dies nicht immer und der User ist uneinsichtig. Leider haben machen User auch so hohe Rechte die Netzwerk-Einstellungen selber einzurichten.

Wenn also der erste Schritt nichts bringt und es immer noch arp-Meldungen hagelt, dann könnte der pf mit der Freigabe für das surfen helfen. Wie das?

Der Zugang zum Internet ist für alle Netzwerk-Teilnehmer elementar und grenzt schon fast an ein Menschenrecht. Warum nicht unseren uneinsichtigen User überzeugen, freiwillig auf DHCP wechseln. Mit dnsmasq kann man recht einfach eine Zugriffs-ACL für den pf erstellen, denn es gibt die Möglichkeit bei jedem Event im DHCP ein Skript zu starten. Diese Option kann man in der dnsmasq.conf mit folgender Zeile zu testen aktivieren:

dhcp-script=/<pfad>/<zum>/<Skript>/<Skript-name>

Mit folgenden Test-Skript kann man sich in /var/log ein Test-File schrieben lassen und beobachten, wie es funktioniert_

#!/bin/sh

LOG=“/var/log/clients.log“
DATE=`date +“%Y-%m-%d %H:%M:%S“`

echo „$DATE $2 $3 $4 ($1)“ >> $LOG

Folgende Parameter können die Skript mitgegeben werden:

  • $1: Aktion (add, old, del)
  • $2: MAC-Adresse
  • $3: Vergebene IP-Adresse
  • $4: Hostname

Da auf der Firewall  meistens das gesamte Subnetz für das surfen freigegeben wird haben wir hier Möglichkeiten, dies besser einzuschränken. Warum nicht nur die IP-Adressen eintragen, die auch wirklich online sind. Dafür gibt es ja Tabellen im pf.

Wie kann man nun die Sicherheit erhöhen? Jedes Mal, wenn der DHCP-Server etwas macht, passt er den Zugriff auf den pf an.

Meldet sich eine Maschine (Aktion = add) an, wird die IP in der Tabelle für das surfen eingetragen. Meldet sich die Maschine wieder ab (Aktion = del), wird sie ausgetragen.

Was ist dafür zu tun?

  1. Die Regeln des pf für das Surfen müssen so umgeschrieben werden, dass Server eigene Regeln haben und immer durch dürfen. Diese haben ja eigentlich eine statische IP.
  2. Für die Clients gibt es eine Regel mit einer Tabelle <surfen>.
    table <surfen> { }
    …
    pass log inet proto tcp from <surfen> to any port { 80, 443 }
  3.  Der dnsmasq bekommt folgende Option und die Lease-Zeit für DHCP sollte verringert werden. Ich habe 2 Stunden definiert. Das heißt, dass nach 2 Stunden die IP-Adressen noch einmal angefragt wird. Existiert ein Eintrag mit der MAC-Adresse, dann wird die IP-Adresse weiter verwendet. Wird der Rechner runter gefahren, dann wird die IP wieder freigegeben.
    dhcp-script=/<pfad>/<zum>/<Skript>/<Skript-name>
  4. Nun wird noch das folgende Skript erstellt.

    #!/bin/shlogfile=“/var/log/clients-leases.log“
    datum=`date +“%Y-%m-%d %H:%M:%S“`
    cleanupfile=“/tmp/cleanupfile.txt“

    echo „$datum $2 $3 $4 ($1)“ >> $logfile

    if [ $1 == „add“ ]; then

    # IP-Adresse einfügen
    echo „pfctl -a web -t surfen -T add $3“ >> $logfile
    pfctl -a web -t surfen -T add $3

    elif [ $1 == „old“ ]; then

    # IP-Adresse ist bereits vorhanden und wird weiter genutzt.
    echo „IP gefunden: `pfctl -a web -t surfen -T show | grep $3`“ >> $logfile

    elif [ $1 == „del“ ]; then

    # IP-Adresse wieder löschen
    echo „pfctl -a web -t surfen -T delete $3“ >> $logfile
    pfctl -a web -t surfen -T delete $3

    elif [ $1 == „update“ ]; then

    # <surfen> neu schreiben
    echo „update Table surfen“ >> $logfile
    more /var/db/dnsmasq.leases | awk ‚ { print $3 }‘ >> $cleanupfile
    for ip in `more $cleanupfile`; do
    pfctl -a web -t surfen -T add $ip
    done
    rm $cleanupfile
    fi

    Zunächst werden temporäre Dateien wie .log-Datei und update-Datei definiert.
    Im ersten Teil wird die IP-Adresse der Tabelle <surfen> hinzu gefügt. Im zweiten Teil wurde festgestellt, dass die IP immer noch gültig ist und deshalb die Lease-Zeit verlängert wird. Im dritten Teil wird die IP-Adresse aus der Tabelle <surfen> wieder entfernt.
    Der letzte Teil dient dazu, die Tabelle <surfen> aud den lease-db des dnsmasq neu zu schreiben. Warum könnte dies wichtig sein? Falls Regeln in einen Anker neu geladen werden, dann kann man die Werte der Tabelle mit dem Aufruf
    ./dhcp-pf.sh update
    neu schreiben. 😉

Wenn man nun den dnsmasq und den pf neustartet, ist schluss mit statischer IP und Surfen, weil dies IP-Adressen nicht in die Tabelle <surfen> gelangen.

Viel Spass damit.

Bobby

 

Robert Friemer

Robert Friemer

Ich arbeite seit Windows for Workgroups 3.11, mit Linux seit Version 2.0 und mit FreeBSD seit Version 3.8. In der IT habe ich schon so einige Irrungen und Wirrungen kommen und gehen gesehen. Und ist seit einigen Jahren arbeite ich (fast) Windows-los. Der kleine Daemon ist für mich mittlerweile ein treuer und zuverlässiger Begleiter in der IT geworden.

More Posts - Website

Kategorien

  • Allgemein (20)
  • Anwendungen (17)
  • Befehle (26)
  • bhyve (8)
  • Firewall (11)
    • Ports (7)
  • FreeBSD (38)
  • Jails (4)
  • Linux (5)
  • Plasma (3)
  • Projekte (6)
  • Python (1)
  • Shell (15)
  • Sicherheit (11)
  • Web (8)
  • Windows (8)

Archiv

  • Juni 2025 (1)
  • Mai 2025 (2)
  • Januar 2025 (1)
  • Dezember 2024 (4)
  • November 2024 (1)
  • Oktober 2024 (3)
  • September 2024 (1)
  • Mai 2024 (1)
  • April 2024 (1)
  • März 2024 (2)
  • Januar 2023 (1)
  • Mai 2022 (1)
  • April 2022 (1)
  • März 2022 (2)
  • Mai 2021 (2)
  • November 2020 (1)
  • Oktober 2020 (1)
  • Juli 2020 (1)
  • Juni 2020 (5)
  • April 2020 (1)
  • Dezember 2018 (1)
  • September 2018 (1)
  • November 2017 (1)
  • August 2017 (1)
  • Juni 2017 (1)
  • Dezember 2016 (1)
  • Mai 2016 (3)
  • März 2016 (1)
  • Februar 2016 (1)
  • Januar 2016 (1)
  • Dezember 2015 (1)
  • Oktober 2015 (2)
  • September 2015 (1)
  • Juni 2015 (3)
  • Mai 2015 (2)

Suche

Robert Friemer

Schlagwörter

.pkgsave 22 25 53 80 110 123 143 443 465 576 993 995 1194 Falsches Keyboard-Layout Fehler Firewall FreeBSD FreeBSD 10 FreeBSD Backup grundsätzliche Ports keine Eingabe Keyboard Layout Login Mail NTP openVPN Plasma Plasma5 Port Ports Secure Shell Sicherheit SSH System wieder herstellen Tastatur Tastatur kaputt TCP UDP Unsichere Router USB-Audio Webserver absichern Webserver Sicherheit Zeit-Server
©2025 Unix & Linux | Built using WordPress and Responsive Blogily theme by Superb