Archiv

Artikel Tagged ‘SSH’

SSH absichern – Teil 1 – root darf mal etwas nicht…

23. Oktober 2009 3 Kommentare

[aartikel]3897215233:left[/aartikel]
SSH absichern – dies ist etwas was jeder der Linux Server betreibt (egal ob in einem Firmennetzwerk, direkt über das Web erreichbar, oder beides) mit als erstes in den Angriff nehmen sollte. Linux hat einen Nachteil was Angriffe angeht: Der Benutzer auf den es alle zuerst abgesehen haben ist root und der heißt nunmal immer so.

Um root den direkten Login per SSH zu verbieten, muss nur eine Zeile in der /etc/ssh/sshd_config geändert werden:

PermitRootLogin yes
ändern zu
PermitRootLogin no

Diese Änderung in der SSH Konfiguration sorgt dafür das der direkte Login über SSH als Benutzer root untersagt wird, sprich unser SSH ist ein wenig mehr abgesichert. Mehr…

VMware: Hängende Virtuelle Maschine hart stoppen

VMware FirenlogoManchmal bleiben auch bei VMware Systemen VM´s einfach hängen. Im ersten Schritt sollte man schauen, ob die entsprechende VMware VM nur im VMware vCenter noch als angeschaltet steht, sollte der VMware ESX selbst (via “esxtop” einfach per SSH nachsehen) die VMware VM bereits als offline sehen, hilft nur warten. Im Fall das die VMware VM auch hier noch als aktiv / online gelistet wird, kann man versuchen die VMware VM per SSH Konsole sanft zu beenden (nicht gleich den Kill einläuten! Das sollte immer der letzte Weg sein):

vmware-cmd /vmfs/volumes/[VMname].vmx stop

Sollte das nicht funktionieren sollte man einen “Hard Stop” versuchen (nicht gleich den Kill einläuten! Das sollte immer der letzte Weg sein):

vmware-cmd /vmfs/volumes/[VMname].vmx stop hard

Ich hatte nun einen Fall wo dies auch nicht mehr half. Die VMware VM wollte absolut nicht aus gehen und blockierte mir so mein System. (ACHTUNG – bei der nachfolgenden Methode kann es zu Datenverlust in der hängenden VM kommen) Da half nur noch ein direkter “kill” des Prozesses für die VMware VM – nur wie findet man die passende Prozess ID um auch den richtigen Prozess mit dem kill zu erwischen?  Die VMware ID welche man über “esxtop” erhält ist leider nicht gleich der Prozess ID für die VMware VM auf dem System. Mittels des SSH Kommandos

ps auxfww | grep [VMname]

erhält man die gewünschte Prozess ID der VMware VM im gewohnten ps Syntax. Danach einfach über das SSH Kommando “kill” den Prozess direkt abschießen:

kill -9 [PID]

iPhone – Ist der Jailbreak sinnvoll?

Ob der Jailbreak Sinn macht ist eine äusserst interessante Frage! Der RIESEN Nachteil eines Jailbreaks sei ganz zu Anfang beschrieben:

Mit einem iPhone, welches “gejailbreaked”, also gehackt wurde, kann man sich zwar jede Menge zusätzlicher Software auf das iPhone laden, jedoch verliert man im gegenzug alle Garantieansprüche gegenüber Apple! Das bedeutet klipp und klar das wenn das iPhone aus irgendeinem Grund kaputt geht, kann man sich das Einsenden des geräte zu Apple sparen, bzw. man muß mit einer ganz normalen Rechnung für die Reperatur rechnen. Garantiereperaturen oder Kulanzgeschichten sind (gemäß Apple) dann ausgeschlossen, da man ja das iPhone gehackt hat.Warning

Sollte einen das nicht stören – nun, denn kann man einen Jailbreak vornehmen! Mit einem Jailbreak sollte man wenn schon auch gleich die passenden Programme zur Installation von Applikationen aus der Homebrew-Szene mitnehmen. Das geht in einem kurzem Arbeitsgang im Verlauf des Jailbreaks. Empfehlenswert sind meiner Meinung nach Cydia und der altbekannte Installer.

