Posts mit dem Label Ubuntu werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Ubuntu werden angezeigt. Alle Posts anzeigen

Dienstag, 4. August 2026

Linux - Fehlgeschlagene Befehle (sudo) nicht zweimal eintippen

Wer regelmäßig unter Linux oder in WSL arbeitet, kennt die Situation: Ein Befehl wird eingegeben, anschließend erscheint die Meldung "Permission denied" oder "Operation not permitted". Der Grund ist in der Regel simpel: Es fehlen Root-Rechte.

Der Reflex vieler Anwender ist dann, den kompletten Befehl noch einmal einzugeben und davor ein sudo zu setzen:
sudo apt update
sudo mkdir /opt/test

Bei langen Befehlen kann das allerdings ziemlich lästig sein. Glücklicherweise gibt es einen kleinen Bash-Trick: sudo !!


Was macht !!?

Die Zeichenfolge !! steht in der Bash für den zuletzt ausgeführten Befehl.

Beispiel: 
mkdir /opt/test
mkdir: cannot create directory '/opt/test': Permission denied
sudo !!

Die Shell ersetzt !! automatisch durch den vorherigen Befehl und führt effektiv Folgendes aus: 
sudo mkdir /opt/test

Das spart Zeit und reduziert Tippfehler.


Noch praktischer: Das letzte Argument wiederverwenden

Neben !! gibt es einen weiteren hilfreichen Platzhalter: 
!$

!$ steht für das letzte Argument des vorherigen Befehls. 

Beispiel: 
mkdir test1/test2/test3

Anschließend kann direkt in das neu angelegte Verzeichnis gewechselt werden: 
cd !$

Die Shell erweitert dies zu: cd test1/test2/test3


Fazit

Die Bash-History bietet viele kleine Funktionen, die den Arbeitsalltag erleichtern. Gerade die beiden Platzhalter

  • !! → letzter Befehl
  • !$ → letztes Argument des vorherigen Befehls

gehören zu den Tricks, die man einmal lernt und anschließend nicht mehr missen möchte. Besonders bei administrativen Arbeiten auf Linux-Systemen oder in WSL können sie täglich einige Tastaturanschläge sparen und den Workflow beschleunigen.

Montag, 27. April 2026

Linux-Rechner - Apple Mac mini (2018), leise Hardware mit zweitem Leben dank Ubuntu

Der Apple Mac mini (A1993) aus dem Jahr 2018 zählt zu den letzten Intel‑Modellen von Apple – und genau das macht ihn heute besonders interessant für Linux. In dem schlichten, dunkelgrauen Aluminiumgehäuse stecken min. eine Quad‑Core‑CPU (Core i3‑8100B), 8 GByte RAM und eine 256‑GByte‑SSD. Trotz der kompakten Bauform ist das Netzteil intern verbaut. Mit vier Thunderbolt‑3‑Anschlüssen lassen sich Displays, schnelle SSDs und USB‑C‑Hardware problemlos betreiben, ein echter Pluspunkt für ein Linux‑System.

Warum Linux auf dem Mac mini?

Softwareseitig ist die Zukunft unter macOS begrenzt. Neuere macOS‑Versionen (macOS 26 und höher) unterstützen keine Intel‑Macs mehr. Spätestens ab Anfang 2028 ist daher auch mit dem Ende der Sicherheitsupdates zu rechnen.

Linux bietet hier eine klare Alternative. Distributionen wie Ubuntu 25.10 laufen stabil, sind sicherheitsseitig langfristig gepflegt und holen aus der Hardware deutlich mehr Zukunft heraus. Windows 11 fällt dagegen aus, da der speziell für Apple gefertigte Core i3‑8100B kein Firmware‑TPM 2.0 besitzt.

Alltag unter Linux: lautlos, stabil und effizient

Unter Linux überzeugt der Mac mini vor allem durch seine absolute Lautlosigkeit, selbst unter Volllast bleibt der Lüfter praktisch unhörbar. Der Stromverbrauch liegt mit etwa 11 Watt im Leerlauf bei angeschlossenem 4K‑Display etwas höher als erwartet, ist insgesamt aber weiterhin moderat. Die 8 GByte RAM reichen für typische Linux‑Einsatzbereiche wie Web, Office, Medienwiedergabe, Programmierung oder leichtgewichtige Server‑Dienste aus.

Ein Arbeitsspeicher‑Upgrade ist möglich, jedoch etwas aufwendig: Das Gerät muss nahezu komplett zerlegt werden, außerdem sind beide RAM‑Slots mit 4‑GByte‑Modulen belegt, die vollständig ersetzt werden müssen. Für viele Anwender lohnt sich dieser Schritt daher nur bedingt.

Kurz-Anleitung: Ubuntu auf dem Mac mini (2018) installieren

Die Installation von Ubuntu gelingt schnell und unkompliziert:

  • Ubuntu herunterladen
    • Das Ubuntu‑Desktop‑ISO (z. B. Ubuntu 25.10) von ubuntu.com laden.
  • Bootfähigen USB‑Stick erstellen
  • Vom USB‑Stick booten
    • Den Mac mini ausschalten, USB‑Stick einstecken und beim Einschalten die Alt‑Taste (⌥) gedrückt halten. Anschließend den USB‑Stick im Bootmenü auswählen.
  • Ubuntu installieren
    • Im Installer „Ubuntu installieren“ wählen und der Standardinstallation folgen. Grafik, Thunderbolt und externe Monitore funktionieren in der Regel sofort.

Wichtig: Broadcom‑WLAN manuell nachrüsten

