OsTicket Single Sign On http passthrough einrichten

Aus bknowledgebase
Zur Navigation springen Zur Suche springen

Einleitung[Bearbeiten]

Ich habe ja hier schon einiges zu osTicket geschrieben und sowohl Windows als auch Linux basierte Installationen vorgenommen. Was immer gefehlt hat war allerdings die Möglichkeit via Single Sign On (SSO) die Anmeldung für die User noch einfacher zu gestalten, so dass sie nur noch auf Anmelden klicken müssen und sonst nichts mehr eingeben müssen.

Hierzu nochmal eine Kurze Anleitung (PS: Ich bin zunächst fast daran verzweifelt, aber was lange währt wird gut :))

Anleitung[Bearbeiten]

Vorraussetzungen[Bearbeiten]

Hier habe ich die Installation folgendermaßen:

OS: Debian 9.4 WS: Apache2.4 osTicket: 1.10 (upgrade von 1.9 siehe installationsartikel, so werden fehler vermieden) osTicket Plugins: LDAP Authentication and Lookup und HTTP Passthru Authentication

Plugin[Bearbeiten]

Hierzu ist zusätzlich zum Plugin "LDAP Authentication and Lookup" (beschrieben in eigenem Artikel zu osTicket installation)

auch noch "HTTP Passthru Authentication" notwendig.

Hier müssen allerdings ganz simpel nur noch die Haken gesetzt werden.

Kerberos Installieren[Bearbeiten]

sudo apt-get install krb5-user

Kerberos Konfigurieren[Bearbeiten]

sudo nano /etc/krb5.conf

Hier sollte folgenden eingetragen sein/werden:

 [libdefaults]
  default_realm = DOMAIN.LOCAL
 [realms]
  DOMAIN.LOCAL = {
		kdc = meindomaincontroller.domain.local
		admin_server = meindomaincontroller.domain.local
	      }
 [domain_realm]
  .domain.local = DOMAIN.LOCAL
  domain.local = DOMAIN.LOCAL

Die "Realms" bzw. Domänennamen müssen natürlich so angepasst werden wie in deiner Organisation notwendig. Das "Realm" entspricht meist der Hauptdomäne und bezeichnet die Authentifizierungsgesamtorganisation.

Uhrzeit Synchronisieren[Bearbeiten]

Weiterhin müssen die Uhren Synchronisiert sein mit der AD. Deshalb ab besten NTP einrichten und den Timeserver angeben

sudo apt-get install ntpdate
sudo ntpdate <meinNTPServer>


Kerberos User und Keytab-File[Bearbeiten]

Die sicherere Methode für die Authentifizierung ist es ein sogenanntes .keytab-file zu erstellen. Hier ist User und Kennwort nur als Hash-Value enthalten.

Dazu auf dem „Domain Controller“ noch einen User speziell für Kerberos anlegen:

User: kerberos

PWD: meinpasswort

Danach muss man via Powershell ein sogenanntes keytab-file erzeugen, welches den User (das Prinzipal) den man gerade erstellt hat mit dem Service für den man sich authentifizieren möchte verbindet (mapped).

ktpass -princ HTTP/meinwebserver.domain.local@domain.local -mapuser kerberos@domain.local -pass "meinpasswort" -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\Temp\kerberos.keytab

Hier steht "http" für den Dienst. Dann kommt der hostname des Webservers "meinwebserver" gefolgt von @ und dem "Realm" also "domain.local"!

Erwähnen kann man noch dass hier also Cryptografisches Verfahren RC4-HMAC verwendet wird, da es eben dem Verfahren im Active Directory entspricht.

Außerdem kann/muss man dem Domain-Controller noch "sagen" für welches "ServicePrinzipal" (welchen Service) dieses Konto genutzt werden darf. Normalerweise sollte das mit dem Mapping vorher bereits geschehen sein. Dann direkt mit dem nächsten Befehl überprüfen/anzeigen lassen.

setspn -s HTTP/meinwebserver@domain.local kerberos

Zu überprüfen mit

setspn -l kerberos

Hier steht nun HTTP/meinwebserver@domain.local genauso wie in der "meinwebserver.conf" des Webservers

Das nun erzeugte File "kerberos.keytab" kommt nun ins Spiel.

.keytab-file[Bearbeiten]

Dann dieses keytab-File auf dem Webserver kopieren unter:

sudo /etc/kerberos.keytab

Und Rechte anpassen, denn der Webserver muss der Owner sein.

sudo chown www-data:www-data /etc/kerberos.keytab

Webserver anpassen[Bearbeiten]

1. Kerberos Mod für Apache installieren

sudo apt-get install libapache2-mod-auth-kerb


2. Und schließlich noch die Webserver Einstellungen anpassen.

sudo nano /etc/apache2/sites-available/meinwebserver.conf
<VirtualHost *:80>
 
	# ...
	ServerName meinwebserver      
       <Location />
                AuthType Kerberos
                AuthName "Kerberos authenticated intranet"
                KrbAuthRealms domain.local
                KrbServiceName HTTP/meinwebserver@domain.local
                Krb5Keytab /etc/kerberos.keytab
                KrbMethodNegotiate On
                KrbMethodK5Passwd On
                require valid-user
        </Location>
</VirtualHost>

Und wie immer:

sudo service apache2 restart

H@ppy H@cking