Alle Beiträge von adlerweb

Gentoo: OpenSSL ohne ECDHE

Unter Gentoo unterstützt OpenSSL standardmäßig kein ECDHE, welches für aktuelle Crypto kaum wegzudenken ist. Ursache sind die Lizenzbestimmungen bzw. Patente: Teile der Quellen dürfen ausschließlich als Sourcecoude verteilt werden und müssen daher aus vorkompilierten Teilen wie z.B. der Stage3 entfernt werden. Dieses entfernen wird über die USE-Flag „bindist“ (Binary distribution) gesteuert, welche standardmäßig eingeschaltet ist. Um OpenSSL mit EC-Cryoto zu bauen muss bindist entfernt werden – z.B. durch ein „-bindist“ in der globalen make.conf. Nach rebuild von OpenSSL und OpenSSH (sowie ggf anderer Abhängigkeiten und darauf aufbauende Software wie der Webserver) per

emerge -vuaDN openssl openssh

sollte die Crypto auch unter Gentoo verfügbar sein.

Synergy 1.7.6 (Pro) unter Gentoo nutzen

Synerwas?

Synergy ist eine Software um eine Tastatus/Maus-Kombination mit mehreren Rechnern nutzen zu können. Bewegt man z.B. die Maus am Haput-PC an den rechten Bildschirmrand steuert man fortan den danebenstehenden Laptop. Sehr praktisch, wenn man viele Systeme nebeneinander stehen hat. Alles konfigurierbar, versteht sich.

Leider hat die Software einen faden Beigeschmack: Zwar ist der Kern Open Source (GPL), wird vom Hersteller aber nur noch gegen Geld zum Download angeboten. Neue Funktionen sind ebenfalls nur noch mit DRM-online-Aktivierung verfügbar und während die Anpassung an neue Betriebssysteme soweit zügig von statten geht ist die Stabilität in meinen Augen eher auf dem absteigenden Ast.

Wie auch immer: Ich komme nicht drumrum. An einem Arbeitsplatz stehen 4 Rechner nebeneinander und ich habe keinen Nerv ständig die Tastaturen zu wechseln. Da ich dank einer Spende aus Full-Open-Source-Zeiten einen Zugang zu den Downloads habe und meine bisherige Version mit Windows 10 und Server 2016 einige Probleme hat heißt es Aktualisieren.

TLS? Proxy? WTF?

Also rauf auf die Webseite, Login-Formular ausgefüllt und … man landet auf einer HTTP-Seite. Auf der das Login-Cookie unverschlüsselt durch die Gegend geht. Great.

Weiter mit dem Windows-Setup. Installieren, aktivieren. Immerhin: Bei der Aktivierung wird offenbar die OS-API verwendet und der Request augenscheinlich per TLS mit OCSP-Abfrage über den Systemproxy übermittelt. Beim anschließenden Download der Plugins ist dann jedoch Schluss: Direktes CONNECT ohne Möglichkeit einen Proxy einzustellen. Ohne direkten Internetzugriff am Rechner also nicht viel Möglichkeiten.

Konfigurationsterror

Die Konfiguration gestaltet sich mühselig, da Dienst und GUI ständig abstürzten. Letztendlich griff ich auf den Texteditor für die Konfigurationsdatei zurück. Das ging in der Vorversion rigendwie besser. Immerhin: Im Betrieb scheint es bisher stabil zu funktionieren.

Linux? Eat my binary!

Etwas mehr Probleme hatte ich jedoch mit Linux: Im Konstrukt ist ein Gentoo-Rechner, welcher ebenfalls gesteuert werden soll. Die aktuelle Version ist dank GPL über Portage verfügbar und schnell kompiliert und installiert. Nach Eingabe meiner Zugangsdaten verwandelt sie sich nach kurzem Plugin-Download zur Pro-Version. Immerhin. Nur Verbinden geht nicht.

Auslöser ist die Pro-Version: Diese kann – im Gegensatz zum OSS-Kern – eine Verschlüsselte Verbindung zwischen den beteiligten Rechnern nutzen, sodass nicht jeder Netznutzer alle Tastenanschläge mitlesen kann. Dieses Pro-Feature ist jedoch nicht in den Quellcodes vorhanden sondern wird als „Plugin“ bei der Installation heruntergeladen und in ~/.synergy/plugins/ deponiert. Plugin heißt hierbei .so-Library. In Binär. Natürlich gelinkt gegen Bibliotheken bzw. Dateinamen, die ich nicht habe.