Einziger Wermutstropfen beim Mac mini ist das integrierte Broadcom‑WLAN. Die erforderliche Firmware ist in Ubuntu nicht enthalten und muss manuell installiert werden.
Die passende Firmware findet man hier: https://github.com/NoaHimesaka1873/apple-bcm-firmware/releases/tag/v14.0

Vorgehensweise:

  • Firmware‑Archiv herunterladen und entpacken
  • Die enthaltenen Dateien in folgende Verzeichnisse kopieren:
    • /usr/lib/firmware/brcm
    • /lib/firmware/
  • Mac mini neu starten

Nach dem Neustart funktioniert das Broadcom‑WLAN zuverlässig auch unter Linux.

Fazit

Der Mac mini (2018) ist als macOS‑System technisch am Ende seiner Lebensdauer angekommen, als Linux‑Rechner jedoch erstaunlich vielseitig. Leise, kompakt und gut ausgestattet eignet er sich ideal als Desktop‑PC, Entwickler‑Maschine, Media‑Center oder Homeserver. Wer bereit ist, die WLAN‑Firmware einmal manuell zu installieren, erhält mit Ubuntu einen stabilen und zukunftsfähigen Rechner und schenkt dem Intel‑Mac eine zweite Karriere.

Sonntag, 22. Februar 2026

Domain - Subdomain-Suche mit Hilfe von Subfinder

Subfinder ist ein beliebtes Open-Source-Tool, das Subdomains einer Domain aus öffentlichen Quellen sammelt. Es wird häufig von Pentestern und Sicherheitsforschern genutzt, um schnell einen Überblick über die Angriffsfläche einer Domain zu erhalten. Das Tool durchsucht verschiedene öffentliche Datenquellen und aggregiert die gefundenen Subdomains in einer übersichtlichen Liste.

Wofür wird Subfinder genutzt?

Mit Subfinder kannst du herausfinden, welche Subdomains einer Domain öffentlich auffindbar sind. Das ist besonders nützlich für:

  • Sicherheitsanalysen: Identifikation potenzieller Schwachstellen oder veralteter Systeme.
  • Bug Bounty: Erhöhung der Chancen, bisher unentdeckte Subdomains und damit verbundene Sicherheitslücken zu finden.
  • Infrastruktur-Überblick: Schnelle Übersicht über die digitale Präsenz eines Unternehmens.

Installation (Go-Toolchain)

Subfinder ist in Go geschrieben und lässt sich einfach installieren. Voraussetzung ist eine funktionierende Go-Umgebung. Die Installation erfolgt mit folgendem Befehl:

go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

Nach der Installation steht dir der Befehl subfinder in deinem Terminal zur Verfügung.

Erste Schritte

Um Subdomains für eine Domain zu sammeln, führe einfach folgenden Befehl aus:

subfinder -d beispiel.de

Das Tool durchsucht nun verschiedene Quellen und gibt eine Liste aller gefundenen Subdomains aus.

Ähnlich wie theHarvester (Domain - Digitale Spurensuche mit dem Tool theHarvester), kann man auch hier für Dienste die einen API-Schlüssel benötigen diese hinterlegen. Siehe https://docs.projectdiscovery.io/opensource/subfinder/install#post-install-configuration.

Fazit

Subfinder ist ein mächtiges Werkzeug für jeden, der sich mit IT-Sicherheit, Pentesting oder Bug Bounty beschäftigt. Dank der einfachen Installation und Bedienung ist es ideal für den schnellen Einstieg in die Subdomain-Discovery.


Dienstag, 13. Januar 2026

Security - WhatWeb Open-Source-Webscanner: Webanwendungen analysieren identifizieren

WhatWeb ist ein Open-Source-Webscanner, der speziell dafür entwickelt wurde Webanwendungen zu analysieren und zu identifizieren. Ein ähnliches Vorgehen habe ich bereits unter Security - Nmap Netzwerkscanner und Kali Linux und Hacking - Netzwerkscanner, nmap, Reverse Shell und Password Cracking mit hashcat beschrieben.


Da eine Installation per Windows nicht direkt möglich ist, empfehle ich eine Installation per Windows-Subsystem für Linux (WSL) oder über Distrobox.

WhatWeb erkennt, welche Technologien eine Website nutzt z. B. Content-Management-Systeme (CMS) wie WordPress oder Joomla, Webserver (Apache, Nginx), Programmiersprachen (PHP, Python), Frameworks (React, Angular) und vieles mehr.

Durch Skripte und Automatisierung kann WhatWeb große Mengen an Websites scannen, um z. B. veraltete Software oder unsichere Konfigurationen zu finden.

Installation

git clone https://github.com/urbanadventurer/WhatWeb.git

Da WhatWeb in Ruby geschrieben ist, müssen jetzt noch die Abhängigkeiten installiert werden:
sudo apt install -y ruby ruby-dev ruby-bundler build-essential make libssl-dev zlib1g-dev libyaml-dev

Jetzt in den Ordner "./WhatWeb" wechseln und den Webscanner installieren:
sudo make install

Metadaten anzeigen in in eine XML-Datei schreiben
whatweb shemel.de --log-xml=results.xml

User-Agent hinzufügen
whatweb --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36" https://shemel.de


Sonntag, 14. Dezember 2025

Steam Deck - Mit Hilfe von Distrobox Linux-Distribution (Ubuntu) in einem Container starten