Ausser zusätzlicher Software bringt der Jailbreak nichts?
Weit gefehlt! Ein Jailbreak kann durchaus auch dazu genutzt werden im beispielsweise ein auf einen speziellen Provider gelocktes iPhone zu entsperren! So könnte mit einem von T-Mobile stammendem iPhone zum Beispiel eine O2 Karte eingesetzt und auch genutzt werden! Ebenso gibt es diverse kleinere Hacks, welche beispielsweise die Nutzung von VoIP über das 3G Netz ermöglichen, sprich man kann beispielsweise per Skype telefonieren, ohne an einem WLAN zu hängen. Zumindest wenn der Kartenanbieter VoIP nicht aktiv gesperrt hat.

Über Cydia (ähnlich wie der App Store) kann man auch Apps wie xGPS beziehen. xGPS ist die erste wirklich funktionierende Navigationssoftware für das iPhone die ich kenne. Teilabschnitte der Karten können auch als “Offlinekarten” abgespeichert werden, so das diese Karten auch dann zur Verfügung stehen, wenn gerade mal kein Internet erreichbar sein sollte!

Zusätzliche Klingeltöne, SMS-Sounds, Designanpassungen, neue Icons, zusätzliche Funktionen wie das “Backgrounding” – alles das ist mit einem Jailbreak möglich. WinterBoard, Backgrounder, SBSettings, BossPrefs, Cycorder, CyDelete, dTunes, openSSH, PdaNet, Processes und SBSettings seien hier mal als Suchbegriffe für typische iPhone Apps genannt.

Summa summarum kann man mit dem Jailbreak sein iPhone zwar nach belieben aufbohren, umgestalten und so weiter – man muss jedoch damit leben können, das man die Garantie verliert! Auch sei erwähnt das es derzeit noch nicht wirklich geklärt ist, ob ein Jailbreak überhaupt legal ist! Nach meinem aktuellem Stand (der ist etwas älter) gilt es noch als illegal und man müsste somit da mit weiteren Konsequenzen rechnen. T-Mobile verbietet sogar für die eigenen Kunden per AGB den Jailbreak bei den iPhoneverträgen (trotz Werbespots mit gejailbreaktem iPhone).

Ich kann nur jedem raten zuerst das iPhone OS 3.0 abzuwarten, bevor man sich einen jailbreak mit all seinen Konsequenzen antut! Manches was bis dato nur mit Jailbreak möglich ist, funktioniert dann ganz normal – ohne negative Konsequenzen… Aber das muss jeder für sich selbst entscheiden!



Empire Universe 2 - Browsergame des Jahres bestes Strategiespiel

Linux Server per rsync auf anderen Linux Server sichern

Wenn man einen Linux basierten Server auf einen anderen sichern möchte, kann man dies relativ leicht per rsync erledigen. Leider kam es bei mir in der letzten Zeit häufiger mal vor, das ich nicht die Sicherung des letzten Tages brauchte, sondern eine die ein paar Tage zurück lag – was ich bei meiner Sicherung nicht vorgesehen hatte…
Aber man lernt ja nie aus und so schrieb ich das nachfolgende Script, mit welchem vom Zielserver aus der Quellserver gesichert wird und diese Sicherung in “Tagesverzeichnisse” ablegt, also eine Sicherung je Tag in ein gesondertes Verzeichnis.
Ein kleines Feedback per Mail an mich durfte natürlich auch nicht fehlen!

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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash
# set +x
# ACHTUNG!!! DAS SCRIPT MUSS ALS ROOT LAUFEN!!!
# ACHTUNG!!! AUTHORIZED KEYS SIND ERFORDERLICH!!!!
 
##############################
# Variablendefinitionen
##############################
RECIPIENTS="maik@lnx-world.de"
HOST=$1
MAIL=/tmp/rsyncmail_$HOST
TMPLOG=/tmp/rsynclog_$HOST
LOGFILE=/var/log/rsync.log
NOW=`/bin/date`
DOW=`/bin/date +"%A"`
BACKUPSERVER=$1
BACKUPDIR=/
TARGETDIR=/var/backup/$HOST/$DOW/
E1=/proc
E2=/tmp
E3=/lost+found
OPTIONS="-az -e ssh --force --stats --numeric-ids --ignore-errors --delete-after --delete-excluded --exclude=$E1 --exclude=$E2 --exclude=$E3"
 