Konkret geht es um folgende Liste:

  • linux-vdso.so.1
  • libpthread.so.0
  • libcurl.so.4
  • libSM.so.6
  • libICE.so.6
  • libXtst.so.6
  • libX11.so.6
  • libXext.so.6
  • libXinerama.so.1
  • libXrandr.so.2
  • libXi.so.6
  • libssl.so.10
  • libcrypto.so.10
  • libdl.so.2
  • libstdc++.so.6
  • libm.so.6
  • libgcc_s.so.1
  • libc.so.6
  • libidn.so.11
  • libldap-2.4.so.2
  • liblber-2.4.so.2
  • libresolv.so.2
  • libgnutls.so.28
  • libgcrypt.so.20
  • libz.so.1
  • libuuid.so.1
  • libxcb.so.1
  • libXrender.so.1
  • libtasn1.so.6
  • libnettle.so.6
  • libhogweed.so.4
  • libgmp.so.10
  • libgpg-error.so.0
  • libXau.so.6
  • libXdmcp.so.6

Die Libraries selbst sollten auf einem Desktop-System meist vorhanden sein, nachinstallieren musste ich jedenfalls bei mir nichts. Problematisch waren jedoch libssl.so.10 und libcrypto.so.10 – diese sind unter Gentoo nicht verfügbar und dürften sich auf OpenSSL mit einer Version >= 1.0 beziehen. Die Dateibenennung scheint dabei von Debian(?) zu stammen und wird bei Gentoo anders durchgeführt. Da hierdurch das Plugin nicht lädt wird es ignoriert und die Verbindung zu dem bereits eingerichteten Windows-Clients schlägt, wegen der fehlenden Cryptofunktion, fehl. Zwar erscheint dies auch im Synergy-Log, versteckt sich aber zwischen den ganzen Connect-Nachrichten und ist schnell zu übersehen:

ERROR: failed to load plugin 'libns.so', error: libcrypto.so.10: cannot open shared object file: No such file or directory

Als Quick’n’Dirty-Workarround habe ich bei mir die angemeckerten Dateinamen als Symlink auf die echten OpenSSL-Files angelegt.

cat /usr/lib64/
ln -s libssl.so.1.0.0 libssl.so.10
ln -s libcrypto.so.1.0.0 libcrypto.so.10

Zumindest für’s erste ist hiermit das Plugin funktionsfähig und die Software wieder nutzbar. Sonderlich schön ist es trotzdem nicht.

SSD-Killer: Another one bites the dust

Es ist wieder so weit: Ich habe die nächste Cache-SSD meines Speichersystems getötet. Nach etwas über einem Jahr (375 Tage) hat nun eine Toshiba THNSNJ128GCSU das Zeitliche gesegnet und damit den Wert der Vorherigen Mushkin Chronos sogar unterboten. Etwas überraschend, da Toshiba eher im Business-Umfeld aktiv ist und Mushkin eher ins Low-Cost-Umfeld zielt. Interessanterweise sind Raw_Read_Error_Rate und Reallocated_Sector_Ct beide auf 0, lediglich der nur spärlich dokumentierte Wert 169 (Total bad block count?) meldet FAILING_NOW – nachdem er sich von 0 auf 1 änderte, also komplett ohne Ankündigung. Positiv: Immerhin blockiert die SSD nur Schreibzugriffe, das Lesen/Sichern der bestehenden Daten ist also noch problemlos möglich.

[93691.946122] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
[93691.946126] ata1.00: irq_stat 0x40000001
[93691.946129] ata1.00: failed command: WRITE DMA
[93691.946135] ata1.00: cmd ca/00:08:a0:1b:d4/00:00:00:00:00/e4 tag 19 dma 4096 out
                        res 51/04:08:a0:1b:d4/00:00:00:00:00/e4 Emask 0x1 (device error)
[93691.946138] ata1.00: status: { DRDY ERR }
[93691.946140] ata1.00: error: { ABRT }

Nächster Kandidat ist eine 850 Evo – mal schauen, ob diese das nächste Jahr durchhält.

CTS-Eventim: Offenes WLAN? Dann verkaufen wir nichts.

In öffentlichen WLAN surfen ist praktisch: Man kann unterwegs schnell noch $Dinge erledigen oder Wartezeiten produktiv nutzen. Da an diesen Einrichtungen jedoch viele Menschen gleichzeitig den selben Anschluss nutzen haben viele Anbieter solche Einrichtungen genauer im Blick: Um automatisierten Missbrauch zu vermeiden müssen häufig CAPTCHAS ausgefüllt werden (hallo, CloudFlare) oder die Nutzung von Seitenteilen (oder auch der ganzen Seite) ist nur noch mit einem bestehenden Benutzerkonto möglich. Diese Gängeleien sind ärgerlich, aber dazu werde ich später noch einen Artikel schreiben.