SteamOS setzt als Immutable System auf ein schreibgeschütztes Root-Dateisystem, weshalb Discover nur Flatpak-Pakete anbietet, klassische Kommandozeilenprogramme sucht man hier vergeblich. Zwar sind Basistools vorinstalliert, doch zusätzliche Software lässt sich nicht einfach über pacman nachinstallieren. Wer weitere Tools benötigt, kann auf das vorinstallierte Distrobox zurückgreifen.


Bei Distrobox handelt es sich um einen Wrapper für Podman oder Docker, welche durch im Hintergrund genutzt werden. Mit wenig Aufwand lassen sich so Images von verschiedenen Linux Distribution (z. B. Ubuntu oder Debian) nutzen, über die sich wiederum weitere Anwendungen installieren lassen.

Hintergrund: Distrobox startet andere Linux-Distributionen in Containern, so kann man deren Paketverwaltung nutzen und sogar auf schreibgeschützten Systemen "sudo" Befehle ausführen. Die Container sind nahtlos ins Host-System integriert. Sie greifen auf das Home-Verzeichnis, Netzwerk und USB-Geräte zu, nutzen aber den Kernel des Hosts, somit handelt es sich nicht um virtuelle Maschinen!

Um z.B. Ubuntu zu installieren ist jetzt eigentlich nur noch der folgende Befehl notwendig: 
distrobox-create -n ubuntu -i docker.io/library/ubuntu:24.04

Es empfiehlt sich aber die folgenden Anleitung "Install Distrobox and Podman PERMANENT on Steam Deck >= 3.5" durchzuführen.

nano ~/.bashrc Add the following line if it’s not already there:
export PATH=/home/deck/.local/bin:$PATH

Install and configure Distrobox To install Distrobox in the defined $PATH, use one of the following commands depending on whether you need the latest version (--next) or not:
curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME/.local

After installing, create the file ~/.distroboxrc if it doesn't already exist. Open it with:
nano ~/.distroboxrc

Add the following lines to configure Distrobox:
# Ensure the graphical apps can talk to the Xwayland session
xhost +si:localuser:$USER >/dev/null
# Force the use of pulseaudio inside the container
export PIPEWIRE_RUNTIME_DIR=/dev/null
# Needed to ensure distrobox can find the podman binary we previously downloaded
export PATH=/home/deck/.local/bin:$PATH
export PATH=$PATH:/home/deck/.local/bin

Install and configure Podman To install Podman, download the latest version from the GitHub releases page:
curl -L -o /home/deck/Downloads/podman-launcher-amd64 https://github.com/89luca89/podman-launcher/releases/download/v0.0.5/podman-launcher-amd64

Next, move and rename the Podman binary with ROOT permissions to the $PATH:
mv /home/deck/Downloads/podman-launcher-amd64 /home/deck/.local/bin/podman

Then, make Podman executable:
chmod +x /home/deck/.local/bin/podman

Configure the deck user’s UID and GID mapping with the following commands:
sudo touch /etc/subuid /etc/subgid
sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck 

Configure Distrobox Icon folder - (if you install distrobox with sudo) To ensure Distrobox can store its icons correctly, set the proper permissions on the /home/deck/.local/share/icons folder with:
chown deck:deck /home/deck/.local/share/icons

Verify installations After the installation steps, verify that both Distrobox and Podman are properly installed and configured. Use the following commands:
which distrobox which podman distrobox --version podman --version podman info

To create and test a ROOTLESS container, run:
distrobox create --image docker.io/library/ubuntu:24.04 --name ubuntu

For a ROOT container, use:
distrobox create --image docker.io/library/ubuntu:24.04 --name rubuntu --root


Jetzt lässt such Ubuntu mit dem folgenden Befehl starten: 
distrobox enter ubuntu

Jetzt lässt sich z.B. neofetch installieren:
sudo apt install neofetch 

Container starten / stoppen:
distrobox enter ubuntu
distrobox stop ubuntu


Einen Container löschen:
distrobox rm 

Welche Images zur Verfügung stehen:
distrobox create -C 

Liste der Container:
distrobox list

Container klonen:
distrobox create --clone ubuntu -n ubuntu-klon

Portweiterleitung einrichten:
distrobox create --unshare-netns -a "-p 8080:8000" -i ubuntu -n ubuntu-nonet
Mit "-p 8080:8000" landen alle Anfragen, die an Port 8080 des Host-Systems ankommen, direkt im Container an Port 8000.

Pakete bei distrobox create mithilfe von --additional-packages (-ap) direkt in den Container integrieren (z.B. neofetch und iproute2):
distrobox create -i debian:latest -n debian -ap "neofetch iproute2"

Container beim Erzeugen mit der Option --home einen beliebigen anderen Ordner als Heimatverzeichnis verwenden lassen:
distrobox create -i debian:latest -n debian --home ~/temp/debianhome

Anwendungen in das Startmenü des Host-Systems einbinden, mit --extra-flags kann Parameter hinzufügen:
distrobox-export
distrobox-export --app chromium



Dienstag, 4. November 2025

Steam Deck - Dymo LabelWriter 450 Treiber installieren und Etiketten drucken mit gLabels (Linux)

Ich selber besitze schon seit Jahren einen Dymo LabelWriter 450 um Adressetiketten oder auch Briefmarken zu drucken. Allerdings wird die Software von Dymo selber nur für Windows oder macOS angeboten. In diesem Beitrag beschreibe ich, wie auch eine Installation unter Linux (ArchLinux) beim Steam Deck funktioniert.


LabelWriter anschließen
Wird der LabelWriter per USB angeschlossen, so kann mit dem Kommando lsusb überprüfen ob er korrekt erkannt wurde.
Bus 001 Device 012: ID 0922:0020 Dymo-CoStar Corp. LabelWriter 450


