[HowTo] – Portsharing für ssl, ssh und openvpn

Wer kennt es nicht, das leidige Thema um IP und Ports, gewürzt mit restriktiven Proxy-Servern die nur Port 80 und 443 durchlassen? Häufig steht man ja vor dem Problem, dass man ein VPN betreiben will, welches “selbstverständlich” durch alle Firewalls durchgeht, aber nicht einen dedizierten VPN Gateway betreiben möchte. Oder aber Ihr wollt in Eurem Heimnetzwerk eine “Cloud” betreiben mittels https, brauch aber auch VPN access. Das sind die typischen Probleme wo der ssl-Multiplexer sslh unter Linux oder genauer unter Debian zu Einsatz kommt. Wie Ihr sicherlich mitbekommen habt, bin sich sehr Debian lastig, aber das es funktioniert genau so unter CentOS, RedHat, SuSE …. Natürlich funktioniert das HowTo auch mit OpenMediaVault, ist ja schließlich Debian 😉

Der Einfachheit halber installier ich heute das Paket aus den Quellen und kompiliere es NICHT neu 🙂

Los gehts!

Zuerst updaten wir unsere Paketlisten und installieren dann aus dem Repository das sslh package.

apt-get update 
apt-get install sslh

Du bekommst wahrscheinlich eine ähnliche Meldung, einfach mit “Y” bestätigen und Pakete installieren.

root@server2.tschoerner.eu:~# apt-get install sslh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libconfig9 libfile-copy-recursive-perl update-inetd
Suggested packages:
  openbsd-inetd inet-superserver
The following NEW packages will be installed:
  libconfig9 libfile-copy-recursive-perl sslh update-inetd
0 upgraded, 4 newly installed, 0 to remove and 40 not upgraded.
Need to get 124 kB of archives.
After this operation, 425 kB of additional disk space will be used.
Do you want to continue [Y/n]? Y

Bei der Installation wird man gefragt, ob der Service via ineid gestartet werden soll oder aber als standalone Dienst, Ich habe mich für die Standalone Konfiguration entschieden.

sslh

Nach der Installation wirst du wahrscheinlich eine ähnliche Meldung bekommen, das der Dienst nicht gestartet wurde. Dies passiert, da bei der Initial-Konfiguration, des Flag auf “unkonfiguerte=Yes” eingestellt ist.

sslh_install

Vor der Konfiguration stellen wir noch sicher, dass kein Dienst auf 443 mehr läuft, typischerweise SSL (Apache, Nginx, Lighttpd) oder aber ssh und OpenVPN. Diese Dienste müssen auf einen der ungelich 443 konfigueriert werden. das interne Mapping auf 443 übernimmt dann der SSL Multiplexer sslh.

sslh_sym

Zurück zur sslh Konfiguration. Unter Debian und Ubuntu liegt die Konfiguration unter “/etc/default/”.

nano /etc/default/sslh

In Zeile 12 muss der Dienst aktiviert werden, indem das RUN=no in RUN=Yes geändert wird.

Innerhalb der Daemon option können nun die Ziele der verschiedenen Dienste definiert werden, aber ACHTUNG, die Reihenfolge ist wichtig!!

Meine sslh sieht so aus:

# Default options for sslh initscript
# sourced by /etc/init.d/sslh

# Disabled by default, to force yourself
# to read the configuration:
# - /usr/share/doc/sslh/README.Debian (quick start)
# - /usr/share/doc/sslh/README, at "Configuration" section
# - sslh(8) via "man sslh" for more configuration details.
# Once configuration ready, you *must* set RUN to yes here
# and try to start sslh (standalone mode only)

RUN=yes

# binary to use: forked (sslh) or single-thread (sslh-select) version
DAEMON=/usr/sbin/sslh

DAEMON_OPTS="--user sslh --listen 0.0.0.0:443 --ssh 127.0.0.1:22 --openvpn 127.0.0.1:1194 --ssl 127.0.0.1:443 --pidfile /var/run/sslh/sslh.pid"