Wie oben schon geschrieben: Gängeleien. Man ist genervt, löst das CAPTCHA oder meldet sich an und weiter geht es. Bisher. Im ewigen Kampf Verkäufer gegen mögliche Kunden setzt der „Eintrittskartenverkauf“ CTS-Eventim einen drauf: Deren Webseite liefert bei der Nutzung von Diensten wie öffentlichen WLANs – oder auch einigen Internetprovidern mit DSLite – nur ein formloses „Access Denied“. Keine Erklärung, kein CAPTCHA, kein Weiterkommen.

Da dies kaum im Sinne des Verkäufers sein konnte kontaktierte ich den Betreiber. Mal davon abgesehen, dass eine Erklärung wohl keinem weh täte sollte ich als registrierter Kunde, der in der Vergangenheit schon öfter bestellte, doch mein Geld loswerden können, oder?

Weit gefehlt: Um Fairness zu waren müsse man diese Blockade beibehalten. Es können ja Bots kommen.

wir verfolgen eine Politik der Gerechtigkeit für unsere Kunden: Der gerechten Verteilung von Tickets sowie der Sicherheit unserer Portale räumen wir höchste Priorität ein. Daher möchten wir Reservierungs- und Buchungsbots, die für gewöhnlich Anonymisierungsdienste nutzen, von unseren Portalen fern halten. Wenn Sie also Ticketreservierungen und Buchungen ohne Aufwand und Störung durchführen möchten, bitten wir Sie, keine Anonymisierungsdienste dafür zu verwenden. Wir danken für Ihr Verständnis.

Warum man dann jedoch alle ausschließt und nicht nur versucht Bots zu verhindern bleibt wohl ein Geheimnis. Da ich die  verallgemeinerung und damit generelle Gleichstellung von gemeinsam genutzten Internetanschlüssen und „bösen“ Anonymisierungsdiensten aber ohnehin sehr zweifelhaft finde werde ich zukünftige Bestellungen an andere Dienstleister vergeben.

Veeam B&R: „Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: System.Net.Sockets.Socket“

Tolle Meldung, die das Backupsystem „Veeam Backup&Replication“ da abwirft:

Auf das verworfene Objekt kann nicht zugegriffen werden. Objektname: "System.Net.Sockets.Socket"

…heißt es lapidar in der GUI, die sonst nur darüber informiert, dass kein Backup mehr funktioniert. Zwar ist recht klar, dass es am Netzwerk hängen dürfte, da hier aber pro VM-Sicherung mindestens 5 Server involviert sind gestaltet sich das etwas aufwändiger.  Vor allem wenn alle relevanten Systeme fehlerfrei auf ICMP-Ping reagierten.

Tiefer im Log des Jobs fand sich eine Meldung, welche auf einen Fehler des Backupziels hindeutet. In meinem Fall handelt es sich hierbei um einen Linux-Server, welcher übers Netz beschickt wird.

<19> Info     [Ssh] Server (nas5.lan.adlerweb.info) version string: "SSH-2.0-OpenSSH_7.2"
<19> Info     Channel encryption check: *** to ***
<19> Info             [AP] Starting client agent on 'nas5.lan.adlerweb.info'
<19> Info             [AP] Linux kernel version [uname -r]:
<19> Error    Failed to check kernel version. Supported Linux kernel version is assumed.

Uhmk? Im Monitoring war nichts zu sehen, außerdem kommt ja der SSH-Header. Schnell mal per KVM auf die Kiste und geprüft:

# uname -a
Linux nas5 4.4.10-1-lts #1 SMP Wed May 11 21:03:02 CEST 2016 x86_64 GNU/Linux
#

Also uname sollte also funktionieren. Auch der SSH-Daemon läuft noch. Im Log sind jedoch einige Meldungen, die möglicherweise das Problem beschreiben:

nas5 dbus[**]: [system] Failed to activate service 'org.freedesktop.login1': timed out
nas5 sshd[**]: pam_systemd(sshd:session): Failed to create session: Failed to activate service 'org.freedesktop.login1': timed out
nas5 sshd[**]: pam_systemd(sshd:session): Failed to create session: Failed to activate service 'org.freedesktop.login1': timed out