CUPS installieren
Wird der LabelWriter korrekt erkannt, muss als nächstes die Druckersoftware CUPS (sudo pacman -S cups) installiert werden. Siehe hierzu auch meinen Beitrag Steam Deck - Install HP printer and scanner driver for ArchLinux (CUPS).
Ubuntu: sudo apt install cups cups-client printer-driver-dymo


DYMO-Druckertreiber installieren
Jetzt muss der DYMO-Druckertreiber installiert und gebaut werden.
git clone https://aur.archlinux.org/dymo-cups-drivers.git
cd ~/dymo-cups-drivers/
nano PKGBUILD
makepkg -si

Sollte der Fehler "==> FEHLER: Cannot find the fakeroot binary." erscheinen, muss noch das folgende Paket installiert werden: 
sudo pacman -S --needed base-devel

Sollte der Fehler "configure: error: C preprocessor "/lib/cpp" fails sanity check See `config.log' for more details ==> FEHLER: Ein Fehler geschah in build()." und in der in der "config.log" finden sich Fehler, wie z.B. 
/usr/include/bits/local_lim.h:38:10: fatal error: linux/limits.h: No such file or directory
/usr/include/sys/cdefs.h:31:3: error: #error "You need a ISO C or C++ conforming compiler to use the glibc headers"

Make und/oder GCC können die Header-Dateien auf Steam Deck nicht finden! SteamOS entfernt einige Header-Dateien, um Speicherplatz zu sparen. Um diese wiederherzustellen muss man folgendes tun:
sudo steamos-devmode enable
sudo steamos-unminimize --dev

Update 2026-04 (Not enough free space for steamos-unminimize): https://github.com/ValveSoftware/SteamOS/issues/1869

Die 5‑GB‑Root‑Partition ist fest und wird im Dev‑Mode sehr schnell voll, weil viele Schreibschutz‑ und Overlay‑Mechanismen wegfallen.

steamos-unminimize hat KEINE Option --disable. Alles, was steamos-unminimize --dev installiert hat, bleibt auf der Root‑Partition, bis man es manuell entfernt oder das System neu flashst.

Workaround: Dev‑Pakete gezielt entfernen!

pacman -Qi | awk '/Name/{name=$3} /Installed Size/{print $4" "$5" "name}' | sort -h
sudo pacman -Rns <paketname> 

Empfehlung: Nutze Distrobox für Entwicklung, nicht Root (z.B. Arch, Fedora, Ubuntu‑Container).


DYMO-Drucker einrichten
Die Adresse des Dymo LabelWriter muss ermittelt werden, damit man ihn unter CUPS einrichten kann:
lpinfo -v | grep DYMO
direct usb://DYMO/LabelWriter%20450?serial=11081117133724 

Mit Hilfe von "lpadmin" kann der Drucker jetzt angebunden werden. Hier mit dem  Linuxtreiber von DYMO, auch die RAW-Variante wäre möglich.
lpadmin -p dymo-label -v usb://DYMO/LabelWriter%20450?serial=11081117133724  -P /usr/share/cups/model/lw450.ppd
#lpadmin -p dymo-label-raw -v usb://DYMO/LabelWriter%20450?serial=11081117133724 -E -m raw


Mit dem Befehl "lpstat -v" kann überprüft werden, welche Drucker aktuell angebunden sind:

Die hinzugefügte Drucker-Instanz muss noch in CUPS aktiviert werden, bevor man sie verwenden kann:
cupsenable dymo-label #Warteschlange starten
cupsaccept dymo-label #Aufträge annehmen


Mit dem folgenden Befehl, lässt sich direkt über die Konsole ein schneller Testausdruck machen:
echo Dymo Druckertest! > testdruck.txt
lp -d dymo-label testdruck.txt


Etiketten drucken mit gLabels
Mit Hilfe von gLabels lassen sich Etiketten und Visitenkarten erstellen. 
Es gibt sogar passende Vorlagen für Dymo (Datei-> Neu, Marke -> Dymo, Seitenformat: beliebig) auswählen. Nun auf "Dymo 99012" Große Adressaufkleber klicken und die Auswahlmöglichkeiten bestätigen. 

Es können auch aufbereitete CSV-Datei in einem Textfeld importiert werden (Serienbrief-Funktion).


Dienstag, 14. Oktober 2025

Domain - Digitale Spurensuche mit dem Tool theHarvester

theHarvester ist ein OSINT-Tool, das automatisiert öffentlich verfügbare Informationen zu Domains aggregiert. Es nutzt über 40 Datenquellen (Suchmaschinen, DNS-Scanner und Metadaten-Dienste), um IPs, Subdomains, E-Mail-Adressen und mehr für eine initiale Angriffsflächenanalyse zu erfassen. Eine weitere Möglichkeit hatte ich vor einiger Zeit unter Security - Amass (Automated Attack Surface Mapping).


theHarvester ist über Kali Linux bereits vorinstalliert (siehe auch Windows-Subsystem für Linux (WSL) - Installation Kali Linux). Alternativ lässt sich theHarvester auch via Docker, pipx oder über den Python-Paketmanager uv aus dem lokalen Quellcode starten. Siehe auch https://github.com/laramies/theHarvester/wiki/Installation.

Unter Windows 11 kann man die Module mit dem Paketmanager winget installieren:
winget install uv Git.Git
git clone https://github.com/laramies/theHarvester
cd theHarvester


