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…“) |
|||
| 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