freedesktop? Das ding ist Xless -.-. Übeltäter ist wieder einmal „Server sind ja nur Ausnahmeerscheinungen“ Systemd. Dessen Loginmanager bekommt Schluckauf wenn, z.B. im Rahmen von Updated, dbus neu gestartet wird. Als Ergebnis lässt sich PAM bei Logins durchaus mal 15 Sekunden Zeit um in den Timeout zu laufen. Je nach Client/Verbindungsart kann dies jedoch bereits zum Timeout der gesamten Verbindung führen – und nichts geht mehr. um den Fehler zu beheben reicht es aus den Logind neu zu starten:

systemctl restart systemd-logind

Warum ein System, was sonst ja auch alles „on demand“ startet/stoppt/überwacht, sowas seit offenbar langer Zeit nicht in den Griff bekommt bleibt offen. Ebenso wie die Frage, warum Veeam keine genaueren Fehlermeldungen liefert.

Passwort-Reset from Hell

(Dieser Artikel beschreibt eine Lücke, welche in der Passwort-Vergessen-Funktion der Webseite eines deutschen Dienstleisters steckte. Der Fehler wurde zwischenzeitlich behoben und ich hoffe, dass euren Systemen selbiges nicht durchgeht. Die Kommunikation mit dem Betreiber soll zudem als eher gutes Beispiel dienen, denn leider ist es eher üblich gemeldete Fehler nicht anzuerkennen oder gar den Anwalt los zu schicken)

Nach längerer Abstinenz wollte ich heute den Dienst einer deutschen Firma nochmal nutzen. Zwar war mir noch bekannt, dass ich einen Login hatte, jedoch nicht die verwendete E-Mail-Adresse. Beim stöbern durch mein Postfach stieß ich auf eine E-Mail aus dem Jahre 2012, mit welcher ich seinerzeit mein Passwort zurückgesetzt hatte. Um mir Tipparbeit zu sparen klickte ich auf den enthaltenen Link- zwar sollte dieser nicht mehr gültig sein, aber immerhin wäre ich auf der Webseite, oder?

Der Link lautete wie folgt: https://webseitedesdienstes.de/reset-password?email=meine%40email.de&key=HEXCODE&ts=1331229923

Der Timestamp entspricht hierbei 2012-03-08 18:05:23 GMT – dem Datum der E-Mail. Neu generierte vergessen-Links nutzen soweit mir ersichtlich das selbe Format.

Zu meiner Überraschung forderte mich die vorgefundene Seite auf ein neues Kennwort zu vergeben. Challenge Accepted – und siehe da: Ich hatte plötzlich Zugriff auf das besagte Konto und konnte mich mit dem neu vergebenen Passwort anmelden. Auch weitere Aufrufe des Links in der E-Mail erlaubten es mir das Kennwort jedes mal erneut zu ändern. Selbst nach Anforderung einer neuen „Passwort-Vergessen“-Mail behielt die alte E-Mail ihre Gültigkeit, die Hex-Codes unterscheiden sich.

Immerhin: Bei Änderung der E-Mail-Adresse zur Übernahme eines fremden Accounts (im Sinne von gerade angelegtem Testaccount) erscheint zwar ebenfalls das Änderungsformular, jedoch wird die Änderung mit einer Fehlermeldung abgelehnt – eine Übernahme fremder Accounts scheint entsprechend nicht möglich zu sein. Das Risiko besteht also hauptsächlich darin, dass bei Cerlust alter E-Mail der Account dauerhaft gefährdet wäre und keine dem Nutzer möglichen Änderungen den Zugriff unterbinden können. Besonders brisant, da der Dienst auch kostenpflichtige Inhalte bereitstellt und hierzu im Profil die Kreditkartendaten hinterlegt sein müssen.

Das Verhalten wurde umgehend an den Betreiber übermittelt, die Antwort erfolgte 2 Arbeitstage später: Man bedanke sich für die Meldung. Kreditkartendaten würden zwar über die UI eingetragen, die Speicherung erfolge jedoch bei einem externen Zahlungsdienstleister. Im Profil würden diese später nicht mehr angezeigt. Die Probleme des mehrfachen Resets ohne zeitliche oder logische Gültigkeitsbeschränkung der Codes ließe sich nachvollziehen, eine Änderung soll innerhalb von 2 Monaten ungesetzt werden.

Inzwischen sind 6 Monate vergangen und der Fehler ist behoben – ob dies innerhalb der angegebenen Zeitspanne erfolgte habe ich nicht geprüft.

 