Steam Deck (Arch Linux) Installation:
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.local/bin/env
git clone https://github.com/laramies/theHarvester
cd theHarvester

Ausführen (-d 'shemel.de' Domain welche zu untersuchen ist, -b 'all' alle hinterlegten Quellen durchsuchen):
uv run theHarvester -d shemel.de -b all


Mit Hilfe von -f result, lassen sich alle Ergebnisse in eine result.xml und result.json schreiben.

Die Meldung "Missing API key for …" bedeutet, dass diese Dienste einen API-Schlüssel benötigen, für die in der Regel Gebühren anfallen. Den Schlüssel muss man in die Datei "api-keys.yaml" eintragen.

Samstag, 19. Oktober 2024

OpenSSH - Authentifizierung mittels Public-Key (Ubuntu, Raspberry Pi)

In diesem Artikel beschreibe ich, wie man den SSH-Zugang z.B. bei einem Raspberry Pi (Raspberry Pi Stretch Lite - Installation incl. SSH Fernsteuerung) für eine Authentifizierung mittels Public-Key-Verfahren konfiguriert. Basisinformationen zum Thema findet ihr in meinem Artikel Asymmetrische Kryptografie - Grundwissen (Zertifikate, OpenSSL, Public-Key-Authentifizierung, RSA).


Auf dem Client muss ein Schlüsselpaar erstellt werden, der öffentliche Schlüssel muss dann  auf den Server übertragen werden. Damit ein Login ohne Passwort möglich ist, muss der Server für die Schlüssel-Authentifizierung eingerichtet werden.

Schlüsselpaar am Client generieren mit ssh-keygen:
ssh-keygen -b 4096

Ich empfehle an dieser Stelle den Standardspeicherort beizubehalten, so kann der SSH-Client den SSH-Schlüssel automatisch bei der Authentifizierung finden.

Die Passphrase ist optional, welche zur Verschlüsselung der privaten Schlüsseldatei verwendet wird. Es wird empfohlen, den Schlüssel mit einer Passphrase zu schützen!

Jetzt muss der öffentliche Schlüssel auf den Server übertragen werden. Dies erfolgt mittels ssh-copy-id:
ssh-copy-id -i .ssh/id_rsa.pub pi@192.168.1.110

Der öffentliche Schlüssel befindet sich jetzt am Server, dies kann man mittels ssh testen:
ssh -i .ssh/id_rsa pi@192.168.1.110

Hinweis: Es wird hier jetzt nach Passphrase gefragt, mit der der Schlüssel geschützt ist!

Um seinen Server gegen Brute-Force-Angriffe zu schützen, sollte man die Passwort-Authentifizierung deaktivieren.

Hierfür muss die sshd-Konfiguration angepasst werden. Danach ist es nicht mehr möglich sich mit einem Passwort anzumelden:
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
sudo service ssh restart


Mittwoch, 26. Juli 2023

Rund um Linux - Shellbefehle dank "explainshell.com" verstehen

Wie kann man verstehen, was genau ein Shellbefehl macht ohne die jeweiligen Manpages zu lesen? Die Webseite explainshell.com kann hier helfen! Nützliche Befehle bzw. Beispiele findet man in meinem Beitrag Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq).

Die Webseite explainshell.com durchsucht Informationen von über 30.000 Manpages.

Dennoch kann es vorkommen, dass Parameter nicht ermittelt werden können. Hier hilft dann nur eine manuelle Recherche in den jeweiligen Manpages.

Donnerstag, 18. Mai 2023

Linux - Terminal ist eingefroren (Strg-S)

Kurzer aber nützlicher Tipp, falls auch euch das Terminal einfriert.

Führt man stty -ixon aus, wird verhindert, dass "Strg-S" das Terminal anhält bzw. pausiert. Diesen Befehl am Besten in der Konfigurationsdatei des Terminals (~/.bashrc) eintragen.

# enable the freeze/unfreeze behavior CTRL-S and CTRL-C
stty -ixon

Hintergrund: ixon und ixoff werden verwendet, um darauf zu bestehen, dass "Strg-S" und "Strg-Q" als Kontrollflusssignale (Bildlaufsperre) interpretiert werden. 

Weitere Infos zu stty finden sich hier https://tldp.org/HOWTO/Serial-HOWTO-11.html#ss11.4.


Dienstag, 21. Dezember 2021

Windows-Subsystem für Linux (WSL) - Installation Kali Linux

In den Beiträgen "Windows-Subsystem für Linux (WSL) - Installation" und "Windows-Subsystem für Linux (WSL) - Installation WSL 2" habe ich beschrieben, wie man WSL aktiviert und z.B. Ubuntu installiert. Mittlerweile gibt es eine Vielzahl an Linux Distributionen (wsl --list --online), darunter auch Kali Linux. Kali Linux ist eine Linux-Distribution (Debian basierend), die eine Sammlung von Tools für Penetrationstests und digitale Forensik umfasst.

Nach dem das Windows Subsystem installiert wurde (siehe Verlinkungen oben) kann man Kali Linux am einfachsten direkt über den Windows App Store installieren.

  • Dafür nach "Kali Linux" suchen oder den folgenden Link verwenden und https://www.microsoft.com/store/productId/9PKR34TNCV07.
  • Hinweis: Das Basis-Image enthält keine Tools (Penetration Testing Software) oder eine grafische Oberfläche, diese müssen über apt-Befehle installiert werden.
  • Als nächstes sollte Kali Linux aktualisiert werden:
  • sudo apt-get update
  • sudo apt-get dist-upgrade


Installation der Penetration Testing Software