Nach getaner Arbeit, muss der SSLH noch einmal neu gestartet werden und wir sind fertig.

/etc/init.d/sslh restart

 

Virtualisierung @ Home

Immer mehr gibt es den Trend “Cloud”. Was ist die Cloud? Cloud, also Wolke ist etwas sehr undurchsichtiges. Spätestens jetzt sollten alle Alarmglocken klingeln. Ich habe für mich entschieden, dass ich den Trend des Daten “sharings” nicht ungebremst mit machen möchte. Ich möchte weiterhin der alleinige Besitzer meiner Daten sein und auch wissen wo diese liegen.

Wie ich bereits schon früher geboggt habe, gibt es auch alternativen zum Mainstream Cloudstorage. Hier setzt ich auf ein ownCloud, gehostet in Frankfurt auf einem Filesystem mit militärischer Verschlüsselung.

Wem das immer noch nicht reicht, der hostet seine Server zu Hause. Hier kommt das Thema Virtualisierung zum Einsatz. Mittlerweile betreiben ca. 30% aller Haushalte ein NAS-System (Network Attached Storage) zu hause. Was wäre nun, wenn man eine Stromsparende CPU mit 64bit Architektur drinnen hätte? Der Stromverbrauch immer noch niedrig, aber deutlich mehr Leistung. Willkommen in 2014! Der NAS-Hersteller QNAP hat seinen neuen NAS-Systemen Intels Celeron verpasst und bietet jetzt Virtualisierung auf dem NAS an. Für mich war das Anreiz genug mit ein solches System zusammen zu stellen und das ganze einmal zu testen.

Was kam zu Einsatz?

Beim Board habe ich mich für das ASRock Q1900M M-ATX J1900 entschieden. Es hat zwar nur 2 SATA Schnittstellen aber mein OS soll ja eh auf ein USB3 Stick. Zudem hab ich noch einen Riegel mit 8GB reingepackt. Für ein NAS ABSOLUT überdimensioniert, aber für ein Virtualisierungshost notwendig. On-Top noch ein bisschen Kleinkram aus den Kramskisten und fertig.

Der Stromverbrauch mit einer 2,5″ 500GB Platte liegt unter Vollast bei 25W und einem Transcendent Extrem 780 32GB Stick!! Ok, es ist nur eine Platte im Moment drinnen, aber jetzt kommen noch 3x 6TG WD Red im RAID 5 rein. Für alle Kritiker von ext4 auf USB Sticks: Der USB Stick ist sehr schnell 210MB/s und unterstützt dynamic Level Wearing.

Nachdem das System eigentlich als reine V-Host gedacht war habe ich sehr mit der Stabilität von ProxMox VE gehardert. Zudem war der Kernel kein 3.2er womit kein USB 3 nativ unterstützt wurde.

Jetzt läuft auf dem System OpenMediaVault. Eigentlich wollte ich das NAS OS als Gast laufen lassen, aber es hat sich als Schweizer Taschenmesser herausgestellt und bietet dank VirtualBox auch eine gute Virtualisierung.

Hier noch ein paar Stats vom System. Und für alle Kritiker, das System war im Stress, bin ja nicht hier zum Waffeln backen 🙂

[HowTo] Hinzufügen eines virtuellen NIC (Network Interface) unter debian/ubuntu

Unter Linux ist es relativ einfach mehrere IP Adressen auf eine Netzwerkkarte zu binden. Bei Debian Distributionen, so wie auch Ubuntu, muss man nur eine Datei bearbeiten.

Hierzu einfach folgenden Befehlt ausführen:

sudo nano /etc/network/interfaces

Bei mir sieht das file wie folgt aus:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.1.1.100
gateway 10.1.1.1
netmask 255.255.255.0
broadcast 10.1.1.255