QEMU: Festplatten als SATA/AHCI einbinden

Physikalische Remote-Server aufsetzen macht ohne KVM-IP eher wenig Spaß. Groß ist die Gefahr, dass durch Kernel-Updates oder spielen am Bootloader die Kiste nach einem Reboot nicht mehr bootet. Wäre es nicht praktisch, wenn man die Platten nicht kurz in eine VM werfen und da booten könnte?

QEMU ist – spätestens mit KVM – sicher der schnellste Weg, das übliche -hda bindet die Festplatten jedoch als IDE-Geräte ein. Schlecht, wenn man nur AHCI, also SATA, in fstab, Treibern & Co vorgesehen hat.

Abhilfe schaffen folgende Parameter, welche mir bei Rubénerd über den Weg gelaufen sind:

[..]
-drive file=/dev/sda,if=none,id=Disk1 \
-device ich9-ahci,id=ahci \
-device ide-drive,drive=Disk1,bus=ahci.0 \
[..]

Wichtig: Hierbei sollte das System im Haupt-OS nicht eingehangen oder Read-Only sein. Sowas ist üblicherweise nur mit einem Rettungssystem möglich, andernfalls kann es zu Dateisystemschäden kommen. Alternativ könnte confinedrv helfen eine Testumgebung zu schaffen.

Symantec Backup Exec/PowerShell: Bandstatus aus Streamer lesen

Symantec Backup Exec ist als Backupsoftware vor allem in Umgebungen mit vielen physikalischen Systemen immer noch recht weit verbreitet. Über das mitgelieferte PowerShell-Modul lassen sich viele Aufgaben automatisieren und Informationen abrufen. Um die Funktion nutzen zu können muss das Modul in die aktuelle PowerShell-Sitzung importiert werden:

Import-Module 'C:\Program Files\Symantec\Backup Exec\Modules\BEMCLI\BEMCLI'

Als Beispiel lese ich hier den Magazininhalt eines angebundenen Bandroboters aus:

Get-BERoboticLibrarySlot -RoboticLibraryDevice "Wechsler 0001"

Name       SlotNumber IsCleaningSlot  Media
----       ---------- --------------  -----
Schacht 1  1          False           A003L5
Schacht 2  2          False           A005L5
Schacht 3  3          False           A011L5
Schacht 4  4          False           A013L5
Schacht 5  5          False           A024L5
Schacht 6  6          False           A031L5
Schacht 7  7          False           A033L5
Schacht 8  8          False           A048L5
Schacht 9  9          False           A034L5
Schacht 10 10         False           A041L5
Schacht 11 11         False           A049L5
Schacht 12 12         False           A060L5
Schacht 13 13         False           A061L5
Schacht 14 14         False           A062L5
Schacht 15 15         False           A063L5
Schacht 16 16         False
Schacht 17 17         False
Schacht 18 18         False           A064L5
Schacht 19 19         False
Schacht 20 20         False
Schacht 21 21         False
Schacht 22 22         False
Schacht 23 23         False

Ebenso ist es möglich Details der aktuell zugreifbaren Bänder auszulesen:

Get-BEMedia -MediaVault "Online-Bandmedien" -Verbose | Format-List Name,MediaSet,OverwriteProtectedUntilDate,OverwriteProtectedUntilDate -Force

Name                        : A003L5
MediaSet                    : Monatssicherungen (12 Monate schreibschutz)
OverwriteProtectedUntilDate : 01.02.3456 18:39:53
OverwriteProtectedUntilDate : 07.08.9012 18:39:53

In meinem Auftrag wurden diese Informationen verwendet um in regelmäßigen Zeitabständen eine „Idiotensichere“ Mail zu generieren, welche den „Bandwechselmitarbeitern“ mitteile welche Bänder aus dem Roboter entnommen und abtransportiert bzw. welche neuen Bänder in welche Slots eingelegt werden müssen.

policyd-weight: warning: child: err: Undefined subroutine &main::dn_expand called

Örks – nach dem letzten Neustart hatte einer meiner Mailserver etwas Schluckauf an den Tag gelegt: Mails wurden nicht mehr angenommen, im Log zeigte sich policyd-weight als Verursacher:

warning: child: err: Undefined subroutine &main::dn_expand called at /usr/libexec/postfix/policyd-weight line 3591, ...

