nginx: unknown directive more_set_input_headers

Ich wollte auf einem nginx-Server einen ReverseProxy für Exchange einrichten. Für MAPI-over-HTTP und den Zugriff von Mac-Clients hab ich mich an meine Anleitung gehalten – aber leider scheitert der Start des nginx mit der Fehlermeldung

unknown directive more_set_input_headers

Für den Teil

more_set_input_headers 'Authorization: $http_authorization';
proxy_set_header Accept-Encoding "";
more_set_headers -s 401 'WWW-Authenticate: Basic realm="exch2016.test.local"';

braucht es eine nginx-Erweiterung – das headers-more-nginx-module.

Ob das Modul installiert ist kann mittels

nginx -V

geprüft werden.

Falls es dort nicht zu finden ist kann es einfach entweder mit dem nginx-extras-Paket oder manuell nachinstalliert werden:

sudo apt-get install nginx-extras

bzw.

sudo apt-get libnginx-mod-http-headers-more-filter

Falls jetzt der Start immer noch nicht funktioniert kann es sein das die Module beim Start nicht geladen werden.

Dazu muss in der /etc/nginx/nginx.conf ganz oben (unter pid /run/nginx.pid;)

include /etc/nginx/modules-enabled/*.conf;

hinzugefügt werden.

Danach den nginx neustarten – dann sollte es gehen 🙂

Active Directory: FSMO-Rollen per Powershell übertragen

Um die fünf FSMO-Rollen in einer Domäne von einem auf einen anderen Domain Controller zu verschieben hab ich früher immer das ntdsutil verwendet – aber das geht natürlich auch mit der Powershell 🙂

Zuerst zeigen wir uns am besten alle Rolleninhaber an. Dazu die AD-Powershell am Domain Controller öffnen oder die Module mit

Import-Module ActiveDirectory

importieren.

Die Rollen des Forest:

Get-ADForest domain.local | ft DomainNamingMaster, SchemaMaster

Und die Rollen der Domäne

Get-ADDomain domain.local | ft InfrastructureMaster, PDCEmulator, RIDMaster

Um eine Rolle zu verschieben muss man jetzt nur das Move-ADDirectoryServerOperationMasterRole Module im folgenden Schema verwenden:

Move-ADDirectoryServerOperationMasterRole -Identity „Ziel-DC“ Role

Also z. B. :

Move-ADDirectoryServerOperationMasterRole -Identity „dc-02“ PDCEmulator

Tipp: Man kann die Rollen auch super mit 0 – 4 abkürzen:

0 : PDCEmulator
1 : RIDMaster
2 : InfrastructureMaster
3 : SchemaMaster
4 : DomainNamingMaster

So kann man nämlich den Befehl schön verkürzen 🙂

Es reicht so z.B. ein

Move-ADDirectoryServerOperationMasterRole -Identity „dc-02“ –OperationMasterRole 0,1

Wenn mann z.B. alle Rollen auf einmal verschieben will lohnt sich das abkürzen richtig – so reicht ein

Move-ADDirectoryServerOperationMasterRole -Identity „dc-02“ –OperationMasterRole 0,1,2,3,4

statt

Move-ADDirectoryServerOperationMasterRole -Identity „dc-02“ –OperationMasterRole PDCEmulator, RIDMaster, InfrastructureMaster, SchemaMaster, DomainNamingMaster

Danach nochmal überprüfen:

Get-ADForest domain.local | ft DomainNamingMaster, SchemaMaster

und

Get-ADDomain domain.local | ft InfrastructureMaster, PDCEmulator, RIDMaster

Falls eine der Rollen nicht verschoben werden kann – weil z.B. der alte Inhaber der Rolle nicht mehr erreichbar ist – kann mit dem Parameter -force die Übertragung erzwungen werden (wie unter ntdsutil mit seize).

Move-ADDirectoryServerOperationMasterRole -Identity “dc-02” –OperationMasterRole, DomainNamingMaster,PDCEmulator,RIDMaster,SchemaMaster,InfrastructureMaster –Force

Selbstverständlich sollte der alte Domain Controller von dem wir die Rollen mit -Force verschoben haben nie wieder angeschaltet werden!

Dell: Firmeware-Image auf formatierten Switch installieren

Ich hatte das Problem, dass nach fehlerhaften Firmeware-Upgrade ein Dell Switch – in meinem Fall ein N2048 – nicht mehr bootete und im u-boot hängen blieb. Anscheinend wurde beim Upgrade der Switch formatiert und deshalb wird keine Firmeware mehr zum starten gefunden. Folgendes war über die Konsole zu sehen:

Creating 1 MTD partitions on „nand0“:
0x000000200000-0x00000f000000 : „mtd=4“
/image1 not found!
ubifsload – load file from an UBIFS filesystem
Usage:
ubifsload [bytes]
– load file ‚filename‘ to address ‚addr‘
Wrong Image Format for bootm command
ERROR: can’t get kernel image!
Saving Environment to NAND…
Erasing Nand…
Erasing at 0x160000 — 100% complete.
Writing to Nand… done
/image2 not found!
ubifsload – load file from an UBIFS filesystem
Usage:
ubifsload [bytes]
– load file ‚filename‘ to address ‚addr‘
Wrong Image Forat for bootm command
ERROR: can’t get kernel image!
u-boot>

Um wieder einen funktionierenden Switch zu bekommen bin ich folgendermaßen vorgegangen:

1) Sich mit einem Terminal-Client der das Y-Modem Transfer Protokoll unterstützt (z.B. ExtraPutty, TeraTerm,) auf die Konsole des Switches verbinden

2) Baud-Rate auf 115200 setzten

u-boot> setenv baudrate 115200

3) Mit dem Terminal-Client mit der Baud-Rate von 115200 auf den Switch verbinden und die aktuell bzw. gewünschte Firmeware – hier runterladen – (die stk-Datei) hochladen

u-boot> loady

und mit dem Client via Y-Modem die Datei senden.

Wenn die Datei übertragen ist speichern und neustarten:

u-boot> saveenv
u-boot> reset

4) Nach dem Reboot kommt das Startmenü – dort müssen wir 4 – Load New Operational Code – wählen

Boot Main Menu
==============
1- Start Operational Code
2- Select Baud Rate
3- Retrieve Logs
4- Load New Operational Code
5- Display Operational Code Details
9- Reboot
10- Restore Configuration to Factory Defaults
11- Activate Backup Image
12- Start Password Recovery
Enter Choice# 4

5) Die gleiche Firmeware ins image2 (Active Image) hochladen:

Creating tmpfs filesystem on /mnt/download for download…done.
Current Active Image: image2
Which Image to Update Active (image2) OR Back-Up (image1)? Select (A/B): A
You selected to update Active Image image2…
Select Mode of Transfer (Press T/X/Y/Z for TFTP/XMODEM/YMODEM/ZMODEM) :Y
Do you want to continue? Press(Y/N): Y

und mit dem Client via Y-Modem die Firmeware-Datei senden.

Wenn die Datei fertig übertragen ist den Switch mittels der Option 1 – Start Operational Code – im Boot Main Menu neu starten

Boot Main Menu
==============
1- Start Operational Code
2- Select Baud Rate
3- Retrieve Logs
4- Load New Operational Code
5- Display Operational Code Details
9- Reboot
10- Restore Configuration to Factory Defaults
11- Activate Backup Image
12- Start Password Recovery
Enter Choice# 1

Jetzt sollte der Switch wieder normal booten.

6) Nach dem Boot kann man mal überprüfen ob alles passt:

console>enable
console#show version

Ich empfehle jetzt noch gleich eine Firmware auch als Backup anzulegen – dies kann aber jetzt per TFTP erfolgen:

console# copy tftp://ip.des.tftp.servers/N2000v6.5.0.6.stk backup

Jetzt hat man wieder einen wunderbar funktionierenden Switch 🙂

Quelle: Dell-Forum

Active Directory: Zeitsynchronisation für die Domain konfigurieren

Die Zeit ist in einem Active Directory extrem wichtig – so kann man sich z.B. (bei Default-Einstellungen) mit einer Zeitdifferenz mehr als 5 Minuten zwischen Domain Controller und Client nicht authentifizieren und deshalb nicht einloggen.

Der Windows Zeitdienst (W32Time) ist dafür zuständig das überall in der Domäne die gleiche Zeit ist. Alle Clients syncen mit „ihrem“ Domain Controller und die Domain Controller syncen mit dem DC der die PDC-Rolle inne hat.

Damit überall die gleiche – und am besten auch noch die richtige 😉 – Zeit ist konfiguriert man an dem DC mit der PDC-Rolle den Windows Zeitdienst folgendermaßen per Powershell:

w32tm /config /manualpeerlist:timeserver /syncfromflags:manual /reliable:yes /update

also z.B. :

w32tm /config /manualpeerlist:0.de.pool.ntp.org /syncfromflags:manual /reliable:yes /update

oder mit mehreren NTP-Servern:

w32tm /config /syncfromflags:manual /manualpeerlist:“0.de.pool.ntp.org 1.de.pool.ntp.org“ /reliable:yes /update

Danach den Windows Zeitdienst durchstarten

Restart-Service W32Time

und noch einmal syncen lassen

w32tm /resync

Mit

w32tm /query /status

kann überprüft werden ob der Sync funktioniert – fertig 🙂

Alle anderen DCs und/oder Clients der Domäne sollten sich jetzt mit dem PDC synchronisieren.

Ebenfalls mit

w32tm /query /status

kann überprüft werden ob das auch klappt.

Nach ein paar Minuten sollte auf allen Domain-Membern die gleiche Zeit sein 🙂

Quelle: blogs.technet.microsoft.com

macOS: Update per Terminal

Man kann macOS wunderbar über das Terminal updaten – und braucht so nicht den Umweg über irgendwelche GUIs (Systemsteuerung bzw. AppStore) gehen 🙂

Mit

softwareupdate -lr

kan man sich alle verfügbaren empfohlenen Updates anzeigen.

Mit

softwareupdate -ir

installiert man alle empfohlenen Updates 🙂

Falls man einen Neustart braucht kann der auch gleich mit

sudo shutdown -r now

erledigt werden 🙂

Sophos XG: Portweiterleitung

Da bei uns immer mehr die Sophos XG verwendet wird gibt jetzt hier eine kleine Anleitung wie man eine Portweiterleitung erstellt.

In dem Beispiel wird ein Dienst auf dem Port 8088 vom WAN-Interface auf einen DMZ-Server weitergeleitet.

1) Host erstellen

Zuerst muss der Server auf den wir den Port weiterleiten wollen angelegt werden:

2) Dienst erstellen

Wird ein noch nicht hinterlegter Dienst verwendet muss dieser jetzt erstellt werden:

Beim Quellport wird hier 1:65535 angeben – von diesen Ports kann die Verbindung aufgebaut werden. Der Zielport ist der Port auf dem der Dienst auf unserem ZielServer läuft – hier also z.B. 8088.

3) Firewallregel erstellen

Jetzt können wir die eigentliche Regel erstellen

Hier wählen wir die Vorlage für DNAT/FullNAT. Als Quelle – von dort kann die Verbindung aufgebaut werden darf – wird in unseren Beispiel die WAN-Zone gewählt

Unter Zielhost wählen wir das WAN-Interface und als Dienst unseren Dienst auf den wir horchen wollen.

Unter Weiterleiten an wird der Server angegeben auf den der Port geleitet werden soll und wählen noch die Zone aus in der sich der Zielserver befindet.

Nach dem speichern sollte die Firewallregel erstellt worden sein:

und der Port bzw. der Dienst sollte jetzt von außen erreicht werden können 🙂

PAC-Dateien mit IIS veröffentlichen

Ich konfiguriere in letzter Zeit öfters den Proxy der Clients mit einer PAC-Datei – und wollte hier mal eine kurze Anleitung erstellen 🙂

Ich erstelle meistens auf einem IIS – z.B. auf dem das Intranet läuft – eine eigene Webseite von der die PAC-Datei geladen wird – die bei mir meistens auf http://pac/proxy.pac hört – und verteile den Proxy-Eintrag dann per Gruppenrichtlinie.

So sieht das dann am Schluss beim Client aus:

1) PAC-Datei erstellen

Zuerst erstellen wir eine proxy.pac – hier eine als Beispiel der alles bis auf Webseiten aus dem eigenen Netz zu einem Proxy geschickt wird:

 
function FindProxyForURL(url, host) {
                
      if (isInNet(host, "10.10.10.0", "255.255.255.0")) {return "DIRECT";}
        	     
      return "PROXY 10.10.12.4:8080";
}

Hier gibts noch ein paar Infos für die Konfig einer PAC-Datei: https://findproxyforurl.com/example-pac-file/

2) IIS Einstellungen

Wir erstellen auf dem Server auf dem der IIS läuft den Ordner C:\inetpub\pac und kopieren die erstellte proxy.pac dort rein

Jetzt öffnen wir den Internetinformationsdienste (IIS)-Manager und erstellen eine neue Website:

Die folgende Konfiguration wäre für den Aufruf von http://pac/proxy.pac – will man mit einem FQDN arbeiten (z.B. http://pac.test.local/proxy.pac) muss man den Eintrag unter Hostname entsprechend anpassen:

Jetzt muss noch der MIME-Type für die PAC-Datei erstellt werden:

Jetzt auf Hinzufügen gehen:

Hier die Dateierweiterung .pac und den MIME-Typ application/x-ns-proxy-autoconfig angeben

3) DNS-Eintrag

Jetzt muss noch ein DNS-Eintrag erstellt werden der auf unseren IIS-Server zeigt – entweder einen Host- oder einen CNAME-Eintrag:

Jetzt sollte wenn man die URL http://pac/proxy.pac im Browser eingibt die Datei als Download angeboten werden:

4) Gruppenrichtlinie

Man muss jetzt eigentlich nur noch eine Richtlinie erstellen in der unter „Script für automatischer Konfiguration verwenden“ unser Script angegeben und „Einstellungen automatisch erkennen“ deaktiviert wird.

Falls noch der Internet Explorer verwendet wird muss noch unter Richtlinien – Administrative Vorlagen – Windows-Komponenten/Internet Explo-rer/Kompatibilitätsansicht die Kompatibilität für Intranet Seiten deaktiviert werden:

Jetzt nur noch auf die User anwenden und schon sind wir fertig 🙂

Quelle: marckean.com

VMWare Upgrade: [Errno 28] No space left on device

Ich wollte einen ESXi von 6.5 auf 6.7 upgraden – aber das Upgrade lief auf folgenden Fehler:

[InstallationError]
[Errno 28] No space left on device
vibs = VMware_locker_tools-light_10.2.0.7253323-8169922
Please refer to the log file for more details.

Gelöst hab ich das Problem in dem ich das angezeigte Paket einzeln vor dem eigentlichen Upgrade installiert habe. Gemacht hab ich das folgendermaßen:

cd /tmp

wget http://hostupdate.vmware.com/software/VUM/PRODUCTION/main/esx/vmw/vib20/tools-light/VMware_locker_tools-light_10.2.0.7253323-8169922.vib

esxcli software vib install -f -v /tmp/VMware_locker_tools-light_10.2.0.7253323-8169922.vib

danach lief das Upgrade durch 🙂

Quelle: vivithemage.com

Sophos XG: ActiveSync veröffentlichen

Da bei uns immer mehr die Sophos XG verwendet wird gibt jetzt hier eine kleine Anleitung wie man ActiveSync veröffentlicht 🙂

1) Zertifikat installieren

Zuerst müssen wir das Zertifikat für die externe Domäne (hier als Beispiel test.friedlandreas.net) installieren. Man kann das Zertifikat in verschieden Formaten importieren – am einfachsten gehts es meiner Meinung nach per PFX:

Dann sollte es hier auftauchen

2) Webserver erstellen

Jetzt muss der Exchange-Server als WebServer angelegt werden.

Zuerst legen wir einen Host an

Danach können wir den WebServer anlegen

Unter Host wird unser neu angelegter Exchange-Host angebenden und der Typ auf HTTPS umgestellt und das Zertifikat angegeben.

In der Übersicht sollte es dann so aussehen:

3) Firewall-Regel erstellen

Jetzt kann die eigentlich Veröffentlichung konfiguriert werden.

Wir wählen hier das als Anwendugnsvorlage Exchange General und stellen den WAN-Port (bei mir hier der Port2) und das Zertifikat ein

Weiter unten unter „Geschützer Server“ entfernen wir jetzt alle nicht benötigten Einträge und lassen nur Microsoft-Server-ActiveSync stehen und editieren den Eintrag

Wir fügen hier unseren Exchange hinzu und entfernen die Authentifizierung


Unter Ausnahmen entfernen wir alles unnötige und editieren den Eintrag

Hier entfernen wir auch alles unnötige und passen die Pfade auf /Microsoft-Server-ActiveSync?* und /Microsoft-Server-ActiveSync/* an


Danach sollte es so aussehen

Unter „Erweitert“ sollte es so aussehen und dann können wir auch schon speichern 🙂

Jetzt sieht es in der Firewall so aus:

Jetzt sind wir fertig und es sollte alles funktionieren 🙂

Kurze Anmerkung zum Microsoft Remove Connecitvity Analycer : In der Standardeinstellung des Sophos XG klappt der Test nicht – er wirft einen Fehler das er sich nicht verbinden kann.

Das liegt daran das die Sophos standardmäßig ihre WebServer nur mit TLS 1.1 oder höher veröffentlicht – der Connectivity Analycer aber nur mit TLS 1.0 funktioniert.

Dies kann unter General Setting unter WebServer konfiguriert werden:

Ich lasse aber TLS 1.1 eingestellt – mit Clients hatte ich nie Probleme. Ich stelle zum testen der Verbindung kurz um – und wenn der Analyzer glücklich ist und mir ein grünes Häkchen bringt stelle ich wieder um 🙂

Exchange: Mailboxen in PST exportieren

Manchmal will man entweder eine einzelne Mailbox oder alle Mailboxen auf einem Exchange in eine PST-Datei exportieren – das geht natürlich wunderbar einfach über die Powershell 😉

Zuerst muss man dem User mit dem man die PSTs exportieren will – z.B. dem Administrator – überhaupt das Recht zum Exportieren geben:

New-ManagementRoleAssignment -Role "Mailbox Import Export" -User Administrator

Danach bitte die Powershell-Konsole schließen und eine neue aufmachen.

Einzelne Mailbox exportieren

Eine einzelne Mailbox kann mit

New-MailboxExportRequest -Mailbox user -FilePath \\server\freigabe\user.pst

exportiert werden – hier mit dem Beispiel Administrator

New-MailboxExportRequest -Mailbox Administrator -FilePath \\localhost\c$\pst\administrator.pst

Alle Mailboxen exportieren

Will man alle Mailboxen exportieren geht das mit

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\server\freigabe\$_.pst"}

Hier mein Beispiel:

get-mailbox | foreach {New-MailboxExportRequest -Mailbox $_.Alias -FilePath "\\localhost\c$\pst\$_.pst"}

Das Ergebnis sieht dann so aus:

Status anzeigen

Die Fortschritte bzw. den Status des Exports kann man sich mit

Get-MailboxExportRequest

anzeigen lassen.

Aufräumen

Um alle Export-Request am Exchange am Ende wieder zu löschen kann man das mit

Get-MailboxExportRequest | Remove-MailboxExportRequest

die PST-Dateien bleiben natürlich 😉

Quelle: www.itnator.net