Um beispielsweise das Metasploit Framework zu installieren, muss der folgende Befehl ausgeführt werden:

  • apt-get install metasploit-framework

Eine Übersicht für weitere nützliche Tools, wie z.B. nmap findet sich hier https://www.kali.org/tools/.


Montag, 20. Dezember 2021

Linux - Dateien hochladen (file upload) mit curl

In dem Artikel "Linux - Mit curl Dateien herunterladen und Webseiten aufrufen" habe ich bereits sehr viele Möglochkeiten von curl aufgezeigt. In diesem Beitag werde ich die Möglichkeit von einem Datei Upload beschreiben.


Upload
curl -u <user>:<passwort> -T <datei> https://server.de


Upload mit Fortschrittsanzeige
curl -u <user>:<passwort> -T <datei> https://server.de > /dev/null


Montag, 26. Juli 2021

Security - Amass (Automated Attack Surface Mapping)

Amass ist ein vielseitiges Cybersicherheitstool zum Sammeln von Informationen über Internet-Domains. Amass fragt z.B. Suchmaschinen an, untersucht SSL-Zertifikate und sendet Reverse-DNS-Anfragen an die jeweilige Domain. So lassen sich z.B. vergessene Server aufspüren und gezielt angreifen.

Eine Installation mit Hilfe von Docker, ist sehr schnell möglich:

sudo docker build -t amass https://github.com/OWASP/Amass.git

Hinweis: Docker muss natürlich installiert sein (sudo apt install docker.io) und der Docker Daemon muss gestartet sein (sudo dockerd) "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?". Siehe auch https://sebastianhemel.blogspot.com/2020/12/raspberry-pi-docker-installieren-arm.html .

Andere Installationsmöglichkeiten finden sich unter: https://github.com/OWASP/Amass/blob/master/doc/install.md

Zu dem ist Amass auch Bestandteil von Kali Linux einer Linux-Distribution (Debian basierend), die eine Sammlung von Tools für Penetrationstests und digitale Forensik umfasst. Siehe auch https://gitlab.com/kalilinux/packages/amass/blob/kali/master/doc/user_guide.md.

Das Ausführen über das Docker-Image ist relativ einfach und so kann man z.B. mit dem folgenden Befehl alle Subdomains einer bestimmten Domain herausfinden.

sudo docker run -v ~:/.config/amass/ amass enum -ip -d shemel.de

Amass verfügt über folgende Unterbefehle:

  • amass intel -- Discover targets for enumerations
  • amass enum -- Perform enumerations and network mapping
  • amass viz -- Visualize enumeration results
  • amass track -- Track differences between enumerations
  • amass db -- Manipulate the Amass graph database

Weitere Informationen und Beispiele finden sich hier:

 

Sonntag, 27. Juni 2021

Linux - Mit curl Dateien herunterladen und Webseiten aufrufen

Durch curl ist es möglich von Webseiten (mittels Login und Cookies) auf Informationen per Kommandozeile zuzugreifen oder auch Dateien herunterzuladen. In dem Beitrag Linux - Statische Kopie einer Webseite anlegen mit wget bin ich bereits auf die Möglichkeiten von wget eingegangen.

Curl unterstützt neben HTTP eine Vielzahl von weiteren Netzwerkprotokollen wie FTP, FTPS, HTTPS, GOPHER, TELNET, DICT, FILE und LDAP.

In der Regel ist curl vorinstalliert, ansonsten geht dies über den folgenden Befehl:
sudo apt-get install curl 

Folgende Optionen lassen sich Beispielhaft mit curl ausführen

Den Inhalt der heruntergeladenen Datei in den angegebenen DATEINAME schreiben, anstatt in die Standardausgabe:
curl -o DATEINAME "URL"

Wiederaufnahme eines vorangegangenen Downloads (--continue-at OFFSET)
curl -C - "URL"

Den Anforderungs- und Antwortheader anzeigen
curl -v "URL"

HTTP-Header mit eigenen Daten einfügen (z.B. Content-Type oder Accept-Language), hierbei darf -H auch mehrfach verwendet werden.
curl -H 'Content-Type: application/json' "URL"
curl -H 'Accept-Language: de' "URL"


Zum Beispiel lässt sich so das Wetter in ASCII-Grafik auf der Konsole in unterschiedlichen Sprachen anzeigen:
curl -H 'Accept-Language: de' "https://wttr.in/Obergeis"
curl -H 'Accept-Language: en' "https://wttr.in/Obergeis" 

Verbindung SSL oder TLS herstellen
curl --sslv3 "URL"
curl --tlsv1.1 "URL"

Skripte mit python oder bash ausführen
-s, Silent or quiet mode. Don't show progress meter or error messages.
-f, (HTTP)  Fail  silently  (no  output at all) on server errors.
Kleiner Tipp, mit Hilfe von "https://explainshell.com/explain?cmd=curl+-sSL" kann man schnell heausfinden, was der Befhel bedeutet. 

curl -sf "URL" | sudo python3
Achtung: Da hier direkt die Installation eines Skripts mit höheren Rechten erfolgt, macht es ggf. Sinn erst das Skript herunterzuladen um dann mit z.B. less installer.py zu prüfen, was es genau tut.

Siehe z.B. Raspberry Pi-hole - Installation
curl -sSL https://install.pi-hole.net | bash

