LAB Linux in heterogenen Netzen Apache2 Kerberos: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| 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 == | ||
| + | * Melde dich auf dem Domaincontroller an und führe folgende Befehle aus: | ||
| + | <pre> | ||
| + | kadmin -p administrator/admin | ||
| + | addprinc -randkey HTTP/webkerberos.lab34.linuggs.de | ||
| + | ktadd -k /etc/apache2/krb5.keytab HTTP/webkerberos.lab34.linuggs.de | ||
| + | </pre> | ||
| − | == | + | == Keytab-Datei auf den Apache-Webserver übertragen == |
| − | * | + | * Kopiere die erstellte Keytab-Datei auf den Webserver: |
| − | * | + | <pre> |
| − | + | scp /etc/apache2/krb5.keytab user@webkerberos:/etc/apache2/krb5.keytab | |
| + | </pre> | ||
| + | * Passe die Berechtigungen an: | ||
| + | <pre> | ||
| + | chmod 600 /etc/apache2/krb5.keytab | ||
| + | chown www-data:www-data /etc/apache2/krb5.keytab | ||
| + | </pre> | ||
= Apache2 mit Kerberos absichern = | = Apache2 mit Kerberos absichern = | ||
== Verlinken der Module == | == Verlinken der Module == | ||
| − | * a2enmod | + | * Aktiviere das GSSAPI-Modul: |
| + | <pre> | ||
| + | a2enmod auth_gssapi | ||
| + | </pre> | ||
| − | == | + | == 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 === | === Nur authentifizierte Benutzer dürfen zugreifen === | ||
| Zeile 65: | Zeile 81: | ||
ErrorLog ${APACHE_LOG_DIR}/error.log | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
| + | |||
# Kerberos anbinden | # Kerberos anbinden | ||
<Directory /var/www/html> | <Directory /var/www/html> | ||
| − | AuthType | + | AuthType GSSAPI |
AuthName "Kerberos Login" | AuthName "Kerberos Login" | ||
KrbAuthRealms LAB34.LINUGGS.DE | KrbAuthRealms LAB34.LINUGGS.DE | ||
| − | |||
Krb5KeyTab /etc/apache2/krb5.keytab | Krb5KeyTab /etc/apache2/krb5.keytab | ||
KrbMethodNegotiate on | KrbMethodNegotiate on | ||
| Zeile 80: | Zeile 96: | ||
= Auf HTTPS umstellen = | = Auf HTTPS umstellen = | ||
| − | * sudo cp fullchain.pem privkey.pem /etc/apache2/ | + | * Kopiere die Zertifikate: |
| − | * sudo a2enmod ssl | + | <pre> |
| + | sudo cp fullchain.pem privkey.pem /etc/apache2/ | ||
| + | </pre> | ||
| + | * Aktiviere SSL in Apache: | ||
| + | <pre> | ||
| + | sudo a2enmod ssl | ||
| + | </pre> | ||
| − | == | + | == HTTPS-Konfiguration == |
| − | + | Bearbeite die Datei `/etc/apache2/sites-enabled/000-default.conf` und füge die SSL-Konfiguration hinzu: | |
| − | + | <pre> | |
| − | + | <IfModule mod_ssl.c> | |
| − | + | <VirtualHost _default_:443> | |
| + | ServerName webkerberos.lab34.linuggs.de | ||
ServerAdmin technik@lab34.linuggs.de | ServerAdmin technik@lab34.linuggs.de | ||
DocumentRoot /var/www/html | DocumentRoot /var/www/html | ||
ErrorLog ${APACHE_LOG_DIR}/error.log | ErrorLog ${APACHE_LOG_DIR}/error.log | ||
CustomLog ${APACHE_LOG_DIR}/access.log combined | CustomLog ${APACHE_LOG_DIR}/access.log combined | ||
| − | + | SSLEngine on | |
| − | + | SSLCertificateFile /etc/apache2/fullchain.pem | |
| − | + | SSLCertificateKeyFile /etc/apache2/privkey.pem | |
| + | |||
# Kerberos anbinden | # Kerberos anbinden | ||
<Directory /var/www/html> | <Directory /var/www/html> | ||
| − | AuthType | + | AuthType GSSAPI |
AuthName "Kerberos Login" | AuthName "Kerberos Login" | ||
KrbAuthRealms LAB34.LINUGGS.DE | KrbAuthRealms LAB34.LINUGGS.DE | ||
| − | |||
Krb5KeyTab /etc/apache2/krb5.keytab | Krb5KeyTab /etc/apache2/krb5.keytab | ||
KrbMethodNegotiate on | KrbMethodNegotiate on | ||
| Zeile 108: | Zeile 131: | ||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
| − | + | </IfModule> | |
| + | </pre> | ||
= Reload = | = Reload = | ||
| − | * sudo systemctl restart apache2 | + | * Starte Apache neu: |
| + | <pre> | ||
| + | sudo systemctl restart apache2 | ||
| + | </pre> | ||
= Checks = | = Checks = | ||
| − | + | * Überprüfe den Apache-Status: | |
| − | + | <pre> | |
| − | + | sudo systemctl status apache2 | |
| − | + | </pre> | |
| − | + | * Überprüfe die offenen Ports: | |
| − | + | <pre> | |
| − | + | sudo ss -lntp | grep apache2 | |
| − | + | </pre> | |
| − | |||
| − | |||
| − | |||
= Weitere Sicherheit = | = Weitere Sicherheit = | ||
== HTTP abschalten == | == HTTP abschalten == | ||
| − | + | Bearbeite die Datei `/etc/apache2/ports.conf` und kommentiere die Zeile für Port 80 aus: | |
| − | + | <pre> | |
| − | + | #Listen 80 | |
| + | </pre> | ||
| + | Starte Apache neu: | ||
| + | <pre> | ||
| + | systemctl restart apache2 | ||
| + | </pre> | ||
| − | + | == Sicherheitsheader hinzufügen == | |
| − | + | * Lade das Headers-Modul: | |
| − | + | <pre> | |
| − | == | + | sudo a2enmod headers |
| − | + | </pre> | |
| − | + | * Füge in der Apache-Konfiguration die folgenden Header hinzu: | |
| − | + | <pre> | |
| − | + | 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 | |
| − | + | </pre> | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
= Tests = | = Tests = | ||
| − | * curl -sI https://webkerberos.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content" | + | * Überprüfe die Header: |
| − | + | <pre> | |
| − | + | curl -sI https://webkerberos.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content" | |
| − | + | </pre> | |
Version vom 10. Oktober 2024, 19:04 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
- 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"