Schlagwort-Archiv: SSH

Multi-Desktop über SSH-Terminal

Wer oft via SSH in einem Terminal auf einem Remotesystem arbeitet der kennt das Problem: Man muss zum Beispiel ein Tool starten und gleichzeitig ein Logfile prüfen und vielleicht auch gleich noch die Auslastung einsehen können. Das Problem von SSH, dafür müssen gleich 3 Verbindungen aufgebaut werden und man wechselt zwischen 3 Fenstern hin und her.
Doch heute bin ich auf das Tool “Screen” gestossen – ein praktisches kleines Stück Software, das mir bisher leider vorenthalten wurde. Screen ermöglicht das Aufbauen, Umschalten und Verwalten von mehreren Anzeigen in nur einer Session. Auch ist es möglich, eine Anzeige wieder aufzunehmen, selbst wenn die Session zwischenzeitig beendet wurde – also auch durchaus geeignet für fehleranfällige Verbindungen. Oder es kann einer anderen Session ermöglicht werden, den selben Inhalt einer Anzeige zu sehen, wie ich auch in meiner Session sehe.

Unter Ubuntu gibt es Screen direkt aus den Paketquellen:

apt-get install screen

Das Handling von Screen benötigt ein kleines bisschen an Wissen, doch die paar Parameter und Tastenkombinationen sollte man sich problemlos merken können… Wenn man nun mit Screen loslegen will, so sollte man zuerst einen neuen Screen erzeugen und diesen mit einem Namen versehen:

screen -S initial

Will man innerhalb einer aktiven Anzeige eine Neue erstellen, so verwendet man CTRL + A + C (create). Zum Wechseln zwischen einzelnen Anzeigen gibt es CTRL + A + SPACE und zum löschen CTRL + A + D (delete / detach).

Weiterlesen

SSH von ESXi absichern

Vor kurzem habe ich ja bereits über Syslog geschrieben. Jeder der schon mal einen Server in den weiten des Internets betrieben hat (damit meine ich nicht zu Hause im eigenen Netzwerk), der weiss, wie schnell es geht, bis die ersten Bots und Kiddies mit endlosen Versuchen probieren, das SSH-Passwort zu knacken.
Für Linux-Distributionen wie Ubuntu, Debian, RedHat oder was auch immer gibt es unzählige Tools und Applikationen, welche helfen entweder den SSH-Zugriff zu verstecken, oder aber zu verteidigen.

Beides gibt es leider nicht bei meinem ESXi Server. Noch nicht mal eine anständige iptable oder hosts.deny sind vorhanden, geschweige denn von einer Firewall, wie es bei ESX Standard ist.

Um jedoch mal zu sehen, wie viele Personen versuchen, mein SSH zu knacken, habe ich ein einfaches kleines Script für Nagios geschrieben.

Ich weiss es kann noch viel optimiert werden dabei, doch es erfüllt seinen Zweck:

#!/bin/bash

# ####################################################################
# Check Syslog /var/log/SPLVS002.log for Brute Force Attacks via SSH
# by Patrick Schmid
# Version 1.0
######################################################################

export STATE_OK=0
export STATE_WARNING=1

time=`date +%H.%M.%S |cut -d'.' -f1`
time=`echo $time|sed 's/^0*//'`
time2=$(( $time - 1))
time3=$(( $time - 2))

if [ $time -lt 10 ]; then
        time=0$time
fi

if [ $time2 -lt 10 ]; then
        time2=0$time2
fi

if [ $time3 -lt 10 ]; then
        time3=0$time3
fi

compare=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f3`
compare=`echo $compare | cut -d' ' -f1`

if [ $compare -lt 10  ]; then
        attackers=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |uniq`
        computers=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |uniq |wc -l`
        attemps=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f4,14 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |wc -l`
else
        attackers=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |uniq`
        computers=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |uniq |wc -l`
        attemps=`tail -300 /var/log/SPLVS002.log |grep "from" |grep "root" |grep "attempt" | cut -d' ' -f3,13 |cut -d':' -f1,2,3 |sed -e 's/://' | tee -a |sed -e 's/://' |tee -a |grep "^$time\|^$time2\|^$time3" |cut -d' ' -f2 |sort |wc -l`
