BitBastelei #344 – 802.1x: PC-Netze/WLAN Sichern mit RADIUS

BitBastelei #344 - 802.1x: PC-Netze/WLAN Sichern mit RADIUS

(342 MB) 00:26:27

2019-08-04 10:00 🛈

Heutzutage ist im IT-Sektor alles gesichert – oder? Beim Thema Netzwerk sieht es oft dünn aus: In WLANs ist es nicht unüblich ein Passwort für alle Nutzer und Geräte zu haben (WPA-Personal/PSK), findet man eine Netzwerkdose ist oft gar kein Schutz vorhanden. Dabei ist es nicht unmöglich auch diese Stellen besser zu sichern: Mit 802.1x gibt es einen Standard, welcher es erlaubt für jeden Nutzer oder jedes Gerät einen eigenen Benutzernamen und ein persönliches Kennwort festzulegen. Für WLAN wird dies oft schon von einfachen Geräten für den Heimgebrauch unterstützt, möchte man Netzwerkdosen absichern benötigt man einen „managed Switch“. Einzige Voraussetzung: Ein RADIUS-Server, welcher die Zugangsdaten verwaltet und zum Beispiel auf einem Raspberry Pi eingerichtet werden kann.

Inhalt:
00:10 Was ist RADIUS?
02:09 Einrichtung und Test von FreeRADIUS
08:22 802.1x mit HPE/Aruba-Switch
11:50 Verkabelter Windows-Client
14:09 Verkabelter Linux-Client
16:47 RADIUS-Zertifikate
18:27 802.1x mit UBNT UniFi
21:44 WiFi Windows
23:03 WiFi Linux

BitBastelei #343 – T12 DIY-Lötkolben: Gehäuse und Netzteil

BitBastelei #343 - T12 DIY-Lötkolben: Gehäuse und Netzteil

(716 MB) 00:22:40

2019-07-28 10:00 🛈

Vor einiger Zeit hatte ich einen Bausatz gezeigt, mit welchem man einen Lötkolben selbst bauen kann. Zusammen mit den weit verbreiteten T12-Spitzen erhält man so eine erschwingliche Lötmöglichkeit, welche in vielen Punkten den üblichen Einstiegsmodellen weit überlegen ist. Mit loser Platine und ohne Stromversorgung reicht es aber noch nicht für eine vollwertige Lötstation, also kümmere ich mich dieses mal um ein Gehäuse mit passendem Netzteil und prüfe, wie sich der Bausatz gegen meinen mobilen TS100 schlägt.

Links zum Thema

BitBastelei #342 – Low-Cost-Saugroboter: Was steckt drin

BitBastelei #342 - Low-Cost-Saugroboter: Was steckt drin

(828 MB) 00:18:32

2019-07-21 10:00 🛈

Vor einiger Zeit hatte ich mir einen Staubsaugroboter mitbestellt – also, zumindest nennt es sich so. Intelligent soll er sein, Dingen ausweichen und natürlich alles blitzeblank Saugen. Bei einem Preis von 7€ incl. Porto können da schon mal Zweifel aufkommen, also schauen wir mal was er wirklich kann und wie der Hersteller einen solchen Preis realisiert hat.

BitBastelei #341 – iPad-Akkutausch

BitBastelei #341 - iPad-Akkutausch

(447 MB) 00:25:02

2019-07-14 10:00 🛈

Das ich von Apple nicht viel halte ist kein Geheimnis, vor Allem da die Geräte dazu neigen sich selbst zu zerstören. Im aktuellen Fall hat es ein iPad erwischt. Diese sind nur bis 35°C zugelassen, bei den zuletzt herrschenden Temperaturen wäre also eher der Kühlschrank der korrekte Ort für das Gerät gewesen. Leider lag das heutige Modell stattdessen auf dem Schreibtisch und hat die Sommerhitze mit einem kaputten Akku quittiert. Nicht gerade ungewöhnlich. Nun hab ich also die Auswahl zwischen Apple-Reparatur oder Gequengel in den Ohren. Also lege ich dann doch mal Hand an und mache das, was laut Apple ja gar nicht möglich ist: Mit mäßiger Motivation den Akku tauschen.

Links zum Thema

