VM sicherung mit ghettoVCB für ESXi

ghettoVCB von William Lam (@lamw) ist eine freie alternative zur Sicherung von virtuellen Maschinen. Das Skript erstellt Backups von virtuellen Maschinen auf ESX(i)3.5/4.x/5.x-Server mithilfe einer Methode ähnlich wie des VMware VCB-Tool.

vSphere

Es werden Snapshots von laufenden virtuellen Maschinen gemacht und sichert diese danach, nach Fertigstellung werden die Snapshots wieder gelöscht bis zur nächsten Sicherung. Der einzige unterschied zu VMware VCB ist dass der Prozess auf dem ESXi-Host selbst ausgeführt wird, dabei werden wenig Ressourcen belegt. Die Backups werden über die Service-Konsole (Busybox Console) des ESX-Server gefahren, im Gegensatz zu der traditionellen Methode bei der die Backups eine virtuelle Maschine als VCB-Proxy nutzt.

Download Quelle: ghettoVCB

Die ESXi Shell muss aktiviert werden, das geschieht über die ESXi direkt Console oder aus dem vSphere Client.

ESXi-Shell

Nach dem download und entpacken, die Dateien mit WinSCP oder aus dem vSphere Client auf den ESXi-Host in ein Verzeichnis hochladen, hier der Pfad /vmfs/volumes/datastore1/ghettoVCB/

ghettoVCB-ESXi-WinSCP

Als Backup Speicher wird ein Synology NAS genutzt, dazu wird ein NFS Datenspeicher gemountet dieser auf dem NAS als NFS Freigabe erstellt wurde.

NFS Berechtigungen
DSM NFS Berechtigungen
vSphereClient
vSphere NFS Datenspeicher

Nun den crontask anhalten mit

# /bin/kill $(cat /var/run/crond.pid)

Eine Datei anlegen mit den VMs die gesichert werden sollen, und die VM Konfiguration (homer) wo die Backup Rotation definiert wird.

# vi /vmfs/volumes/datastore1/ghettoVCB/vms.cfg
homer
barth
marge

# vi /vmfs/volumes/datastore1/ghettoVCB/homer
VM_BACKUP_VOLUME=/vmfs/volumes/NAS
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=3
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=4
POWER_DOWN_TIMEOUT=5
SNAPSHOT_TIMEOUT=15
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
VMDK_FILES_TO_BACKUP="all"

crontab beschreibbar machen und Backup um 22:01 Täglich ausführen.

# chmod +w /var/spool/cron/crontabs/root
# /bin/echo "01   22   *   *   *   /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/vms.cfg > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +\%s).log" >> /var/spool/cron/crontabs/root

crontab wieder starten

# crond 
!! bei ESXi5.0 /bin/busybox crond

Testen ob der Script tut was er soll.

# cd /vmfs/volumes/datastore1/ghettoVCB/
# ./ghettoVCB.sh -f vms.cfg -d dryrun

cronjob persistent machen, damit nach dem nächsten Reboot wieder alles läuft.

# chmod +w /etc/rc.local
# vi/etc/rc.local
... (unten anhängen)
/bin/kill $(cat /var/run/crond.pid)
/bin/echo "01   22   *   *   *   /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB.sh -f /vmfs/volumes/datastore1/ghettoVCB/vms.cfg > /vmfs/volumes/datastore1/ghettoVCB/ghettoVCB-backup-$(date +\%s).log" >> /var/spool/cron/crontabs/root crond 
/sbin/auto-backup.sh

Die Sicherung der konfigurierten VMs wird nun zur definierten Zeit starten, berücksichtigt wird nicht die Zeit der Konsole, sondern die die im vSphere Client angezeigt wird.

ASG Remote Desktop

ASG Remote Desktop (vRD) ist ein Tool für die Administration und Verwaltung von Server und Workstations über die Sitzungsprotokolle RDP, ICA, VNC, SSH etc.cicada3

ASG Remote Desktop
ASG Remote Desktop

(vRD): visionapp Remote Desktop speichert die Einstellungen und Verbindungsinformationen von Remote-Desktop-Sitzungen unter Windows, Citrix, Unix/Linux oder Mac OS X und stellt sie in einer Ordnerstruktur dar. Die Vollversion sichert Einstellungen in eine Datenbank, auf die auch andere Benutzer zugreifen können. Die vielseitige Integrierbarkeit von ASG Remote Desktop 2012 ermöglicht die Einbindung externer Programme wie PuTTY,  WinSCP, vSphere, oder VNC und weitere mehr.

Installation fail2ban

fail2ban
fail2ban

fail2ban scannt Log-Dateien (zB. /var/log/apache/error_log) und verbietet IPs, die bösartige anfragen enthalten, verhindert die suche nach Exploits, etc. um Systeme zu infizieren und zu kompromittieren versuchen. Im Allgemeinen wird fail2ban verwendet um Firewall-Regeln zu aktualisieren, um die Herkunfts IP-Adressen für eine bestimmte Zeitdauer abzulehnen, wobei andere Dienste ihre Aktion wie zB. der Mail Transport Agent weiter Emails verarbeiten können.