Der einfachste Weg eine Virtuelle Schnittelle anzulegen, ist das eth0 Interface zu kopieren und beim Namen ein :0, :1 … anzuhängen.

auto eth0:0
iface eth0:0 inet static
address 10.1.1.101
gateway 10.1.1.1
netmask 255.255.255.0
broadcast 10.1.1.255

Im Anschluss einfach das Netzwerk neu starten und die Einstellungen übernehmen. Das spart den Reboot.

sudo ifup eth0:0

Und das war’s dann auch schon!

Shrink MSSQL Server LDF File

Heute fiel mir auf meinem DB Server auf, dass die LDF Datei extrem angewachsen war. Warum wurde ich darauf aufmerksam? Weil meine Platte voll war :/ Ein Tool, dass zur Festplattenauslastung benutzt werden kann ist Treesize.

Um nun die LDF zu shrinken, einfach aus dem Management Studio, folgendes Skript ausführen. Dabei ist darauf zu achten, das ihr FTSDB durch euren Datenbank ersetzt.

SET NOCOUNT ON 
DECLARE @OFF_DB sysname = 'FTSDB' 

Begin 
 declare @database          sysname 
       ,@Login           sysname 
       ,@Host            sysname 
       ,@OsUser          sysname 
       ,@SP_ID           smallint 
       ,@CRLF            varchar(2) 
       ,@SQL_Stmt        nVarchar(500) 
       ,@NotifyMsg       nVarchar(500) 

 declare cr_processes cursor for 
     select spid, 
         db_name(dbid) as DbName, 
         loginame      as Login, 
         hostname      as Host, 
         nt_username   as OSUser 
     from master..sysprocesses   
     where spid >=50 AND spid <> @@SPID 

 -- close/kill all connections for this database 
 open cr_processes 
 while 1 = 1 begin 
     fetch cr_processes INTO @SP_ID, @database, @Login, @Host, @OSUser 
     if @@FETCH_STATUS <> 0 break   

     IF lower(@database) = lower(@OFF_DB) BEGIN 
         select @SQL_Stmt = N'kill ' + cast( @SP_ID as varchar(10)) 
         print 'Killing Process : ' + cast( @SP_ID as varchar(10)) + ' for db=' + @Database 
         execute sp_executesql @SQL_Stmt 
     END 
 end 
 close cr_processes 
 deallocate cr_processes 
End 


ALTER DATABASE [FTSDB] SET RECOVERY SIMPLE 
DBCC SHRINKDATABASE ('FTSDB') 
ALTER DATABASE [FTSDB] SET RECOVERY FULL 

 

Windows und BIOS Zeit auf UTC

Heute bin ich auf das Problem gestoßen, dass mein Host System die BIOS Zeit auf UTC hat und meine VM aber die lokale Zeit nutzen soll. Das gleich Problem hatte ich auch auf meinem Hackintosh, da OSX die Hardware Uhr auf UTC setzt und Windows diese Zeit dann falsch interpretiert.

Ein kleiner Tweak in der Registry von Windows für dann zum Erfolg (getestet hab ich das ganze Windows 7, Windows Server 2008 R2 und Windows Server 2012).

Ihr müsst einfach das 64 bit dWord wie folgt erstellen.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation]
"RealTimeIsUniversal"=dword:00000001

Nach einem Neustart interpretiert Windows die Bioszeit als UTC Zeit.

Time Machine auf Mavericks 10.9 auf ein Linux NAS

Hi,

wie Ihr sicherlich mitbekommen habt, gab es einige auf OS X 10.9 in Bezug auf Apple Talk und Bonjour. Bei mir war es so, dass ich mein NAS mit Apple Talk nicht mehr als Backupmedium nutzen konnte.

Bildschirmfoto 2014-08-31 um 18.05.46

