LAB Linux in heterogenen Netzen Apache2 Kerberos: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „= Ziel = * Wir wollen einen Apache2 Webserver aufsetzen * Diesen wollen wir mit LDAP gegen die Domain authentifizieren = Aus dem Debian-Template einen Klon er…“ |
Keine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
= Ziel = | = Ziel = | ||
* Wir wollen einen Apache2 Webserver aufsetzen | * Wir wollen einen Apache2-Webserver aufsetzen | ||
* Diesen wollen wir mit | * Diesen wollen wir mit Kerberos zur Authentifizierung gegen die Domain absichern | ||
= Aus dem Debian-Template einen Klon erstellen = | = Aus dem Debian-Template einen Klon erstellen = | ||
* Name: | * Name: webkerberos | ||
* Netz: dmz | * Netz: dmz | ||
* HOSTS: | * HOSTS: webkerberos.lab34.linuggs.de | ||
* IPv4: 172.26.55. | * IPv4: 172.26.55.43/24 | ||
* GWv4: 172.26.55.1 | * GWv4: 172.26.55.1 | ||
* NSv4: 172.26.54.2 | * NSv4: 172.26.54.2 | ||
* DOM: lab34.linuggs.de | * DOM: lab34.linuggs.de | ||
* IPv6: 2a02:24d8:71:3037:: | * IPv6: 2a02:24d8:71:3037::43/64 | ||
* GWv6: 2a02:24d8:71:3037::1 | * GWv6: 2a02:24d8:71:3037::1 | ||
* NSv6: 2a02:24d8:71:3036::2 | * NSv6: 2a02:24d8:71:3036::2 | ||
| Zeile 21: | Zeile 21: | ||
= Installation verschiedener Pakete = | = Installation verschiedener Pakete = | ||
* sudo apt-get install apache2 | * sudo apt-get install apache2 libapache2-mod-auth-kerb krb5-user | ||
= | == Kerberos konfigurieren == | ||
=== Kerberos-Client-Installation === | |||
* sudo apt-get install krb5-user | |||
=== /etc/krb5.conf bearbeiten === | |||
<pre> | |||
[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 | |||
</pre> | |||
= | == 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 == | == Verlinken der Module == | ||
* a2enmod | * a2enmod auth_kerb | ||
== Wir bearbeiten die Datei == | == Wir bearbeiten die Datei == | ||
/etc/apache2/sites-enabled/000-default.conf | /etc/apache2/sites-enabled/000-default.conf | ||
=== | === Nur authentifizierte Benutzer dürfen zugreifen === | ||
<pre> | <pre> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
| Zeile 59: | Zeile 66: | ||
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 | ||
<Directory /var/www/html> | <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> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
| Zeile 101: | Zeile 89: | ||
'''<IfModule mod_ssl.c>''' | '''<IfModule mod_ssl.c>''' | ||
'''<VirtualHost _default_:443>''' | '''<VirtualHost _default_:443>''' | ||
'''ServerName | '''ServerName webkerberos.lab34.linuggs.de''' | ||
ServerAdmin technik@lab34.linuggs.de | ServerAdmin technik@lab34.linuggs.de | ||
DocumentRoot /var/www/html | DocumentRoot /var/www/html | ||
| Zeile 109: | Zeile 97: | ||
'''SSLCertificateFile /etc/apache2/fullchain.pem''' | '''SSLCertificateFile /etc/apache2/fullchain.pem''' | ||
'''SSLCertificateKeyFile /etc/apache2/privkey.pem''' | '''SSLCertificateKeyFile /etc/apache2/privkey.pem''' | ||
# | # Kerberos anbinden | ||
<Directory /var/www/html> | <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> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
| Zeile 133: | Zeile 122: | ||
; Cipher and Protocol | ; Cipher and Protocol | ||
* nmap -sV --script ssl-enum-ciphers -p 443 | * nmap -sV --script ssl-enum-ciphers -p 443 webkerberos.lab34.linuggs.de | ||
; Zertifikat | ; Zertifikat | ||
* nmap -sV --script ssl-enum-ciphers -p 443 | * 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 | |||
* [[Apache2 mit AppArmor from the Scratch]] | |||
Version vom 10. Oktober 2024, 18:50 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.43/24
- GWv4: 172.26.55.1
- NSv4: 172.26.54.2
- DOM: lab34.linuggs.de
- IPv6: 2a02:24d8:71:3037::43/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-kerb krb5-user
Kerberos konfigurieren
Kerberos-Client-Installation
- sudo apt-get install krb5-user
/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
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