Ursache ist offenbar ein veralteter Aufruf der Library Net::DNS dieses Perl-Monsters. Ein passender Patch ist bei Debian zu finden, mit 3 geänderten Zeilen ist der Fehler erledigt und die Software wieder lauffähig.

+++ policyd-weight
72 -use Net::DNS::Packet qw(dn_expand);
3591 -            my ($dn, $offset) = dn_expand(\$qb, 0);
3591 +	    my ($decoded, $offset) = decode Net::DNS::DomainName(\$qb);
3592 +            my $dn = $decoded->name;

 

Microsoft SQL Server: Zugangsdaten wiederherstellen

Wer ein System verwalten will benötigt ein passendes Administrationspasswort. Dumm, wenn das System von nicht mehr erreichbaren Dritten eingerichtet wurde und keine brauchbare Dokumentation existiert. So  geschehen bei einem System mit Microsoft SQL Server, zu welchem kein sa-Passwort vorlag und die Windows-Zugänge offenbar gesperrt wurden.

Falls es nicht ohnehin klar ist: All diese Schritte solltet ihr natürlich nur an Systemen durchführen, welche euch gehören bzw. in nur nach (schriftlicher) Absprache mit dem Besitzer. Wer sich an fremden Systemen vergeht bekommt Probleme  mit der jeweiligen Staatsanwaltschaft und/oder dem zuständigen Admin und die möchtet ihr beide nicht kennen lernen ;).

Erster Anlaufpunkt: Windows-Logins. Üblicherweise sollten lokale Windows-Administratoren immer Administrationszugang zum SQL-Server haben. Hierzu einfach als lokaler Admin anmelden und im SQL Management Studio (oder der jeweils anderen Managementsoftware) die Windows-Authentifizierung nutzen.
Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/05/sql1-300×226.png

Hat der vorherige Admin die Windows-Zugänge herausoperiert muss man etwas tiefer eingreifen:

  1. Stoppt alle Dienste und beendet alle Clients, welche den Datenbankserver nutzen
  2. Öffnet den „Sql Server Configuration Manager“
  3. Stoppt unter „SQL Server-Dienste“ alle laufenden Dienste
    Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/05/sql2-300×53.png
  4. Doppelklick auf den Dienst SQL Server (nicht Agent oder Browser) um die Einstellungen zu öffnen
  5. Unter „Erweitert“ findet sich der Punkt „Startparameter“. Diesen durch Doppelklick editierbar machen. Am Anfang der Zeile „-m;“ einfügen
    Bild: https://www.adlerweb.info/blog/wp-content/uploads/2016/05/sqlfix-300×62.png
    Hintergrund: Mit -m wird der Server in den „single user maintenance mode“ geschaltet. Hierbei können Windows-Admins eine Verbindung zum Server aufbauen, es ist jedoch nur eine Sitzung zulässig. Sollte sich also ein anderes Programm verbinden ist kein Zugriff zur Verwaltung mehr möglich.
  6. Einstellungsfenster schließen und nur den SQL Server-Dienst wieder Starten
  7. Eine Eingabeaufforderung/cmd mit Administrationsrechten starten und per sqlcmd mit dem Server verbinden. Da der Server-Browser gestoppt ist müssen die Serverdaten manuell angegeben werden:
    sqlcmd -E -S tcp:localhost\INSTANZNAME
  8. Nun erstellen wir uns einen entsprechenden Zugang zum Server. Ich verwende den lokalen Systemadministrator, es ist jedoch auch möglich andere Nutzer, auch z.B. aus einer Domäne, so hinzuzufügen
    create login [SERVERNAME\Administrator] from windows;
    EXEC sp_addsrvrolemember 'SERVERNAME\Administrator','sysadmin';
    GO;
  9. Sollte der Befehl ohne Fehlermeldungen abschließen ist der Nutzer eingerichtet. Das sqlcmd-Fenster kann geschlossen werden
  10. Um den Wartungsmodus abzuschalten stoppen wir im Sql Server Configuration Manager den Serverdienst, gehen wieder wie zuvor in die Eigenschaften und entfernen das „-m;“ wieder aus den Startparametern
  11. Zuletzt werden alle zuvor aktiven SQL-Serverdienste wieder gestartet. Da an den bestehenden Logins keine Änderung vorgenommen wurde sollten Clients und Dienste unverändert wieder funktionieren. Zusätzlich sollte der angegebene Nutzer nun über Windows-Authentifizierung volle Administrationsrechte auf den Server besitzen.

Getestet mit 2008R3, sollte aber auch mit allen anderen zwischen 2005 und 2016 funktionieren.