Fail2Ban ist freie Software unter GNU General Public License Version 2 und kommt Out-of-the-Box, der Filter ist für verschiedene Dienste wie Apache, Bind, Postfix, SSH etc. einsetzbar. fail2ban ist in der Lage, die Rate der falsch-Authentifizierungen zu reduzieren, versucht aber nicht das Risiko schwacher Authentifizierung zu beseitigen.

Als erstes wird das Packet aus dem Fedora repo installiert und gleich gestartet, hier auf einem CentOS 5.

wgets http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum repolist
yum install fail2ban
chkconfig --add fail2ban
chkconfig fail2ban on
service fail2ban start

Falls nicht schon vorhanden die Log-Datei erstellen:

mkdir /var/named/chroot/var/log/named
touch /var/named/chroot/var/log/named/security.log
chown named /var/named/chroot/var/log/named

Nun editieren wir die fail2ban Konfiguration:

# vi /etc/fail2ban/jail.conf

Hier in diesem Beispiel der Bind Daemon:

bantime = 1440
[named-refused-udp]
enabled = true
logpath = /var/named/chroot/var/log/named/security.log
[named-refused-tcp]
enabled = true
logpath = /var/named/chroot/var/log/named/security.log
# vi /etc/named.conf
logging {
 channel security_file { 
 file "/var/log/named/security.log" versions 3 size 30m;
  severity dynamic;
  print-time yes;
  };
  category security {
   security_file;
 };
};

service named restart

Im  security-Log von named werden nun ggf. abgelehnte anfragen protokolliert.

# tail -f /var/named/chroot/var/log/named/security.log
23-Jan-2010 07:19:56.534 client 10.1.162.1#28320: query (cache) './NS/IN' denied
# tail /var/log/messages
Sep  6 14:21:35 ns2 fail2ban.actions: WARNING [named-refused-tcp] Ban 10.1.162

Die durch fail2ban eingefügten iptables ketten ausgeben.

# iptables -L -n |grep fail2ban

Server Memory cache buffers reset

Welcher Linux Admin kennt das nicht, nach einer Gewissen uptime ist fast das gesamte Memory für cache und buffers des Servers verbraucht, eigentlich ist es nicht nötig in das Memory Management des Systems einzugreifen, ist das System jedoch knapp an Arbeitsspeicher, lässt sich mit einem einfachen Script Abhilfe schaffen.

Nach root Login wird folgendes Script editiert:free_mem

[root@homer ~]# vi /usr/sbin/clearcache.sh

#!/bin/bash
# freeing cache buffers

echo $(date) >> /var/log/clearcache.log

freemem_before=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_before=$(echo "$freemem_before/1024.0" | bc)

cachedmem_before=$(cat /proc/meminfo | grep "^Cached" | tr -s ' ' | cut -d ' ' -f2) && cachedmem_before=$(echo "$cachedmem_before/1024.0" | bc)

sync; echo 3 > /proc/sys/vm/drop_caches

freemem_after=$(cat /proc/meminfo | grep MemFree | tr -s ' ' | cut -d ' ' -f2) && freemem_after=$(echo "$freemem_after/1024.0" | bc)

echo -e "This freed $(echo "$freemem_after - $freemem_before" | bc) MiB, so now you have $freemem_after MiB of free RAM." >> /var/log/clearcache.log

Nun das Script ausführbar machen.

chmod u+x /usr/sbin/clearcache.sh

und als crontask um 5, 13 und 21 Uhr ausführen lassen.

echo "0 5,13,21 * * * root /usr/sbin/clearcache.sh" >> /etc/crontab

Mit free -m lässt sich vor und nach dem reset das freie Memory beobachten, auch wird der Task unter /var/log/clearcache.log protokolliert und kann mit “tail /var/log/clearcache.log” auf stdout ausgegeben.

clear cache
clear cache

MySQL Server Backup auf Synology DS

Synology
Synology

Im folgenden wird in wenigen schritten beschrieben wie man seine MySQL-DB per Cron-Task vom Linux host sichert und auf ein Synology NAS mit dem Befehl scp automatisch überträgt.

Auf deiner DS muss der SSH Daemon und SFTP aktiviert werden.

SSH Aktivieren
SSH Aktivieren
SFTP Aktivieren
SFTP Aktivieren
SFTP Port
SFTP Port

Du meldest dich als root mit “su -” oder “sudo su -” auf deinem Linux host an um aus dem bash shell die folgenden Dateien zu erzeugen.

[root@homer ~]# echo "mysqldump --single-transaction -u\$1 -p\$2 wordpress > /tmp/wordpress.dump" > /usr/sbin/backup.sh
[root@homer ~]# chmod u+x /usr/sbin/backup.sh
echo "0 0 * * * root /usr/sbin/backup.sh root PASSWORD 2>&1 /var/log/mysqldump.log; scp /tmp/wordpress.dump root@10.1.1.2:/volume1/backup/wordpress/" >> /etc/crontab