Zuerst dachte ich, dass der Apple Talk Standard sich soweit geändert hat, dass Mavericks nicht mehr darauf zugreifen kann oder aber es ggf. auch an meinem Hackintosh liegt. Als ich das Update bei meiner Frau auf Ihrem Macbook Air auch gemacht hatte, und dieser auch nicht mehr sichern konnte, konnte ich das zumindest ausschließen 🙂 Um Bonjour und alle “unnötigen” dienst ausschließen zu können machte ich einen ersten Test. Ich versuchte die Apple Talk (afp) Freigabe auf meinem NAS direkt anzusprechen. Zuerst habe ich auf meinem Server mittels “Mit Server Verbinden” zugegriffen, der Connectionstring bei mir lautet: afp://192.168.178.5/Time_Machine

Im Anschluss habe ich noch einmal die Time Machine Konfiguration geöffnet und konnte nun das Device als Backup Ziel hinzufügen.

mRemote zu RPD-Manager

Heute nutze ich die Zeit, um Euch ein Ersatz für mRemote vorzustellen. mRemote bedeutet so viel wie “Multi Remote”. Das Tool habe ich eingesetzt um alle meine RDP Hosts zu konfigurieren und einfach zuzugreifen. Leider wurde die Entwicklung im November 2013 eingestellt und auch das aktuelle

Als Ersatz habe ich mich für den RDP-Manager entschieden. Der RDP-Manager ist Freeware und kann hier herunter geladen werden.

Wenn Ihr nun von mRemote zum RDP-Manager migriert, werdet Ihr vor dem Problem stehen, eure Passwörter zu decrypten. Das geht dank der externen Tools von mRemote sehr einfach. Hierzu müsst Ihr einfach folgendes als Externe Applikation Konfigurieren.

mremote1

 

Der Befehl lautet:

Filename: cmd

Arguments: /k echo %password%

mremote2

SSH/Putty als VPN Ersatz

Putty kann bedingt einen Ersatz für ein typisches VPN darstellen. Folgende Einsatzmöglichkeiten wären denkbar.

Zum einen kennt jeder bestimmt ein Problem, bei dem man zu Hause was vergessen hat. Also wie komme ich jetzt auf mein NAS? Oder aber Ihr sitzt in China fest und wollt mal kurz Facebook checken. Leider funktionieren die bekannten VPN Dienste wie “Hide my Ass” oder “Tunnel Brocker” nicht. Generell funktioniert OpenVPN in China nicht, da die Jungs dort Deep Package Inspection betreiben :(.  Zudem kann man immer weniger Video aus rechtlichen Gründen auf YouTube schauen … BlaBla GEMA. Aber es gibt ja SSH und Putty!

Unter Linux setzt man einfache folgenden Befehl ab, und schon läuft alles Socksifiziert über diesen Server:

ssh -D 1080 host.dyndns.org

Unter Windows kann man sich einfach Putty nehmen und einen ssh Tunnel aufmachen.

putty

 

Google Calendar Sync Alternative

Nachdem ich ja bereits zu diesem Thema gebloggt habe, habe ich mich auf die Suche begeben.

Viele Möglichkeiten gibt es nicht 🙁

Eine habe ich weiter evaluiert. Die freie Version von gSyncIt. Funktioniert bisher gut 😉

Google Calendar Sync wird abgeschaltet

Viel Leute stehen immer wieder vor dem Problem, verschiedene Kalender zu synchronisieren. So sieht es auch bei mir aus.

Häufig wir in der Firma auf Exchange gesetzt, privat aber ein friere Dienst genutzt. Ich persönlich nutze die Google Apps Services für meine  Kollaboration Services. Nun zu Problem. vor 2 Tagen, am 8. Juli hat Google folgendes verkündet:

google_sync

 

Beutet also für mich; “Wie synce ich nun meinen Terminkalender (Firma) mit dem Google-Kalender (privat & Familie)?”

Sobald ich eine Lösung habe, blogge ich diese natürlich.