LAB Linux in heterogenen Netzen Apache2 Kerberos: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 45: | Zeile 45: | ||
</pre> | </pre> | ||
| − | == Kerberos-Principal für Apache erstellen == | + | |
| + | == Auf dem Domain Controller Kerberos-Principal für Apache erstellen == | ||
* kadmin -p administrator/admin | * kadmin -p administrator/admin | ||
* addprinc -randkey HTTP/webkerberos.lab34.linuggs.de | * addprinc -randkey HTTP/webkerberos.lab34.linuggs.de | ||
Version vom 10. Oktober 2024, 19:00 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 Domain Controller Kerberos-Principal für Apache erstellen
- kadmin -p administrator/admin
- addprinc -randkey HTTP/webkerberos.lab34.linuggs.de
- ktadd -k /etc/apache2/krb5.keytab HTTP/webkerberos.lab34.linuggs.de
Apache2 mit Kerberos absichern
Verlinken der Module
- a2enmod auth_kerb
Wir bearbeiten die Datei
/etc/apache2/sites-enabled/000-default.conf
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 Kerberos
AuthName "Kerberos Login"
KrbAuthRealms LAB34.LINUGGS.DE
KrbServiceName HTTP
Krb5KeyTab /etc/apache2/krb5.keytab
KrbMethodNegotiate on
KrbSaveCredentials on
Require valid-user
</Directory>
</VirtualHost>
Auf HTTPS umstellen
- sudo cp fullchain.pem privkey.pem /etc/apache2/
- sudo a2enmod ssl
Wir bearbeiten die Datei
- sudo vi /etc/apache2/sites-enabled/000-default.conf
<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 Kerberos
AuthName "Kerberos Login"
KrbAuthRealms LAB34.LINUGGS.DE
KrbServiceName HTTP
Krb5KeyTab /etc/apache2/krb5.keytab
KrbMethodNegotiate on
KrbSaveCredentials on
Require valid-user
</Directory>
</VirtualHost>
</IfModule>
Reload
- sudo systemctl restart apache2
Checks
- Status?
- sudo systemctl status apache2
- Port?
- sudo ss -lntp | grep apache2
- Cipher and Protocol
- nmap -sV --script ssl-enum-ciphers -p 443 webkerberos.lab34.linuggs.de
- Zertifikat
- nmap -sV --script ssl-enum-ciphers -p 443 webkerberos.lab34.linuggs.de
Weitere Sicherheit
HTTP abschalten
In der Datei /etc/apache2/ports.conf
#Listen 80
auskommentieren
- Neustarten
- systemctl restart apache2
Header-Optionen
- Modul headers laden
- sudo a2enmod headers
- Sicherheitsoptionen zusätzlich zu TLS
# HSTS aktivieren (1 Jahr) - Erzwingt die Nutzung von HTTPS für 1 Jahr Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Schutz vor Clickjacking - Verhindert, dass die Webseite in einem iFrame eingebettet wird Header always set X-Frame-Options DENY
# Schutz vor MIME-Sniffing - Erzwingt, dass der Browser den Content-Type strikt beachtet Header always set X-Content-Type-Options nosniff
Restart
- systemctl restart apache2
Tests
- curl -sI https://webkerberos.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content"
AppArmor
- Under Construction