Verbindung über einem Proxy aufbauen
curl -x yourproxy:port "URL"
-x, <[protocol://][user@password]proxyhost[:port]>

User-Agent verändern und eine URL aufrufen
curl -LA "Mozilla/5.0 (MSIE; Windows 10)" "https://www.google.com/search?q=Obergeis"
Hinweis: Siehe auch List of User Agent strings.

Formulardaten an einen Server senden, ist mit Hilfe von curl -X POST und -F für jedes Feld (field=value), welches man beim POST hinzufügen möchte, möglich.
curl -X POST -F 'username=admin' -F 'password=123456' https://test.de/login.php
Hinweis: Weitere Beispiele finden sich unter https://gist.github.com/subfuzion/08c5d85437d5d4f00e58#file-curl-md .

Cookies erstellen und verwenden (https://curl.se/docs/http-cookies.html)
Erstellen eines Cookies
curl -c "/tmp/cookie" http://localhost:8080/login -d username=admin password=123456
Verwenden eines Cookies
curl -b "/tmp/cookie" http://localhost:8080/getUserData

Curl Befehle mit Hilfe von Firefox kopieren

Dank der Entwicklerwerkzeuge in Firefox, lassen sich curl-Befehle einfach kopieren.



Samstag, 29. Mai 2021

Security - Nmap Netzwerkscanner und Kali Linux

Mit Hilfe von Nmap (Netzwerkscanner) ist es möglich eine grobe Analyse von Netzwerken und möglichen Angriffsszenarien zu erstellen. In diesem Beitrag gehe ich kurz auf die Möglichkeiten, Ursachen und das Hardening ein.

Installation von Nmap unter Ubuntu:

sudo apt-get install nmap

Anschließend lässt sich mit dem folgenden Befehl die Top 2500 Ports in einem Netzwerk scannen. Zusätzlich wird die Geschwindigkeit des Scans erhöht und Informationen zum Betriebssystem der Clients werden angezeigt. Siehe auch https://wiki.ubuntuusers.de/nmap/#Scan-Techniken.

nmap --top-ports 2500 -A -v -T4 192.168.1.0/24

Hinweis: Ja nach dem, welches Netzwerk man scannen möchte muss man die korrekt Netzmaske verwenden.

Kali Linux ist eine Linux-Distribution (Debian basierend), die eine Sammlung von Tools für Penetrationstests und digitale Forensik umfasst. Nmap ist hier als wichtges Werkzeug enthalten! Dieser erste Scan kann als Basis dienen um z.B. mit Hilfe von Nessus einen detaillierten Netzwerk- und Vulnerability (Scan von vorhandenen und bekannten Sicherheitslücken) durchzuführen.

Anschließend kann man mit Hilfe der gefunden Sicherheitslücken 

  • z.B. mit THC Hydra (hydra -L /home/pi/usernames.txt -P /home/pi/passwords.txt 192.168.1.111 ssh) oder
  • Mimikatz), gezielt Angriffe auf die jeweiligen Clients versuchen.


Was sind die Ursachen?


Was kann man dagegen tun ("Hardening")?


Montag, 7. Dezember 2020

Raspberry Pi - Docker Compose installieren

Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Anwendungen mit mehreren Containern. 

Hinweis: Docker muss zuvor installiert sein. Siehe auch Raspberry Pi - Docker installieren.

Compose verwendet eine YAML-Datei, um die Dienste der Anwendung zu konfigurieren. Anschließend kann man alle Dienste in der erstellten Konfiguration starten. Siehe hierzu auch https://docs.docker.com/compose/.

Die akutelle Compose-Version erhält man wie z.B. auch für Ubuntu über den Python-Paketmanager Pip.

Installation von Pip für Python 3:
sudo apt-get install python3-pip

Installation von Docker Compose:
sudo pip3 install docker-compose


Freitag, 9. Oktober 2020

Linux - Statische Kopie einer Webseite anlegen mit wget

Bereits in anderen Artikeln habe ich auf die Verwendungsmöglichkeiten von wget hingewiesen. Siehe z.B. Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq), Webservice Abfrage per Konsole mit wget und Erreichbarkeit von Webseiten oder Servern mit wget überpfüfen inkl. E-Mail Versand. Mit wget lassen sich sehr gut statische Kopien von Websites erstellen.


Ein einfaches wget [url] ist leider nicht ausreichend, da u.a. verschiedene Ressourcen pauschal nicht mitgeladen werden. 

