SSH Brute-Force mit Java. Gar nicht so schwierig wie hier beschrieben.
Die neue Version läuft jetzt nur noch mit Java 11. „SSH Brute-Force mit Java, picocli und TWHackSSH jetzt auf Java 11 umgestellt“ weiterlesen
Wenzlaff.de – Rund um die Programmierung
mit Java, Raspberry Pi, SDR, Linux, Arduino, Sicherheit, Blender, Statistik, Krypto und Blockchain
SSH Brute-Force mit Java. Gar nicht so schwierig wie hier beschrieben.
Die neue Version läuft jetzt nur noch mit Java 11. „SSH Brute-Force mit Java, picocli und TWHackSSH jetzt auf Java 11 umgestellt“ weiterlesen
Auf einem Raspberry Pi kann leicht in ca. 1-2 Stunden die aktuellste OpenSSL 3.0.0 beta installiert werden.
Also dann mal erst das Archiv runterladen und die Checksumme prüfen, wie hier beschrieben.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
// laden der Version von https://www.openssl.org/source/openssl-3.0.0-beta1.tar.gz wget https://www.openssl.org/source/openssl-3.0.0-beta1.tar.gz // auspacken des Archives, gunzip -c openssl-3.0.0-beta1.tar.gz | tar xf - // in das Verzeichnis wechseln cd openssl-3.0.0-beta1 // alles Konfigurieren ./config // nun für das compilieren 1-2 Stunden (W Zero) einplanen make // das dauert auch, habe nicht auf die Uhr geschaut ... sudo make install // Version checken openssl version // Reboot tut gut sudo reboot now // Version abfragen openssl version // Ergebnis // OpenSSL 3.0.0-beta1 17 Jun 2021 (Library: OpenSSL 3.0.0-beta1 17 Jun 2021) |
Welche Algos. werden unterstüzt in diese Version? openssl dgst -list
1 2 3 4 5 6 7 8 9 10 |
Supported digests: -blake2b512 -blake2s256 -md4 -md5 -md5-sha1 -mdc2 -ripemd -ripemd160 -rmd160 -sha1 -sha224 -sha256 -sha3-224 -sha3-256 -sha3-384 -sha3-512 -sha384 -sha512 -sha512-224 -sha512-256 -shake128 -shake256 -sm3 -ssl3-md5 -ssl3-sha1 -whirlpool |
Welche Verschlüsselungen werden in dieser Version unterstüzt? openssl enc -list
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Supported ciphers: -aes-128-cbc -aes-128-cfb -aes-128-cfb1 -aes-128-cfb8 -aes-128-ctr -aes-128-ecb -aes-128-ofb -aes-192-cbc -aes-192-cfb -aes-192-cfb1 -aes-192-cfb8 -aes-192-ctr -aes-192-ecb -aes-192-ofb -aes-256-cbc -aes-256-cfb -aes-256-cfb1 -aes-256-cfb8 -aes-256-ctr -aes-256-ecb -aes-256-ofb -aes128 -aes128-wrap -aes192 -aes192-wrap -aes256 -aes256-wrap -aria-128-cbc -aria-128-cfb -aria-128-cfb1 -aria-128-cfb8 -aria-128-ctr -aria-128-ecb -aria-128-ofb -aria-192-cbc -aria-192-cfb -aria-192-cfb1 -aria-192-cfb8 -aria-192-ctr -aria-192-ecb -aria-192-ofb -aria-256-cbc -aria-256-cfb -aria-256-cfb1 -aria-256-cfb8 -aria-256-ctr -aria-256-ecb -aria-256-ofb -aria128 -aria192 -aria256 -bf -bf-cbc -bf-cfb -bf-ecb -bf-ofb -blowfish -camellia-128-cbc -camellia-128-cfb -camellia-128-cfb1 -camellia-128-cfb8 -camellia-128-ctr -camellia-128-ecb -camellia-128-ofb -camellia-192-cbc -camellia-192-cfb -camellia-192-cfb1 -camellia-192-cfb8 -camellia-192-ctr -camellia-192-ecb -camellia-192-ofb -camellia-256-cbc -camellia-256-cfb -camellia-256-cfb1 -camellia-256-cfb8 -camellia-256-ctr -camellia-256-ecb -camellia-256-ofb -camellia128 -camellia192 -camellia256 -cast -cast-cbc -cast5-cbc -cast5-cfb -cast5-ecb -cast5-ofb -chacha20 -des -des-cbc -des-cfb -des-cfb1 -des-cfb8 -des-ecb -des-ede -des-ede-cbc -des-ede-cfb -des-ede-ecb -des-ede-ofb -des-ede3 -des-ede3-cbc -des-ede3-cfb -des-ede3-cfb1 -des-ede3-cfb8 -des-ede3-ecb -des-ede3-ofb -des-ofb -des3 -des3-wrap -desx -desx-cbc -id-aes128-wrap -id-aes128-wrap-pad -id-aes192-wrap -id-aes192-wrap-pad -id-aes256-wrap -id-aes256-wrap-pad -id-smime-alg-CMS3DESwrap -idea -idea-cbc -idea-cfb -idea-ecb -idea-ofb -rc2 -rc2-128 -rc2-40 -rc2-40-cbc -rc2-64 -rc2-64-cbc -rc2-cbc -rc2-cfb -rc2-ecb -rc2-ofb -rc4 -rc4-40 -seed -seed-cbc -seed-cfb -seed-ecb -seed-ofb -sm4 -sm4-cbc -sm4-cfb -sm4-ctr -sm4-ecb -sm4-ofb |
Beim Anmelden mit SSH auf den Raspberry Pi wird jedes mal diese Meldung ausgegeben.
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Das Nervt! Die habe ich gelöscht und durch eine für mich sinnvolle Bezeichnung welches Gerät es ist angepasst. So kann ich beim anmelden leichter sehen, mit welchem Gerät ich mich verbunden haben. Dazu einfach mit
1 |
sudo nano /etc/motd |
die Datei wie gewünscht bearbeiten.
Ich habe da z.B. nur eingetragen: Raspberry Pi Zero Nr. 18 😉
Wenn man vom Mac (Windows geht natürlich auch) aus auf einen entfernten Raspberry Pi 4 B zugreifen will, kann man das auch ohne jedesmal ein Passwort eingeben zu müssen. Dafür kann das moderne ed25519 Key Verfahren verwendet werden.
Dazu muss auf dem Pi ein .ssh Verzeichnis mit einer authorized_keys Datei angelegt werden:
1 2 3 4 5 6 7 |
# wenn das .ssh Verzeichnis noch nicht da ist, dann anlegen mit mkdir .ssh cd .ssh touch authorized_keys chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
Dann in der /etc/ssh/sshd_config des Pi die folgenden Einträge setzen: … „SSH Anmeldung an dem Raspberry Pi ohne Passwort mit Elliptische Kurve – ed25519 Key“ weiterlesen
TWHackSSH ist nun auch auf Maven Central erhältlich. Lange dort nichts mehr hochgeladen. Die habe jetzt auch eine schöne Übersichtsseite aller Abhängigkeiten mit Scann und mit E-Mail Benachrichtigung:
Jetzt geht der Download also auch darüber, wer das TWHackSSH haben will, kann über
https://search.maven.org/remotecontent?filepath=de/wenzlaff/twhackssh/de.wenzlaff.twhackssh/1.0.5/
gehen oder von diese Seite das Programm laden … „TWHackSSH 1.0.5 nun auch auf Maven Central“ weiterlesen
Der Versuch macht klug und der Erfolg kommt schon mit dem Versuch und nicht erst wenn es klappt. Wer sein eigenes Passwort für den Raspberry Pi (oder auch jeden anderen Rechner) vergessen hat, kann es ja mal mit dem SSH Brute-Force Script von nmap versuchen. Und es ist auch erschreckend, wie schnell und einfach man ein passwortgeschützen Zugang hacken kann. Aber nur an eigenen Rechnern 😉
Wir habe hier mal, wie oben dargestellt zwei Raspberry Pi. Von dem pi oben links, machen wir mit der Brute-Force-Methode einen Scann des pi auf dem ein SSH Port Nr. 22 offen ist.
Dazu benutzen wir nmap. Das können wir installieren mit
sudo apt-get install nmap oder wie hier beschrieben selbst compilieren.
Nun checken wir, ob der SSH-Port Nr. 22 offen ist mit nmap: … „SSH Passwort Zugriff mit Brute-Force Script in 19 Sekunden oder „Versuch macht klug!““ weiterlesen
Die auf dem Rechner installierten SSH-Keys können mit diesem Befehl gelistet werden:
1 |
for keyfile in ~/.ssh/id_*; do ssh-keygen -l -f "${keyfile}"; done | uniq |
Dabei ist der Algorithmus wichtig, der angezeigt wird. … „Upgrade deine SSH Keys auf: ed25519“ weiterlesen
Eine Firewall ist auf dem Raspberry Pi schnell mit dem UFW eingerichtet und kann die Sicherheit verbessern.
Die Firewall UFW muss nur installiert werden mit:
1 2 3 |
sudo apt-get update sudo apt-get upgrade sudo apt-get install ufw |
Nun schalten wir zuerst den ipv6 auf no in der Datei /etc/default/ufw, da er bei mir nicht verwendet wird. „Firewall in 10 Minuten einrichen mit UFW (Uncomplicated firewall) nicht nur auf dem Raspberry Pi“ weiterlesen
Wenn man vom Mac (Windows geht natürlich auch) aus auf einen entfernten Raspberry Pi 4 B zugreifen will, kann man das auch ohne jedesmal ein Passwort eingeben zu müssen. Dafür kann das Public RSA Key Verfahren verwendet werden.
Dazu muss auf dem Pi ein .ssh Verzeichnis mit einer authorized_keys Datei angelegt werden:
1 2 3 4 5 6 7 |
# wenn das .ssh Verzeichnis noch nicht da ist, dann anlegen mit mkdir .ssh cd .ssh touch authorized_keys chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
Dann in der /etc/ssh/sshd_config des Pi die folgenden Einträge setzen: … „Raspberry Pi 4 B mit SSH und RSA Key ohne Passwort von der Konsole aus zugreifen“ weiterlesen
Wer das Kali Linux installiert (Linux kali 4.15.0-kali2-amd64 #1 SMP Debian 4.15.11-1kali1 (2018-03-21) x86_64 GNU/Linux oder auch jede andere Version 😉 ) hat,
findet den Hinweis: „These images have a default password of “toor” and may have pre-generated SSH host keys.“.
Das heißt, das alle Image mit dem gleichen Passwort und dem gleichen SSH Host Key installiert werden.
Das muss man dann gleich als erstes ändern. Das Passwort für Root ist schnell mit passwd auf der Konsole geändert:
Auch die SSH Host Keys sind schnell erneuert, einfach auf der Konsole, die alten in ein backup Verzeichnis verschieben: „Wie können in Kali Linux die SSH Host Keys und das Passwort von Root erneuert werden?“ weiterlesen
Bisher konnte immer von der Komandozeile von einem Raspberry Pi die Dateien mit Git nach GitHub übertragen werden. Das schlug plötzlich fehl, und es wurden nicht sagende user.failed_login Fehlermeldungen im GitHub Account unter Security history angezeigt.
Da musst ich aber einiges ausprobieren, bis ich die Aktivierung der „Two-factor Authentication“ vor ein paar Tagen mit diesem Fehler in Zusammenhang bringen konnte. Es gibt da auch die Seite Creating a personal access token for the command line und die wo es ganz unten steht.
Also wenn die „Two-factor Authentication“ aktivert ist, geht die Übertragung nicht mehr mit dem User und Passwort sondern mit einem User Token, denn man auf der Seite „Developer Settings“ erzeugen muss:
Der generierte Token kann oder besser gesagt muss dann anstatt des Passwortes verwendet werden. Wenn man den Token nicht immer neu eingeben will, kann man den auch cachen mit:
1 2 3 4 5 |
# aktiviert den Cache für default 15 Minuten git config --global credential.helper cache # aktiviert Cache für 1 Stunde, timeout ist die Zeit in Sekunden git config --global credential.helper 'cache --timeout=3600' |
Manchmal lädt man mehrere Dateien hoch, und es ist einem nicht immer bewußt, das auch im 21. Jahrhundert Umlaute zu Problemen führen können.
Wer z.B. eine Datei mit Namen „Testdatei für Umlauttest.txt“ mit einem FTP Client wie z.B. File Zilla auf einen Server hochlädt, der keine Serverunterstüzung für Nicht-ASCII-Zeichen hat, erhält nach dem upload den folgenden Dateiname:
Da der upload klappt und man keine Fehlermeldung erhält, merkt man es nicht immer.
Dann passen später die Links auf diese Datei uä. nicht, oder man verwendet den „richtigen“ Dateinamen.
Ein weiteres Problem. Man kann diese Datei mit dem FTP Client nicht mehr löschen. Wenn man es versucht, kommt die Fehlermeldung: „Datei mit Sonderzeichen in Dateinamen läßt sich nicht per FTP löschen“ weiterlesen
Wenn man vom Mac aus auf einen entfernten Raspberry Pi (Zero W) zugreifen will, kann man das auch ohne jedesmal ein Passwort eingeben zu müssen. Dafür kann das Public RSA Key Verfahren verwendet werden.
Dazu muss auf dem Pi ein .ssh Verzeichnis mit einer authorized_keys Datei angelegt werden:
1 2 3 4 |
cd .ssh touch authorized_keys chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
Dann in der /etc/ssh/sshd_config des Pi die folgenden Einträge setzen:
1 2 3 4 5 6 7 |
sudo vi /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys PasswordAuthentication yes |
Dann den SSH Service restarten und in der Konsole bleiben.
1 |
sudo /etc/init.d/ssh restart |
Dann einmalig auf dem Mac einen RSA Key mit der Größe von 2048 anlegen.
Dazu bin ich in das .ssh Verzeichnis gewechselt und habe einen Key nur für die Pis ohne Passwort wie folgt angelegt:
1 |
ssh-keygen -b 2048 -t rsa |
Bei der Nachfrage nach einem Passwort, einfach nur Enter eingeben.
Da ich mehrere Keys in Verwendung habe, habe ich den Key in einer neuen Datei gespeichert, z.B. pi_id_rsa
Es werden nun zwei Dateien generiert, die pi_id_rsa mit dem privaten Key und die pi_id_rsa.pub mit dem public key.
Da mein default Key im Mac ein anderer ist, habe ich in der ~/.ssh/config Datei des Macs, wie hier schon mal beschrieben, um den folgenden Eintrag IdentityFile mit dem Namen für den privaten Key für die Verwendung des eben generierten Key und nicht des default Keys eingetragen:
1 2 3 4 5 |
Host zero HostName pi-zero Port 22 User pi IdentityFile ~/.ssh/pi_id_rsa |
Weitere Optionen zur ~/.ssh/config gibt es in der umfangreichen Referenz.
Jetzt noch den Key vom Mac auf den Pi kopieren damit er in der ~/ssh/authorized_keys Datei eingetragen wird, dazu in das ~/.ssh Verzeichnis wechseln und:
1 |
cat pi_id_rsa.pub | ssh pi@zero 'cat>>.ssh/authorized_keys' |
Jetzt von einer anderen Konsole testen ob alles läuft.
Wenn das Anmelden mit:
1 |
ssh zero |
ohne Passwort nachfrage klappt ist alles ok. Sonst in der anderen Konsole fixen, sonst sperrt man sich selbst aus.
Habe ich was vergessen?
Da gibt es mehrere Möglichkeiten. Wer sich die Raspberry Pi Adresse nicht merken will, kann auch z.B. mit ssh flug auf den Raspberry Pi zugreifen. Oder ein ping pi-flug läuft auch, wenn die Adresse eingetragen und bekannt ist.
Im Router z.B. in der Fritzbox die IP-Adressen für jeden Pi fest zuweisen mit Namen. „Wo kann die IP-Adresse für den Raspberry Pi auf den Mac und im Router fest zugewiesen werden.“ weiterlesen
Der Zugriff geht über SSH mit dem Serverauditor Client von überall.
Hier mal eine Übersicht der guten App:
Diese Mindmap als pdf und weitere Mindmaps gibt es beim Kleinhirn.eu.
Welchen SSH Client findet ihr gut?
Manchmal möchte man nur einen oder mehrere Befehle auf dem Raspberry Pi ausführen:
1 2 3 4 |
# führt zwei Befehle aus, z.B. ls -la und ls ssh pi@pi-adresse "ls -la && ls" # auch Ausschalten des Pi geht ssh pi@pi-adresse "sudo shutdown now" |
Seit den 11.08.2015 gibt es einen neue Kali 2.0 Version. Was gibt es da Neues? Diese Mindmap SANA gibt einen ersten Überblick.
Die Sana Version kann ua. auch für den Raspberry Pi verwendet werden.
Wie wird die nun installiert?
Zuerst das gepackte Kali Image kali-linux-1.0.5-armel-rpi.img.xz (ca. 1,4 GB) von Kali.org herunter laden. Für den Raspberry Pi 2 das andere File verwenden. Oder wer mit TFT Display unterstützung haben will, kann das untere File verwenden.
(Optional Signatur/Unterschrift vergleichen)
1 2 3 4 5 6 |
# Kali Key laden gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6 # Key ausgeben gpg --list-keys --with-fingerprint 7D8D0BF6 # Signaturen vergleichen gpg --verify SHA1SUMS.gpg SHA1SUMS |
(Optional) Checksumme des geladenen Archive vergleichen. Auf der Kali Homepage ist die SHA1Sum angegeben „Raspberry Pi: Wie wird die neue Kali Linux 2.0 Sana Version installiert und mit SSH in Betrieb genommen?“ weiterlesen
Beim Anmelden mit SSH auf den Raspberry Pi wird jedes mal diese Meldung ausgegeben.
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Die habe ich gelöscht und durch eine für mich sinnvolle Bezeichnung welches Gerät es ist angepasst. So kann ich beim anmelden leichter sehen, mit welchem Gerät ich mich verbunden haben. Dazu einfach mit
1 |
sudo nano /etc/motd |
die Datei wie gewünscht bearbeiten.
Ich habe da z.B. nur
Raspberry Pi Testgerät
oder für mein Produktionssever
Raspberry Pi PROD (FHEM, CUPS-Druckserver, Mail)
drinnen. So sieht man den Baum im Wald!
Wer keine Lust hat immer das Passwort einzugeben, und wer auf der sicheren Seite stehen will, kann sich mit dem RSA Key anmelden. Dazu wie hier ausführlich beschrieben auf den Raspberry Pi per SSH anmelden (evl. für alle anderen User auch wiederholen) und in das .ssh
Verzeichnis anlegen und dahin wechseln mit:
1 2 |
mkdir .ssh cd .ssh |
Wer noch RSA Keys benötigt, die können mit
1 |
ssh-keygen -t rsa |
im .ssh
Verzeichnis erstellt werden.
Auf dem Raspberry Pi die Datei
1 |
sudo nano ~/.ssh/authorized_keys |
anlegen oder ergänzen mit dem (USER)/.ssh/id_rsa.pub des Quell Rechners.
In der
1 |
sudo nano /etc/ssh/sshd_config |
sicherstellen, das diese Einträge auf yes bzw. no stehen und alle einkommentiert sind:
1 2 3 4 |
PasswordAuthentication no RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys |
SSH neu starten mit
1 |
sudo /etc/init.d/ssh restart |
Konsole offen lassen, und von einer neuen Konsole versuchen, ob der Login nun ohne Passwort geht. Sonst in der anderen Konsole den Fehler suchen.
Damit ich benachrichtigt werde, wenn die NSA oder jemand anders per SSH auf meinen Server einbricht, kann dieses Script dienen, welches eine Pushover Nachricht an das Handy oder iPad sendet wenn jeman sich per SSH auf den Raspberry Pi einloggt. Als Basis diente diese sehr ausführliche Seite die sowas mit Pushbullet realisiert hat.
Diese pushover-ssh.sh
Datei „Wie wird eine Pushover Benachrichtigung auf dem Raspberry Pi bei Zugriff per SSH versendet um Einbrüche zu erkennen?“ weiterlesen
Der Raspberry Pi (Model B) hat 512 MB RAM die sowohl die CPU als auch die GPU benutzen können. Default wird der RAM Speicher zwischen CPU und GPU mit 448 MB zu 64 MB aufgeteilt. Das kann noch optimiert werden wenn z.B. kein Monitor verwendet wird und nur mit SSH gearbeitet wird.
Nach Aufruf von
sudo raspi-config
zum Menüpunkt 8 Advanced Options gehen und Select wählen.
Dann unter A3 Memory Split und Select
Dann im Textfeld eingeben, wieviele MB vom Speicher der Grafikkarte zugewiesen werden sollen. Der minimale Wert von 16 erlaubt der CPU 496 MB Speicher zu benutzen.
So hat der rPi ca. 50 MB mehr zur Verfügung wie das SYSMON Plugin von Fhem zeigt:
und nachher
Den Anstieg des RAMs ist auch im Diagramm gut sichtbar
Wenn die Einstellung ohne raspi-config gemacht werden soll, kann auch die /boot/config.txt Datei auf gpu_mem=16 gesetzt werden. Nach reeboot stehen die neuen Einstellungen bereit.
Kennt ihr noch weitere Optimierungen?
Normal muss per:
ssh root@123.456.789.999
eine Verbindung aufgebaut werden und dann das Passwort eingegeben werden. Wenn der public Key auf dem entfernten Server liegt, wird kein Passwort benötigt. Das geht schneller.
„Wie kann die Public Key Authentication (SSH) in OpenWrt angeschaltet werden?“ weiterlesen