Wobei PASSWORD dein MySQL Passwort ist, 10.1.1.2 ist hier die IP der Synology DS, “volume1″ ist in der regel die erste Partition und “backup” ist unser angelegtes Backup Verzeichnis.

Nun auf dem Linux host ein RSA Schlüsselpaar erzeugen, damit wird beim kopieren mit scp auf die DS kein Passwort gefragt.

[root@homer ~]# ssh-keygen -t rsa

Im Verzeichnis /root/.ssh/ wurde nun ein Privater und ein Öffentlicher Schlüssel erzeugt:

-rw------- 1 root root 1675 1. Sep 11:17 id_rsa
-rw-r--r-- 1 root root 408 1. Sep 11:17 id_rsa.pub

Der Öffentliche Schlüsssel id_rsa.pub wird nun auf unsere DS kopiert und im Pfad /root/.ssh/ in die Datei authorized_keys zu liegen kommen, hierbei wird das root Passwort gepromptet.

[root@homer ~]# scp /root/.ssh/id_rsa.pub root@10.1.1.2:/root/.ssh/authorized_keys

Fertig! nun wird wenn alles klappt um 00:00 Uhr dein Backup erstellt und automatisch (ohne Passwort Prompt) auf die Diskstation transferiert.

Dieses Howto wurde auf CentOS GNU/Linux gemacht, mit Debian sollten ebenfalls keine Anpassungen nötig sein, sonst ist dein Kommentar mit deiner disto jederzeit willkommen.

Der System crontab liegt in /etc/crontab, Du kannst auch den Befehl crontab -e verwenden oder das durch run-parts angelegte cron.daily Verzeichnis als Batch Folder nehmen.

Wake On LAN via PHP (wolviaphp) auf Synology DS Installieren

Um Wake On LAN von der Synology DiskStation ausführen zu können wird das PHP-Script (wolviaphp GPLv2) eingesetzt, dieses Script erfordert keine Packet Installation, lediglich die PHP-Funktion fsockopen wird ein Wake On LAN Magic Packet an ein WOL fähiges Gerät senden.

Zunächst wird die Web Station aus der Synology DSM Systemsteuerung aktiviert.

DSM_Systemsteuerung
DSM Systemsteuerung
Web Station aktivieren
Web Station aktivieren
Synology DSM
Synology DSM

Wake On LAN Download Quelle: http://sourceforge.net/projects/wolviaphp/
Nach dem Download und entpacken die Files auf den Share der Web Station hochladen.Windows Explorer Beispiel: \\192.168.1.110\web

a_explorer_web

Falls der Zugriff aus dem Internet durch die Firewall erlaubt wird, sollte das Wake On LAN aus dem Internet mit einem Login abgesichert werden, hierzu ein .htaccess und .htpasswd File unter /volume1/web mit vi anlegen und folgende Einträge vornehmen.

PuTTY_DiskStation
PuTTY_DiskStation

Bei “Allow from” die Intranet Host IP eintragen von welchem kein Passwort Prompt aus dem Intranet LAN erwünscht wird.

AuthName “LOGIN”
AuthType “Basic”
AuthUserFile “/volume1/web//.htpasswd”
require valid-user
Order deny,allow
Deny from all
Allow from 192.168.1.5
Satisfy Any

TIP! Für das erzeugen eines hash der mit dem User in die .htpasswd kommt kann eine der vielen Webtoolkit Seiten im Internet gefunden werden.

Der Inhalt der .htpasswd sieht dann etwa so aus:
Max_Muster:abcdef123456lmop

Wake-On-LAN
Wake-On-LAN

TIP! Mit Bookmark or click this URL to repeat this WOL-request. lässt sich die MAC Adresse des Host den man das Wake Up Magic sendet als Link speichern.

Wake-On-LAN_Bockmark
Wake-On-LAN_Bockmark

Problemlösungen:

Vergewissere dich das im Bios Setup deines Rechners die Wake On LAN Funktion aktiviert ist.
Die MAC (Hardware) Adresse der NIC lässt sich unter Windows mit dem Befehl “ipconfig /all” ermitteln, oder aus der Systemsteuerung\Netzwerk und Internet\Netzwerk- und Freigabecenter – Adaptereinstellungen ändern, Status des entsprechenden Adapters – Details – Physikalische Adresse. Bei Mac und Linux ein Terminal öffnen und den Befehl “ifconfig” eingeben.

Office mit Bing suche durch Google ersetzen

Öffne den Registrierungs-Editor: Windows-Taste + R und rgedit eingeben.

Navigiere zu
HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Common\General

Erstelle die Zeichenfolge SearchProviderName und dem Wert Google
und noch eine Zeichenfolge mit SearchProviderURI mit dem Wert

https://www.google.ch/search?q=

Schliesse den Registrierungs-Editor und starte alle Office Applikationen neu.

Mit Google suchen
Mit Google suchen

Think Tank for progressive IT management

Visit Us On TwitterVisit Us On Google PlusVisit Us On Linkedin