Posts

Dienste mit TOR und Onioncat über das Internet freigeben

Mit Hilfe von TOR und Onioncat interne Dienste über das Internet unter Umgehung von NAT verfügbar machen

In einem recht restriktivem Netzwerk benötigte ich eine Möglichkeit, um auf diverse interne Dienste über das Internet zugreifen zu können. Diesen Anlass nahm ich als Gelegenheit um etwas mit TOR und Onioncat herumzuspielen. Mein primäres Ziel war es, sicheren Zugriff auf den internen Mailserver zu gewähren, sodass man E-Mails abrufen kann ohne direkt mit dem LAN verbunden zu sein.

TOR dient hier lediglich als Transportebene, so ist keine Portweiterleitung im Router notwendig. Onioncat wird als hidden-service bereitgestellt und erzeugt ein Overlay-Netzwerk, welches IPv6 als Protokoll auf Layer 3 verwendet. Die Dienste sind dann später über eine statische IPv6 Adresse via TOR/Onioncat erreichbar.

Bare-metal RaspberryPi Kubernetes Cluster mit HypriotOS

Setup eines hochverfügbaren 'bare-metal' k3s Cluster unter HypriotOS (64bit)

Hier sehen wir uns an, wie man einen Multi-Master Kubernetes Cluster auf Basis von Rancher/k3s aufsetzt. Als Hardwareplattform verwende ich fünf Raspberry Pi 3b+ in einem Picocluster auf denen HypriotOS läuft.

Die Hochverfügbarkeit des Kubernetes Clusters wird durch die Verwendung von HA-Proxy und keepalived erreicht. Eine virtuelle Failover IP-Adresse zeigt so immer auf einen verfügbaren Kubernetes Apiserver. Persistenter Speicherplatz mit Unterstützung für read-write many Zugriff wird Dank Rook über ein verteiltes Clusterfilesystem bereitgestellt, der den verfügbaren Speicherplatz der RPi SD-Karten nutzt.

Analyse einer Schadsoftware

Analyse eines Servers der mit Rootkit und Cryptominer infiziert wurde

Vor ein paar Tagen sollte ein älterer, bis dato ungenutzter, Server in Betrieb genommen werden, hierbei machten wir eine unerwartete Entdeckung: Ein unbekannter Prozess lastete alle verbauten CPUs bis zum Anschlag aus.

Da der Server noch nicht in das Produktionsnetzwerk überführt und somit auch nicht an das Monitoringsystem angeschlossen wurde, konnte das Problem über längere Zeit unerkannt bleiben.

Von der Shell an einem WLAN Captive Portal von Aruba Networks einloggen

Von der Shell aus an einem Aruba Networks Access Point (captive portal) anmelden um eine Verbindung ins Internet herzustellen

Ab und an kommt man in die Verlegenheit, sich an einem WLAN-AP “Captive-Portal” anmelden zu müssen, bevor man das Internet nutzen kann. Häufig sind diese Geräte von Aruba Networks . Bislang fehlte mir eine einfache Methode, um mich dort von der Shell aus anmelden zu können und so habe ich mir das Ganze etwas näher angesehen.

Selbstverständlich muss das nachfolgende Bash Script für jedes Portal maßgeschneidert werden, aber generell sollte damit einem die Anmeldung gelingen:

#!/usr/bin/env bash

captive_portal="captive-portal.domain.tld"
user_agent="Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0;  rv:11.0) like Gecko"

i=1
while true; do
  curl -k "https://${captive_portal}/swarm.cgi" --compressed \
    -H "Host: ${captive_portal}" \
    -H "User-Agent: ${user_agent}" \
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -H 'Accept-Language: de,en;q=0.5' \
    -H 'Content-Type: application/x-www-form-urlencoded' \
    -H "Referer: https://${captive_portal}/swarm.cgi?opcode=cp_generate&orig_url=687474703a2f2f68656973652e64652f" \
    -H 'DNT: 1' \
    -H 'Connection: keep-alive' \
    -H 'Upgrade-Insecure-Requests: 1' --data 'orig_url=687474703a2f2f68656973652e64652f&opcode=cp_auth&user=guest&password=guest' >/dev/null 2>&1
  if [[ $(ping -c1 google.de 2>/dev/null) ]]; then
    echo "Yay! Got an internet connection, after interation: ${i}"
    break
  fi
  ((i++))
done

Theoretisch muss man so nur noch sein WLAN-Interface manuell konfigurieren und das Script ausführen. Aber es geht noch einfacher: Unter Arch Linux nutze ich netctl für die Netzwerkkonfiguration und so kann ich - wie gewohnt - ein neues, statisches Profil und einen netctl Hook für das WLAN-Netzwerk in /etc/netctl anlegen.

Dateien mit Hilfe von zssh übertragen

zssh - ein Wrapper für SSH mit Unterstützung für ZMODEM

ZMODEM war ursprünglich ein proprietäres Dateitransfer-Protokoll der Firma Omen Technologies Inc. . Das 1986 von Chuck Forsberg entwickelte Protokoll ist nun weitestgehend freie Software. Die Linux Implementierung lrzsz basiert auf dem letzten, unter public domain veröffentlichten Release, von rzsz. Neben ZMODEM gibt es weitere Varianten des Protokolls, wie XMODEM, YMODEM, SEXYZ und SyncTERM.

Das lrzsz Paket besteht aus den Programmen: rb, rx, rz, sb, sx und sz. Manche werden zum Senden von Daten via X/Y/ZMODEM benötigt, andere zum Empfangen. Für uns sind an dieser Stelle nur sz und rz interessant.

Generell sind das Protokoll und die CLI-Tools heute weitestgehend obsolet geworden, da viele Dateitransferprotokolle das Fortsetzen von fehlerhaften Übertragungen unterstützen und dabei auch noch erheblich schneller sind. Aber für eine Sache möchte ich den ZMODEM-Dateitransfer nicht missen, denn die Verwendung spart mir einiges an Arbeit: