LAB Linux in heterogenen Netzen Apache2 Kerberos
Version vom 10. Oktober 2024, 19:04 Uhr von Thomas.will (Diskussion | Beiträge)
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
- Melde dich auf dem Domaincontroller an und führe folgende Befehle aus:
kadmin -p administrator/admin addprinc -randkey HTTP/webkerberos.lab34.linuggs.de ktadd -k /etc/apache2/krb5.keytab HTTP/webkerberos.lab34.linuggs.de
Keytab-Datei auf den Apache-Webserver übertragen
- Kopiere die erstellte Keytab-Datei auf den Webserver:
scp /etc/apache2/krb5.keytab user@webkerberos:/etc/apache2/krb5.keytab
- Passe die Berechtigungen an:
chmod 600 /etc/apache2/krb5.keytab chown www-data:www-data /etc/apache2/krb5.keytab
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"
KrbAuthRealms LAB34.LINUGGS.DE
Krb5KeyTab /etc/apache2/krb5.keytab
KrbMethodNegotiate on
KrbSaveCredentials on
Require valid-user
</Directory>
</VirtualHost>
Auf HTTPS umstellen
- Kopiere die Zertifikate:
sudo cp fullchain.pem privkey.pem /etc/apache2/
- Aktiviere SSL in Apache:
sudo a2enmod ssl
HTTPS-Konfiguration
Bearbeite die Datei `/etc/apache2/sites-enabled/000-default.conf` und füge die SSL-Konfiguration hinzu:
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName webkerberos.lab34.linuggs.de
ServerAdmin technik@lab34.linuggs.de
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/fullchain.pem
SSLCertificateKeyFile /etc/apache2/privkey.pem
# Kerberos anbinden
<Directory /var/www/html>
AuthType GSSAPI
AuthName "Kerberos Login"
KrbAuthRealms LAB34.LINUGGS.DE
Krb5KeyTab /etc/apache2/krb5.keytab
KrbMethodNegotiate on
KrbSaveCredentials on
Require valid-user
</Directory>
</VirtualHost>
</IfModule>
Reload
- Starte Apache neu:
sudo systemctl restart apache2
Checks
- Überprüfe den Apache-Status:
sudo systemctl status apache2
- Überprüfe die offenen Ports:
sudo ss -lntp | grep apache2
Weitere Sicherheit
HTTP abschalten
Bearbeite die Datei `/etc/apache2/ports.conf` und kommentiere die Zeile für Port 80 aus:
#Listen 80
Starte Apache neu:
systemctl restart apache2
Sicherheitsheader hinzufügen
- Lade das Headers-Modul:
sudo a2enmod headers
- Füge in der Apache-Konfiguration die folgenden Header hinzu:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" Header always set X-Frame-Options DENY Header always set X-Content-Type-Options nosniff
Tests
- Überprüfe die Header:
curl -sI https://webkerberos.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content"