fi

[ "$attackers" ] && echo -e "$attemps attemps from $computers attackers\n$attackers"
[ "$attackers" ] || echo "No Attack running"

[ "$attackers" ] && exit $STATE_WARNING
[ "$attackers" ] || exit $STATE_OK

Und schon sieht man in Nagios selbst, was so abgeht:

Weiterlesen

DNS-320 mit fun_plug zu SSH

Ganz cool an meinem NAS DNS-320 ist die Funktion des HTTP / FTP-Downloader! So kommt es bei mir oft vor, dass ich komprimierte Dateien über das NAS herunterladen lasse.
Das Problem, dass ich hierbei aber habe, wenn ich Dateien als Archiv herunterlade, welche dann entpackt wieder auf das NAS müssen, so muss ich für das Entpacken den Umweg über meinen Computer machen, da das NAS selbst nicht entpacken kann…
Also habe ich mich mal ein bisschen schlau gemacht in den weiten des WWW und bin über eine Erweiterung für mein DNS-320 namens fun_plug gestolpert.

Dies missbraucht das abgespeckte Linux, das bereits auf dem NAS läuft und integriert weiter Funktionen wie SSH und Paketquellen.
Und beim Einloggen via SSH zeigte sich dann auch; es gibt bereits Möglichkeiten zum Entpacken im System selbst via dem Standardtools tar.

Doch von vorne. Um die Erweiterung fun_plug zu installieren, muss man die folgenden beiden Dateien auf die Hauptplatte Volume_1 kopieren:

Nun muss man das Maschinchen rebooten, wodurch automatisch telnet aktiviert wird, gefolgt von den folgenden Befehlen, die man absetzen muss, um die Grundkonfiguration zu erstellen.

1. Erstellen des Passwortes:

pwconf
passwd

2. root aktivieren:

usermod -s /ffp/bin/sh root
mkdir -p /ffp/home/root/
usermod -d /ffp/home/root/ root

3. Login testen:

login

4. Passwort niederschreiben:

cd /ffp/sbin/
wget http://blog.encodingit.ch/wp-content/uploads/2011/04/store-passwd.sh
store-passwd.sh

Weiterlesen

OpenSSH-Client und iLO

Heute war ich in der Schule und wollte auf meine Remote-Console über iLO auf meinen Server zu Hause zugreiffen. Dummerweise habe ich es nicht fertig gebracht, die auf Java basierende Konsole durch die Firewall zu schleusen, weshalb ich auf SSH und die ASCII basierte Konsole ausweichen wollte.

Doch als ich mich mittels dem openssh-client und dem Befehl “ssh user@meinserver.ch” einloggen wollte erhielt ich einen Fehler:

shell request failed on channel 0

Also habe ich auch gleich versucht mich mittels Putty zu verbinden, um eine zweite Meinung einzuholen, weil ich erst dachte, mein Router hätte mich blockiert…

Doch komischerweise hatte Putty überhaupt keine Probleme!!

Als nächstes dachte ich mir, ob es vielleicht an der Version liegen kann, da, wie mir mal zu Ohren gekommen ist, iLO 1 nur SSH1 funktionieren soll. Doch leider wollte auch dies nicht funktionieren.

Also habe ich mich nochmals mittels “SSH” versucht zu verbinden, nur dass ich mir diesmal die Debug Informationen anzeigen liess:

ssh -v user@meinserver.ch

Abgebrochen wurde die Verbindung sobald der openssh-client versuchte, meine Sprache zu übertragen:

debug1: Sending env LANG = de_CH.UTF-8

Nach längerem hin und her, und mehreren gescheiterten Versuchen habe ich dann mit “unset LANG” meine Sprache “gelöschen”. Und man glaubt es kaum, ich konnte mich auch mit dem openssh-client verbinden.

Dummerweise muss ich das nun jedes mal machen, bevor ich mich verbinden kann.

Wenn also jemand eine Lösung hat, immer her damit :-)