LAB Linux in heterogenen Netzen Apache2 Kerberos: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 21: | Zeile 21: | ||
= Installation verschiedener Pakete = | = Installation verschiedener Pakete = | ||
* sudo apt-get install apache2 libapache2-mod-auth-gssapi krb5-user | * '''sudo apt-get install apache2 libapache2-mod-auth-gssapi krb5-user''' | ||
== Kerberos konfigurieren == | == Kerberos konfigurieren == | ||
| Zeile 45: | Zeile 45: | ||
</pre> | </pre> | ||
= | = '''Auf dem Domaincontroller''' Kerberos-Principal für Apache erstellen = | ||
:Erstellen | |||
Melde dich auf dem Windows Domaincontroller an und verwende das Tool ktpass.exe, um den Kerberos-Principal zu erstellen und die Keytab-Datei zu generieren. | Melde dich auf dem Windows Domaincontroller an und verwende das Tool ktpass.exe, um den Kerberos-Principal zu erstellen und die Keytab-Datei zu generieren. | ||
Führe in einer administrativen Eingabeaufforderung (cmd) folgende Befehle aus: | Führe in einer administrativen Eingabeaufforderung (cmd) folgende Befehle aus: | ||
*mkdir C:\temp | *'''mkdir C:\temp''' | ||
*ktpass /princ HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE /mapuser webservice@lab34.linuggs.de /pass * /out C:\temp\webkerberos.keytab /crypto ALL /ptype KRB5_NT_PRINCIPAL | *'''ktpass /princ HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE /mapuser webservice@lab34.linuggs.de /pass * /out C:\temp\webkerberos.keytab /crypto ALL /ptype KRB5_NT_PRINCIPAL''' | ||
Erläuterung: | Erläuterung: | ||
| Zeile 61: | Zeile 62: | ||
* /ptype KRB5_NT_PRINCIPAL gibt den Typ des Principals an | * /ptype KRB5_NT_PRINCIPAL gibt den Typ des Principals an | ||
;Übertragen | |||
Kopiere die Keytab-Datei vom Domaincontroller auf den Apache-Webserver: | |||
*'''scp C:\temp\webkerberos.keytab kit@webkerberos:/tmp''' | |||
scp C:\temp\webkerberos.keytab | |||
== '''Auf dem Webserver''' Berechtigungen der Keytab-Datei auf dem Apache-Webserver setzen == | |||
;Setze die richtigen Berechtigungen auf dem Apache-Webserver: | |||
*sudo cp /tmp/webkerberos.keytab /etc/apache2/krb5.keytab | |||
*sudo chmod 600 /etc/apache2/krb5.keytab | |||
*sudo chown www-data:www-data /etc/apache2/krb5.keytab | |||
==GSSAPI== | |||
*[[GSSAPI]] | |||
= Apache2 mit Kerberos absichern = | = Apache2 mit Kerberos absichern = | ||
== Verlinken der Module == | == Verlinken der Module == | ||
| Zeile 97: | Zeile 81: | ||
== Konfiguration der Apache-Website == | == Konfiguration der Apache-Website == | ||
Bearbeite die Datei | Bearbeite die Datei '''/etc/apache2/sites-enabled/000-default.conf''' und füge folgendes hinzu: | ||
=== Nur authentifizierte Benutzer dürfen zugreifen === | === Nur authentifizierte Benutzer dürfen zugreifen === | ||
| Zeile 108: | Zeile 92: | ||
# Kerberos anbinden | # Kerberos anbinden | ||
<Directory /var/www/html> | |||
AuthType GSSAPI | |||
AuthName "Kerberos Login" | |||
GssapiCredStore keytab:/etc/apache2/krb5.keytab | |||
GssapiUseSessions on | |||
Require valid-user | |||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
</pre> | </pre> | ||
;Restart | |||
*systemctl restart apache2 | |||
=Auf dem Webserver= | |||
*klist -k /etc/apache2/krb5.keytab | |||
Keytab name: FILE:/etc/apache2/krb5.keytab | |||
KVNO Principal | |||
---- -------------------------------------------------------------------------- | |||
6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE | |||
6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE | |||
6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE | |||
6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE | |||
6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE | |||
*Die Zahl 6 steht für die **Key Version Number (KVNO) | |||
*Dies zeigt an, dass dies die 6. Version des Schlüssels für den Principal ist. | |||
*Jedes Mal, wenn ein neuer Schlüssel generiert wird, wird die KVNO erhöht. | |||
*Mehrere Einträge mit KVNO 6 existieren | |||
*Es sind verschiedene Verschlüsselungsalgorithmen für denselben Principal hinterlegt. | |||
[[Kategorie:KERBEROS]] | |||
Aktuelle Version vom 10. Oktober 2024, 20:08 Uhr
Ziel
- Wir wollen einen Apache2-Webserver aufsetzen
- Diesen wollen wir mit Kerberos zur Authentifizierung gegen die Domain absichern
Aus dem Debian-Template einen Klon erstellen
- Name: webkerberos
- Netz: dmz
- HOSTS: webkerberos.lab34.linuggs.de
- IPv4: 172.26.55.42/24
- GWv4: 172.26.55.1
- NSv4: 172.26.54.2
- DOM: lab34.linuggs.de
- IPv6: 2a02:24d8:71:3037::42/64
- GWv6: 2a02:24d8:71:3037::1
- NSv6: 2a02:24d8:71:3036::2
Auf dem Domaincontroller
- A-Record eintragen
- AAAA-Record eintragen
- PTR-Record automatisch erstellen lassen
Installation verschiedener Pakete
- sudo apt-get install apache2 libapache2-mod-auth-gssapi krb5-user
Kerberos konfigurieren
/etc/krb5.conf bearbeiten
[libdefaults]
default_realm = LAB34.LINUGGS.DE
dns_lookup_realm = false
dns_lookup_kdc = true
rdns = false
forwardable = true
[realms]
LAB34.LINUGGS.DE = {
kdc = win2022.lab34.linuggs.de
admin_server = win2022.lab34.linuggs.de
}
[domain_realm]
.lab34.linuggs.de = LAB34.LINUGGS.DE
lab34.linuggs.de = LAB34.LINUGGS.DE
Auf dem Domaincontroller Kerberos-Principal für Apache erstellen
- Erstellen
Melde dich auf dem Windows Domaincontroller an und verwende das Tool ktpass.exe, um den Kerberos-Principal zu erstellen und die Keytab-Datei zu generieren.
Führe in einer administrativen Eingabeaufforderung (cmd) folgende Befehle aus:
- mkdir C:\temp
- ktpass /princ HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE /mapuser webservice@lab34.linuggs.de /pass * /out C:\temp\webkerberos.keytab /crypto ALL /ptype KRB5_NT_PRINCIPAL
Erläuterung:
- /princ definiert den Kerberos-Principal (HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE)
- /mapuser weist den Principal einem Benutzerkonto in Active Directory zu (webservice@lab34.linuggs.de)
- /pass * wird verwendet, um das Passwort des Benutzers bei der Eingabeaufforderung einzugeben
- /out legt den Speicherort der Keytab-Datei fest (in diesem Beispiel C:\temp\webkerberos.keytab)
- /crypto ALL erlaubt alle Verschlüsselungsmethoden
- /ptype KRB5_NT_PRINCIPAL gibt den Typ des Principals an
- Übertragen
Kopiere die Keytab-Datei vom Domaincontroller auf den Apache-Webserver:
- scp C:\temp\webkerberos.keytab kit@webkerberos:/tmp
Auf dem Webserver Berechtigungen der Keytab-Datei auf dem Apache-Webserver setzen
- Setze die richtigen Berechtigungen auf dem Apache-Webserver
- sudo cp /tmp/webkerberos.keytab /etc/apache2/krb5.keytab
- sudo chmod 600 /etc/apache2/krb5.keytab
- sudo chown www-data:www-data /etc/apache2/krb5.keytab
GSSAPI
Apache2 mit Kerberos absichern
Verlinken der Module
- Aktiviere das GSSAPI-Modul:
a2enmod auth_gssapi
Konfiguration der Apache-Website
Bearbeite die Datei /etc/apache2/sites-enabled/000-default.conf und füge folgendes hinzu:
Nur authentifizierte Benutzer dürfen zugreifen
<VirtualHost *:80>
ServerAdmin technik@lab34.linuggs.de
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Kerberos anbinden
<Directory /var/www/html>
AuthType GSSAPI
AuthName "Kerberos Login"
GssapiCredStore keytab:/etc/apache2/krb5.keytab
GssapiUseSessions on
Require valid-user
</Directory>
</VirtualHost>
- Restart
- systemctl restart apache2
Auf dem Webserver
- klist -k /etc/apache2/krb5.keytab
Keytab name: FILE:/etc/apache2/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE 6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE 6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE 6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE 6 HTTP/webkerberos.lab34.linuggs.de@LAB34.LINUGGS.DE
- Die Zahl 6 steht für die **Key Version Number (KVNO)
- Dies zeigt an, dass dies die 6. Version des Schlüssels für den Principal ist.
- Jedes Mal, wenn ein neuer Schlüssel generiert wird, wird die KVNO erhöht.
- Mehrere Einträge mit KVNO 6 existieren
- Es sind verschiedene Verschlüsselungsalgorithmen für denselben Principal hinterlegt.