LAB Linux in heterogenen Netzen Apache2 Kerberos: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| 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"