BitBastelei #340 – Bluetooth-Android-Apps für ESP32

BitBastelei #340 - Bluetooth-Android-Apps für ESP32

(183 MB) 00:31:50

2019-07-07 10:00 🛈

ESPs und Arduino habe ich ja schon oft gezeigt, was aber, wenn man diese mit einem Handy verbinden will? Dann spielt der ESP32 seine Bonuspunkte aus: Dieser unterstützt neben WLAN auch Bluetooth und kann so direkt und ohne Router mit einem Handy kommunizieren. Mittels des App Inventor kann man die zugehörige App für Android schnell und einfach zusammenklicken.

Links

Nginx: allow mit dynamic DNS

Wenn man Webseiten mit Backend betreibt ist es oft eine gute Idee die Verwaltungsbereiche nur von bestimmten IPs oder Netzen zuzulassen. Unter nginx gibt es hierzu den allow-Befehl, mit welchem man IPs und Netze angeben kann. Ich verwende dies z.B. häufig um nur interne IP-Bereiche oder per VPN angebundene Clients zuzulassen. Für ein aktuelles Projekt sollte jedoch auf ein VPN verzichtet werden. Theoretisch kein Problem – externe IP rein und fertig, aber leider ist es auch 2019 noch in Deutschland für viele Anschlussarten üblich bei Trennung und erneutem Verbinden eine andere IP-Adresse zuzuweisen. Für eingehende Verbindungen lässt sich dies mittels dynamischen DNS-Einträgen schnell in den Griff bekommen, jedoch ist das für das hiesige Konstrukt keine Option, da nginx mit solchen Einträgen nicht sinnvoll umgehen kann. Im Netz finden sich einige Helper-Scripte, welche den DNS regelmäßig Prüfen, die Konfiguration anpassen und den Webserver passend umkonfigurieren. Leider sind diese oft eher alt und nur auf das schon seit Jahrzehnten veraltete IPv4 ausgelegt. Als Abhilfe habe ich meine Anforderungen in ein kleines Python-Script gegossen. Für IPv6 wird von der aufgefundenen IP auf ein /48er Netz geschlossen und dieses freigegeben, sollte euer Provider nur ein /56er oder gar /64er rausrücken muss dass ggf. angepasst werden.

Vorbedingung ist, dass nginx die neue Konfiguration findet. Um es einfach zu halten stehen die dynamischen Einträge in einer separaten Textdatei, welche an passender Stelle per include eingebunden wird. Statische Einträge können, sofern vorhanden, an der üblichen Stelle bleiben.

