SQL Server – Remote Access

Neulich musste ich einen SQL Datenbank über einen Port ins Internet exponieren – Ziel war, dass eine Anwendung von Remote auf diese Datenbank zugreifen kann. Um das System möglichst gut gegen Angriffe zu schützen habe ich folgende Maßnahmen ergriffen:

  • Alle Microsoft Updates installiert
  • Da für den Zugriff über das Internet SQL-Auth notwendig ist, habe ich den SA deaktiviert und einen neuen Login mit SA-Rechten angelegt, um damit Scans auf den SA zu umgehen
  • Die Infrastruktur läuft noch vollkommen auf IPv4 und damit wird am Router NAT betrieben. Der Standard-Port auf dem der SQL Server intern läuft (1433) wird am Router auf einen beliebigen externen High-Port gemapped z.B. 47113
  • Für den Zugriff auf die Datenbank selbst habe ich einen weiteren Benutzer angelegt und ihm in KeePaas ein hinreichend “scharfes” Passwort erstellen lassen

Der Zugriff von Remote sieht in einem Schaubild wie folgt aus:

image

Damit nicht von jedem beliebigen Rechner im Internet auf diesen Port zugegriffen werden kann ist es sinnvoll explizit nur die (externe) IP-Adresse des Benutzers in der Firewall des Windows Servers frei zu schalten!