Damit dies vollumfänglich funktioniert, sind die folgenden Parameter notwendig (siehe auch http://www.gnu.org/software/wget/manual/wget.html):

wget -p -nh -H -k -E -w 1 -r -l 1 [URL]

Siehe auch c't 21/2020 S. 154 Praxis Websites kopieren.

‘-p’ => ‘--page-requisites’
This option causes Wget to download all the files that are necessary to properly display a given HTML page. This includes such things as inlined images, sounds, and referenced stylesheets.

‘-nH’ => ‘--no-host-directories’
Disable generation of host-prefixed directories. By default, invoking Wget with ‘-r http://fly.srk.fer.hr/’ will create a structure of directories beginning with fly.srk.fer.hr/. This option disables such behavior.

‘-H’ => ‘--span-hosts’
Enable spanning across hosts when doing recursive retrieving (see Spanning Hosts).

‘-k’ => ‘--convert-links’
After the download is complete, convert the links in the document to make them suitable for local viewing

‘-E’ => ‘--adjust-extension’

If a file of type ‘application/xhtml+xml’ or ‘text/html’ is downloaded and the URL does not end with the regexp ‘\.[Hh][Tt][Mm][Ll]?’, this option will cause the suffix ‘.html’ to be appended to the local filename.

‘-w seconds’ => ‘--wait=seconds’
Wait the specified number of seconds between the retrievals. Use of this option is recommended, as it lightens the server load by making the requests less frequent.

‘-r’ => ‘--recursive’
Turn on recursive retrieving. See Recursive Download, for more details. The default maximum depth is 5.

‘-l depth’ => ‘--level=depth’
Specify recursion maximum depth level depth (see Recursive Download).


Allgemein nützliche Informationen zu wget finden sich auch hier: Frequently Asked Questions About GNU Wget.

Sonntag, 26. Juli 2020

Rund um Linux - Einige nützliche Befehle für die Shell II (Download mit wget und seq)

Nach 7 Jahren ein kurzes Update für meinen Beitrag "Rund um Linux - Einige nützliche Befehle für die Shell I" um die Shell als Downloadhelfer (wie auch hier Download von Video Streams mit ffmpeg und hier Regenradar - Bilder sammeln oder manuell abrufen beschrieben) verwenden zu können.


Der Download von Bildern mit einer Schleife ist relativ einfach möglich. Möchte man z.B. folgende Bilder mit einer bestimmten Nummerierung herunterladen:
Kann man dank seq Zahlen in einem definierten Bereich ausgegeben und mit Hilfe des Parameters -w auch führende Nullen hinzugefügen.

seq -w 3 10
03
04
05
06
07
08
09
10


Daraus ergibt sich der folgende Befehl:
for i in `seq -w 01 05`; do wget https://www.shemel.de/download/images/test_2020-${i}.jpg ; done

Will man die Statusmeldungen von wget unterdrücken, kann man noch den Parameter -q hinzufügen:
for i in `seq -w 01 05`; do wget -q https://www.shemel.de/download/images/test_2020-${i}.jpg ; done


Möchte man Bilder einer kompletten Gallery herunterladen, ist dies auch mit Hilfe von wget möglich.


wget -q -r -np https://www.tafel-hef.de/bilder.php

  • Mit Hilfe des Parameters -r werden rekursiv alle Dateien heruntergeladen, die bei der hinterlegten Adresse verlinkt sind.
  • Mit dem Parameter -np werden nur Dateien die unterhalb des Verzeichnisses liegen heruntergeladen (no-parent). Achtung: In dem oben genannten Beispiel funktioniert dies nicht, da die URL nicht mit "/" endet. So wird die komplette Webseite heruntergeladen (inkl. aller Bilder).

Mit Hilfe von youtube-dl, kann man per Kommandozeile Videos von youtube.com und anderen Video Plattformen herunterladen.


youtube-dl "https://www.youtube.com/watch?v=BvjterYmC98"

Viele Beispiele finden sich hier https://wiki.ubuntuusers.de/youtube-dl/ .

Freitag, 29. Dezember 2017

Was bedeutet die Nachricht “You have mail” unter Linux/UNIX?

Loggt man sich via SSH auf der Konsole eines Linux Rechners ein, erhält man manchmal eine Nachricht, dass man eine neue Mail "You have mail." hat.


Using username "hemel".
hemel@xxxxxxx.de's password:
Welcome to Ubuntu 1xxx

 * Documentation:  https://help.ubuntu.com/
You have mail.
Last login: Wed Sep  6 10:04:24 2017 from
xxxxxxx.de
hemel@xxxxxx:~$


Meistens enthalten die Nachrichten Ausgaben von Cron-Jobs oder System-Sicherheitsberichte. Daher sollte man diese Nachrichten auch lesen, da diese eventuell weiteren Handlungsbedarf erfordern.


Folgende Möglichkeiten bieten sich an, um die Nachrichten zu lesen:
  • Das Programm "mail" verwenden
    • Eine Nachrichtennummer aus der Liste eingeben, welche man lesen möchte.
    • Um zur nächsten Nachricht zu gelangen, kann man 'next' eingeben, ein weiterer nützlicher Befehl ist 'delete'. 
      • root@xxxxxx:/var/spool/mail# mail
      • No mail for root 
  • Im Mail-Verzeichnis die Nachrichten auslesen 
    • /var/mail/$USER oder /var/spool/mail/$USER 
    • Beispiel: less +G /var/mail/root
      • Zeigt die letzten Nachrichten, am Ende der Datei.

Montag, 27. Oktober 2014

Andere Farben bei der Ausgabe von ls verwenden?

Oft kommt es ja vor, dass man sich auf seinem Server per remote (z.B. per putty) von einem anderen Rechner einloggt. Je nach Bildschirm kann es dann vorkommen, dass man bestimmte Zeilen bei der ls Ausgabe auf der Bash nicht mehr lesen kann.

Die Lösung besteht darin, dass man sich die Farben der Ausgabe anpassen kann.
Um die Farbliste zu bearbeiten nutzt man folgenden Befehl, welcher die Standartfarben von Ubuntu in das Homeverzeichnis kopiert. Anschließend können diese Farben nach belieben angepasst werden.
dircolors -p > ~/.dircolors
Beispiel für das oftmals blau hinterlegten Verzeichnisse, welche sich auf einem Notebook-Display oft nur sehr schlecht lesen lassen.

 71 #DIR 01;34 # directory
 72 DIR 01;34;47 # directory




DIR=directory
01=bold
34=blue (Schriftfarbe)
47=white (Hintergrundfarbe)



Nach Anpassen der Datei kann man mit dem Setzen Umgebungsvariable testen, ob die Ausgabe passend ist (echo $LS_COLORS).
eval "$(dircolors -b ~/.dircolors)"
Die Datei ~/.dircolors wird von der ~/.bashrc automatisch ausgewertet und die Farben automatisch  gesetzt.