##############################
# Funktionsdefinitionen
##############################
make_mail()
{
        printf "Subject: LNX-WORLD RSYNC REPORT for $HOST - $NOW\n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        printf "# SCRIPTSTATUS: $SCRIPTSTATE\n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        printf "\n\n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        printf "# Script wurde mit folgenden Parametern gestartet:\n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        printf "BACKUPSERVER   = $BACKUPSERVER \n" >> $MAIL
        printf "BACKUPDIR      = $BACKUPDIR \n" >> $MAIL
        printf "TARGETDIR      = $TARGETDIR \n" >> $MAIL
        printf "EXCLUDES       = $E1 $E2 $E3 \n" >> $MAIL
        printf "NOW            = $NOW \n" >> $MAIL
        printf "DOW            = $DOW \n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        printf "# RSYNC Output:\n" >> $MAIL
        printf "#########################################\n" >> $MAIL
        /bin/cat $TMPLOG >> $MAIL
}
 
do_rsync()
{
        /usr/bin/rsync $OPTIONS $HOST:$BACKUPDIR $TARGETDIR >> $TMPLOG
        RSYNCSTATE=$?
        if [ $RSYNCSTATE -eq 0 ]; then
                SCRIPTSTATE=OK
                echo "$NOW JOB: $HOST erfolgreich gesynct" >> $LOGFILE
        else
                SCRIPTSTATE=ERROR
                echo "$NOW JOB: $HOST NICHT erfolgreich gesynct" >> $LOGFILE
        fi
}
 
check_directorys()
{
        echo "$NOW JOB: $HOST Starte RSYNC Backup"  >> $LOGFILE
        if [ ! -d /var/backup ]
        then
           echo "$NOW JOB: $HOST ERROR - Backupdirectory nicht da! EXITING" >> $LOGFILE
           exit 1
        fi
 
        if [ ! -d /var/backup/$HOST ]
        then
                mkdir /var/backup/$HOST
                echo "$NOW JOB: $HOST /var/backup/$HOST/ angelegt" >> $LOGFILE
        else
                echo "$NOW JOB: $HOST /var/backup/$HOST/ ist schon da" >> $LOGFILE
        fi
 
        if [ ! -d /var/backup/$HOST/$DOW ]
        then
           mkdir /var/backup/$HOST/$DOW
           echo "$NOW JOB: $HOST /var/backup/$HOST/$DOW angelegt" >> $LOGFILE
        else
                echo "$NOW JOB: $HOST /var/backup/$HOST/$DOW ist schon da" >> $LOGFILE
        fi
}
 
# Zuerst einmal aufräumen!
/bin/rm $MAIL
/bin/rm $TMPLOG
check_directorys
do_rsync
make_mail
cat $MAIL | sendmail -r tagessicherung@lnx-world.de -t $RECIPIENTS

Die “Features” des Scriptes sind also:

  • Sicherung von Server A in ein Backupverzeichnis auf Server B
  • 7 Sicherungen liegen auf Vorrat
  • Verzeichnisse werden bei Bedarf vom Script selbst angelegt
  • Der Backupprozess wird in ein Logfile geschrieben und dort erfasst
  • Es wird am Ende des Backuplaufes eine Reportmail an einen (oder mehrere) E-Mailempfänger versendet
  • Die Sicherung erfolgt über eine mit SSH verschlüsselte Verbindung
  • Es werden keine Sicherungsagenten auf dem Quellserver benötigt
  • Das Script kostet nichts und ist absolut frei verfügbar

P.S.
Wer mein kleines Script bei sich einsetzt schreibe mir bitte ein kleines Feedback als Kommentar, danke!
Desweiteren kann die Liste der obigen Excludes frei ergänzt werden, gerade bei Datenbanken wäre es sinnvoll hier die Datenverzeichnisse der Datenbanken zu excluden und vor dem Scriptlauf per Dump ein sauberes Sicherungsfile zu erstellen! Wenn die Excludes erweitert werden, tragt bitte die zusätzlichen E-Nummern auch in den $OPTIONS nach, sonst werden die nicht übernommen!