Was aber tun, wenn der Benutzer eine dynamische IP-Adresse verwendet, welche z.B. bei der Telekom jede Nacht wechselt? In diesem Fall ist als Kompromiss zumindest eine Einschränkung auf den Provider möglich – hier z.B. auf 1&1 / Telefonica.

  1. Ermittlung der externen IP-Adresse des Benutzers (http://www.wieistmeineip.de) oder alternativ einfach bei einer schon bestehenden Verbindung die externe IP-Adresse aus einem netstat heraus lesen
    image
    Anmerkung: Das hier ist eine Verbindung aus dem KabelBW Netz und nicht von 1&1!
  2. Ermittlung des vom Provider verwendeten IP-Ranges beim RIP
    image
  3. Ändern des Firewall Regel des SQL Servers wie folgt:
    image
    Damit auf den Datenbankserver noch aus dem lokalen Netzwerk zugegriffen werden kann muss unter Remote IP address am einfachsten das lokale Netzwerk selbst mit z.B. 192.168.1.0/24 hinzugefügt werden.

Wer hierzu noch Verbesserungsvorschläge hat – nur zu, wir lernen immer voneinander.

Update, 2014-11-04-01:
Der Vorschlag ließ nicht lange auf sich warten – klar man kann die Verbindung zur Datenbank noch zusätzlich verschlüsseln. Hier die Anleitung für einen Windows Server 2012 R2 Essentials in Verbindung mit SQL Server 2014 Express (geht auch auf dem “alten” Windows Server 2011 Small Business Essentials mit SQL Server 2008 R2 Express):

  1. Im SQL Server Configuration Manager unter Flags, Force Encryption auf Yes stellen
    image
  2. Unter Certificate muss dann noch das entsprechende zu verwendende Zertifikat ausgewählt werden
    image
  3. Damit die Einstellungen funktionieren, muss der SQL Server neu gestartet werden
  4. Schlägt der Neustart des SQL Servers fehl und wird dazu folgende Meldung im System Eventlog protokolliert, gibt es ein Problem mit den Rechten welche der Service Account zum Zugriff auf das Zertifikat benötigt:
    image
    Im Falle von SQL Server 2014 Express handelt es sich hier um
    NT System\MSSQLSERVER – ändert man diesen auf Local System oder einen entsprechend berechtigten Service Account welcher auf folgenden Pfad „C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys“ Zugriff hat, startet der SQL Server auch wieder
  5. und damit wäre (entgegen dem verlinkten MSDN Artikel) die Verbindung fertig konfiguriert, auf dem Client muss nichts gemacht werden

Eine Prüfung ob auch wirklich verschlüsselt gearbeitet wird, ist durch folgende Abfrage möglich:

Select protocol_type, encrypt_option from sys.dm_exec_connections

image

Zusätzlich natürlich auch mit WireShark oder Netmon – was aber einen extra Artikel wert wäre. Smile

Enjoy it, b!

Windows 10 TR Preview und der SBS Connector

Am letzten Wochenende habe ich Windows 10 TR Preview (Windows X) in verschiedenen SBS Umgebungen ausprobiert und dabei folgende Erkenntnis gewonnen:

  1. Windows X / Windows Server 2011 SBS Essentials = Connector geht, aber kein Backup (manueller Domain Join)
  2. Windows X / Windows Server 2012 (R2) Essentials = Connector geht nicht (aber manueller Domain Join)

Unter Windows Server 2011 SBS Essentials kann also Windows X problemlos in die Domain integriert werden und auch über das Portal ist ein Zugriff möglich. Lediglich das Backup funktioniert nicht.

Für alle höheren Windows Server Essentials Versionen hat der Connector nicht funktioniert und hier muss wohl Microsoft ein Update liefern.

Hier noch ein Screenshot des Windows X PCs im SBS 2011 Dashboard:

image

Und überhaupt – Windows X finde ich cool Smile das wird was!

Enjoy it, b!

RRAS–wenn es mal wieder klemmt …

Schon seit langer Zeit bietet Microsoft die Möglichkeit einen Windows Server als Router zu betreiben. Was in “realen” Umgebungen nicht oft genutzt wird, kann in virtuellen Umgebungen sehr sinnvoll sein. Somit habe ich auf jedem von meinen Hyper-V Hosts noch eine VM laufen welche mir verschiedene Subnetze routet – um auch komplexe Netzwerkumgebungen nachstellen zu können. Beim hinzufügen eines weiteren Netzwerkadapters, welcher ein neues IP-Subnetz routen sollte bin ich wieder über den Bug im RRAS gestoßen das ein Adapter nicht erkannt und verwendet wird.

Hier der neue Adapter:image

und hier die RRAS welches mir trotz Neustart über den Service Manager noch durch einen Neustart der VM selbst den Adapter ins Routing integrieren wollte:image

Die Lösung war letztendlich RRAS zu deinstallieren und wieder neu zu installieren – da es sich bei mir lediglich um LAN-Routing handelt, also keine aufwendigen Konfigurationen notwendig sind, ist das kein Problem.

Falls jemand hier eine bessere Lösung hat – bitte melden Smile

Enjoy it, b!

Hyper-V Linux VM verliert IP-Adresse nach reboot

Mit der Live-Migration zwischen zwei normalen Hyper-V Hosts hat Microsoft eine feine und für kleine Firmen extrem hilfreiche Funktion seinem Hypervisor spendiert. Das Verschieben im laufenden Betrieb funktioniert problemlos für alle VMs (egal ob Windows oder Linux). Allerdings ist mir aufgefallen, dass wenn eine migrierte Linux VM verschoben wird diese nach einem Neustart die IP-Adresse verliert. Der Grund dafür ist, dass die VM selbst eine neue MAC-Adresse zugewiesen bekommt was Linux (Opensuse und SLES) dazu veranlasst einen neuen Netzwerk-Adapter im System zu konfigurieren. Dieses Verhalten lässt sich mit einer statischen Zuweisung der MAC-Adresse für die Linux-VM in den Griff bekommen, dazu ist einfach folgende Einstellung zu machen:

image

Die Default Einstellung hier ist Dynamic.

Enjoy it, b!

Windows Server 2012 R2 Backup fails

Auf einem Windows Server 2012 R2 (Essentials) bekam ich gestern die folgende Meldung:

image

Dazu war noch folgende Information in den Backup Details vorhanden:

There is not enough disk space to create the volume shadow copy on the storage location. Make sure that, for all volumes to be backup up, the minimum required disk space for shadow copy creation is available. This applies to both the backup storage destination and volumes included in the backup.
Minimum requirement: For volumes less than 500 megabytes, the minimum is 50 megabytes of free space. For volumes more than 500 megabytes, the minimum is 320 megabytes of free space.
Recommended: At least 1 gigabyte of free disk space on each volume if volume size is more than 1 gigabyte.
Detailed error: Insufficient storage available to create either the shadow copy storage file or other shadow copy data.

 

Ein Blick in das Diskmanagement des Server zeigte aber, dass keines der Volumes zu wenig freien Platz hatte:

image

Als nächsten Schritt schaute ich mir das Application Eventlog des Servers an und fand dort folgende Fehlermeldung:

image

Besonders der Rückgabewert 0x80780119 hat schon einige andere Admins zur Verzweiflung gebracht und deutet eigentlich auf ein Problem resultierend aus zu wenig Platz für ShadowCopies hin, was aber bei diesem Server aus zu schließen war.

Also dachte ich mir, dass eine vorrübergehende Deaktivierung des Windows Recovery Environments (WinRE) das Ausführen des Backups und das anschließende Aktivieren von WinRE einen Versuch wert wären (reagentc /disable bzw reagentc /enable) und in der Tat, mit deaktiviertem WinRE konnte der Server ohne Probleme gesichert werden! Hier nochmals die Schritte im Detail:

  1. reagentc /disable
  2. Sicherung
  3. reagentc /enable

Interessanter Weise laufen nach dieser Maßnahme alle Backups problemlos durch – auch wenn WinRE aktiviert ist. Sprich der oben beschriebene Workaround hat das Problem anscheinend (die letzten 4 Backups waren OK) generell behoben! Ich beobachte die Sache noch weiter und werde auch mal einen Restore machen…

Enjoy it, b!

PCI Data Aquisition and Signal Processing Controller

Während der Neuinstallation eines auf dem Supermicro X10SLM-F Serverboard basierenden Serversystems bin ich über folgende beiden Devices im Geräte-Manager gestoßen:

image

Beide lassen sich problemlos korrekt installieren, wenn von Intel das aktuelle Intel Chipset Device Software (INF Update Utility) verwendet wird:

https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=20775

image

Das Utility selbst (SetupChipset.exe), einfach als Administrator mit erweiterten Rechten ausführen, die unbekannten Geräte werden dabei selbstständig erkannt und installiert. Lediglich ein Reboot des Servers ist danach notwendig.

Enjoy it, b!

Hyper-V Generation 2 VM “spinnt”

Mit Hyper-V 2012 R2 bietet Microsoft die Generation 2 VMs an. Die Vorteile und eine generelle Übersicht kann man sich hier anschauen: http://technet.microsoft.com/en-us/library/dn282285.aspx

Für mich wiegen die Vorteile wie eine deutlich bessere Performance so stark, dass ich fast nur noch Generation 2 VMs verwende. Dabei ist mir aber eine nicht besonders schöne Eigenschaft des Wizards zum Erstellen der VM aufgefallen:

Der Wizard bietet einem 512MB als Startkonfiguration für den Hauptspeicher an.

image

Verwendet man diese (egal ob noch Dynamic Memory konfiguriert wird oder nicht) und versucht darin einen Windows Server 2012 R2 zu installieren, so erhält man die interessantesten Meldungen:

  • Der Produktkey ist ungültig oder kann nicht validiert werden
  • Die Disk ist nicht zur Installation von Windows Server geeignet

Der Grund für dieses Verhalten während der Installation ist folgender. Läuft das Setup von Windows Server, dann ist hier noch kein Dynamic Memory aktiv – sprich, die VM kann nicht mehr Speicher allokieren, als die 512MB welche als Startkonfiguration zugewiesen sind. Setup spuckt aus diesem Grund die interessantesten Fehlermeldungen aus. Lösen lässt sich das Problem einfach dadurch, dass 768MB hier eingetragen werden, und schon kann man das aktuelle Release des Windows Servers problemlos installieren.

Für den späteren Betrieb lässt sich damit durchaus mit 512MB beginnen:

image

Mit dieser Konfiguration laufen aktuell viele meiner VMs.

Enjoy it, b!