[…]
location /admin {
        allow 192.168.0.0/24;
        include /etc/nginx/dyndns.conf;
        deny all;
        […]

Das eigentliche Script nutzt nach meinem Wissen keine externen Module und sollte somit auf jedem System mit Python 3 laufen. Es werden alle IPv4- und IPv6-Adressen abgerufen. Der angegebene Port (80) ist irrelevant, da nur die IPs genutzt werden. Die Konfiguration wird mittels MD5 auf Änderungen geprüft, liegt eine solche vor wird per Systemd eine reload ausgelöst. Ich habe die Datei mit in den nginx-Konfigurationsordner als /etc/nginx/dyndns.py gepackt – nicht schön, aber passte besser in die bereits vorhandene Struktur und Verwaltung.

#!/usr/bin/python3
import socket
import subprocess
import hashlib
import ipaddress


def md5(fname):
    hash_md5 = hashlib.md5()
    with open(fname, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_md5.update(chunk)
    return hash_md5.hexdigest()



before = md5("/etc/nginx/dyndns.conf")
cfg = open("/etc/nginx/dyndns.conf", "w")
addrs = socket.getaddrinfo("DEIN.DYNAMISCHER.DNS", 80, type=socket.SOCK_STREAM)
for addr in addrs:
    out = ""
    ip = ipaddress.ip_address(addr[4][0])
    if ip.version == 6:
        ip = ipaddress.ip_network(str(addr[4][0]) + "/48", False)
        out = (str(ip.network_address) + "/" + str(ip.prefixlen))
    else:
        out = addr[4][0]
    cfg.write("allow\t\t" + out + ";\t#Dynamic DNS\n")

cfg.close()

after = md5("/etc/nginx/dyndns.conf")

if before != after:
    #DNS has changed
    #print("RELOAD")
    subprocess.call('/usr/bin/systemctl reload nginx', shell=True)

Das Script muss regelmäßig gestartet werden um Änderungen zu prüfen. Wenn der zugehörige DNS-Dienst auf dem selben System läuft kann man möglicherweise auf Hooks zurückgreifen, andernfalls muss es zeitbasiert über Cron oder Timer laufen. Für letzteres mit einem Intervall von 5 Minuten legt man die Datei /etc/systemd/system/nginx-dyndns.timer an und füllt sie wie folgt:

[Unit]
Description=Nginx DNS updater

[Timer]
OnBootSec=0min
OnUnitInactiveSec=5m

[Install]
WantedBy=timers.target

Dazu benötigt man noch einen passenden Service, welcher unter /etc/systemd/system/nginx-dyndns.service definiert wird:

[Unit]
Description=Nginx DNS updater

[Service]
Type=oneshot
Nice=19
IOSchedulingClass=2
IOSchedulingPriority=7
ExecStart=/usr/bin/python3 /etc/nginx/dyndns.py

Last but not least wird der Timer eingeschaltet:

systemctl enable --now nginx-dyndns.timer

BitNotice #150 – Siglent SDS1102CNL Firmware Update

BitNotice #150 - Siglent SDS1102CNL Firmware Update

(25 MB) 00:04:40

2019-07-03 17:45 🛈

Bei meinem Siglent SDS1102 sind mir in letzter Zeit Probleme bei der Nutzung einiger Messungen aufgefallen. Oft helfen hier Updates der Firmware, also schauen wir mal, wie man diese bei dem Modell installiert.

Downloads @ siglent.eu

BitBastelei #339 – Hitzefrei: Quick’n’Dirty USB-Ventilator

BitBastelei #339 - Hitzefrei: Quick'n'Dirty USB-Ventilator

(1 GB) 00:22:19

2019-06-30 10:00 🛈

Die aktuellen Temperaturen lassen es kaum zu sinnvollen Tätigkeiten nachzugehen, also greifen wir ein altes Thema nochmal auf und bauen einen alten PC-Lüfter als mobilen USB-Ventilator um.

BitBastelei #338 – LORA-Gateway mit ic880a

BitBastelei #338 - LORA-Gateway mit ic880a

(277 MB) 00:14:07

2019-06-23 10:00 🛈

Bereits in der Vergangenheit hatte ich gezeigt wie man mit LORA und dem „The things network“ kleine Datenmengen wie z.B. Umweltsensoren über lange Distanzen übertragen kann. Genutzt werden hierzu so genannte Gateways, welche mehrere Frequenzen gleichzeitig überwachen, die LORA-Nachrichten entgegennehmen und zu den Internetservern des TTN-Projektes weiterleiten. Diese Gateways werden oft durch Freiwillige betrieben, sind aber leider vergleichsweise teuer. Da auch ich einige LORA-Dinge in betrieb habe geht es nun daran auch ein Gateway beizusteuern, hierzu habe ich glücklicherweise ein passendes Gateway-Board gebraucht ersteigern können. Als Basis nutze ich den ic880A mit Raspberry Pi, die nötige Software wurde von der TTN-Community aus Zürich entwickelt. Alternativen wären der RAK831 (z.B. vorgestellt in der aktuellen MAKE) oder das Pygate-Board von PyCom.

Links zum Thema:

BitBastelei #337 – HP/Aruba/HPE ProCurve 2510G-24 Managed Switch

BitBastelei #337 - HP/Aruba/HPE ProCurve 2510G-24 Managed Switch

(686 MB) 00:34:49

2019-06-16 10:00 🛈

Wieder mal ein Auktionstreffer – auf der Suche nach einem kleinen Switch mit VLAN-Unterstützung ist mit ein professioneller 24-Port Gigabit-Switch. Zwar hat das Modell schon ein paar Jahre auf dem Buckel, dürfte jedoch bei Haltbarkeit und Funktionen aktuelle Consumer-Modelle noch immer übertreffen. Schauen wir mal auf den Funktionsumfang, das Management und natürlich was drin steckt.

Nerd Inside