KategorieUncategorized

Bestimmen der globalen ipv6 Adresse hinter einer FritzBox unter Debian

So langsam habe ich die Vermutung, dass niemand meine Posts versteht … OK :/

Was ist das Problem? Das wesentliche Problem besteht darin, dass Ihr ein Linux-Server hinter einer FritzBox mit Ipv6 betreibt und diesen öffentlich zugänglich via Ipv6 machen möchtet. Dazu richtet man in der FritzBox noch die Freigabe ein und gut ist. Jetzt kommt aber das Problem.

Ich glaube nicht, dass sich jemand die Ipv6 Adressen merken kann. Also brauch man dyndns. Ruft man per Cronjob jetzt das Update-Script beim DynDns hoster auf, bekommt dieser aber nur die “public” Adresse der Fritzbox mitgeteilt. Wir sind also gekniffen.

Um die “global scope” Adresse unter debian zu besimmen hab ich mal diesen Command zusammen gebaut:

/sbin/ip -6 addr |grep  "scope global dynamic" | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

Als Ergebnis bekommt Ihr die reine Ipv6 Adresse des Systems mit dem dynamischen globalen scope.

[HowTo] Openmediavault + SSL Shared Host in NGINX + owncloud App + Server Name Indication

Der Titel hört sich super kompliziert an, und das Problem was auch nicht ganz so einfach zu knacken 🙂

Was will ich eigentlich erreichen? Ich hab zu Hausen einen OpenMediaVault NAS am laufen. Hier kann man im App Prinzip Pakete nachinstallieren (teschnisch einfach ein apt-get ;)). Es gibt auch eine ownCloud app, die sich um die generelle Konfiguration von Nginx, PHP und den Pfaden kümmert. Mein Problem liegt jetzt aber darin, dass ich verschiedene SSL-Seiten zu Hause hosten möchte. und jetzt beginnt das Problem.

omv_apps

Nun habe ich mich mal näher mit OMV auseinander gesetzt. Um herauszufinden, welche Pakte im OMV-Plugin sind, habe ich einfach per dpkg die Dateien des installieren Paketes anzeigen lassen:

dpkg-query -L openmediavault-owncloud

So sah dann das Ergebnis aus:

/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/openmediavault-owncloud
/usr/share/doc/openmediavault-owncloud/changelog.gz
/usr/share/openmediavault
/usr/share/openmediavault/locale
/usr/share/openmediavault/locale/pl_PL
/usr/share/openmediavault/locale/pl_PL/openmediavault-owncloud.po
/usr/share/openmediavault/locale/da_DA
/usr/share/openmediavault/locale/da_DA/openmediavault-owncloud.po
/usr/share/openmediavault/locale/de_DE
/usr/share/openmediavault/locale/de_DE/openmediavault-owncloud.po
/usr/share/openmediavault/locale/es_ES
/usr/share/openmediavault/locale/es_ES/openmediavault-owncloud.po
/usr/share/openmediavault/locale/fr_FR
/usr/share/openmediavault/locale/fr_FR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/gl
/usr/share/openmediavault/locale/gl/openmediavault-owncloud.po
/usr/share/openmediavault/locale/openmediavault-owncloud.pot
/usr/share/openmediavault/locale/no_NO
/usr/share/openmediavault/locale/no_NO/openmediavault-owncloud.po
/usr/share/openmediavault/locale/it_IT
/usr/share/openmediavault/locale/it_IT/openmediavault-owncloud.po
/usr/share/openmediavault/locale/pt_PT
/usr/share/openmediavault/locale/pt_PT/openmediavault-owncloud.po
/usr/share/openmediavault/locale/uk_UK
/usr/share/openmediavault/locale/uk_UK/openmediavault-owncloud.po
/usr/share/openmediavault/locale/zh_CN
/usr/share/openmediavault/locale/zh_CN/openmediavault-owncloud.po
/usr/share/openmediavault/locale/hu_HU
/usr/share/openmediavault/locale/hu_HU/openmediavault-owncloud.po
/usr/share/openmediavault/locale/gl_ES
/usr/share/openmediavault/locale/gl_ES/openmediavault-owncloud.po
/usr/share/openmediavault/locale/zh_TW
/usr/share/openmediavault/locale/zh_TW/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ru_RU
/usr/share/openmediavault/locale/ru_RU/openmediavault-owncloud.po
/usr/share/openmediavault/locale/nl_NL
/usr/share/openmediavault/locale/nl_NL/openmediavault-owncloud.po
/usr/share/openmediavault/locale/tr_TR
/usr/share/openmediavault/locale/tr_TR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ko_KR
/usr/share/openmediavault/locale/ko_KR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/sv_SV
/usr/share/openmediavault/locale/sv_SV/openmediavault-owncloud.po
/usr/share/openmediavault/locale/el_GR
/usr/share/openmediavault/locale/el_GR/openmediavault-owncloud.po
/usr/share/openmediavault/locale/ja_JP
/usr/share/openmediavault/locale/ja_JP/openmediavault-owncloud.po
/usr/share/openmediavault/mkconf
/usr/share/openmediavault/mkconf/owncloud
/usr/share/openmediavault/mkconf/nginx.d
/usr/share/openmediavault/mkconf/nginx.d/owncloud
/usr/share/openmediavault/mkconf/avahiservices.d
/usr/share/openmediavault/mkconf/avahiservices.d/owncloud
/usr/share/openmediavault/engined
/usr/share/openmediavault/engined/module
/usr/share/openmediavault/engined/module/owncloud.inc
/usr/share/openmediavault/engined/rpc
/usr/share/openmediavault/engined/rpc/owncloud.inc
/var
/var/www
/var/www/owncloud
/var/www/owncloud/apps
/var/www/owncloud/apps/user_openmediavault
/var/www/owncloud/apps/user_openmediavault/appinfo
/var/www/owncloud/apps/user_openmediavault/appinfo/version
/var/www/owncloud/apps/user_openmediavault/appinfo/info.xml
/var/www/owncloud/apps/user_openmediavault/appinfo/app.php
/var/www/owncloud/apps/user_openmediavault/group_openmediavault.php
/var/www/owncloud/apps/user_openmediavault/user_openmediavault.php
/var/www/owncloud/3rdparty
/var/www/openmediavault
/var/www/openmediavault/js
/var/www/openmediavault/js/omv
/var/www/openmediavault/js/omv/module
/var/www/openmediavault/js/omv/module/admin
/var/www/openmediavault/js/omv/module/admin/service
/var/www/openmediavault/js/omv/module/admin/service/owncloud
/var/www/openmediavault/js/omv/module/admin/service/owncloud/Shares.js
/var/www/openmediavault/js/omv/module/admin/service/owncloud/OwnCloud.js
/var/www/openmediavault/js/omv/module/admin/service/owncloud/Settings.js
/var/www/openmediavault/images
/var/www/openmediavault/images/owncloud.svg
/var/www/openmediavault/images/owncloud.png
/etc
/etc/php5
/etc/php5/fpm
/etc/php5/fpm/pool.d
/etc/php5/fpm/pool.d/openmediavault-owncloud.conf
/var/www/owncloud/3rdparty/openmediavault

Für mich interessant war jetzt eben die Konfiguration des NGINX Web-Servers. Dies passiert in dieser Datei /usr/share/openmediavault/mkconf/nginx.d/owncloud.

Hier werde ich jetzt einige Anpassungen für meine Bedürfnisse vornehmen.

[HowTo] Froxlor, SSL und Apache richtig konfigurieren

Was brauchen wir? Fangen wir mit den Zertifikaten an. Zunächst legen wir einen Ordner unter /etc/apache2 namens ssl an.

mkdir /etc/apache2/ssl/
cd /etc/apache2/ssl/

Im Anschluss erzeugen wir die notwendigen Zertifikate. Hierbei legen wir der einfachheitshalber zunächst ein Skript an.

nano create_certs.sh

In die Datei bitte folgendes einfügen:

#!/bin/sh
# Ersetzen mit Zerifikatsnamen
keyname=MyCert

openssl genrsa -out $keyname.key 2048
openssl req -new -key $keyname.key -out $keyname.csr
openssl rsa -in $keyname.key -out $keyname.key
openssl x509 -req -days 365 -in $keyname.csr -signkey $keyname.key -out $keyname.crt
cat $keyname.crt $keyname.key > $keyname.pem
chmod 664 *.crt
chmod 600 *.key
chmod 600 *.pem

Jetzt noch die Zertifikate erzeugen lassen:

sh create_certs.sh

Nun geht es im Froxlor Interface weiter. Hier müsst Ihr nun unter  Server -> Einstellungen -> SSL Einstellungen SSL aktivieren.

frox_ip1 frox_ip2

Falls es beim neustart des Appache zu folgendem Fehler kommt, muss ssl noch aktiviert werden:

Invalid command 'SSLEngine', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!

Wenn man nun das Modul aktiviert sollte es wieder funktionieren.

a2enmod ssl

Jetzt ist alles geschafft!

[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.

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