LAB Linux in heterogenen Netzen Apache2 Ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| 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 LDAP gegen die Domain authentifizieren | ||
=Installation verschiedener Pakete= | = Aus dem Debian Template einen Klon erstellen = | ||
*sudo apt-get install apache2 mariadb-server php php-intl php-mbstring php-xml php-apcu php-curl php-mysql unzip php-ldap | * Name: webserver | ||
=Zum Testen= | * Netz: dmz | ||
;Install Test | * HOSTS: webserver.lab34.linuggs.de | ||
* IPv4: 172.26.55.2/24 | |||
* GWv4: 172.26.55.1 | |||
* NSv4: 172.26.54.2 | |||
* DOM: lab34.linuggs.de | |||
* HOSTS: webserver.lab34.linuggs.de | |||
* IPv6: 2a02:24d8:71:3037::2/64 | |||
* GWv6: 2a02:24d8:71:3037::1 | |||
* NSv6: 2a02:24d8:71:3036::2 | |||
* DOM: lab34.linuggs.de | |||
== Auf dem Domaincontroller == | |||
* A-Record eintragen | |||
* AAAA-Record eintragen | |||
* PTR-Record automatisch erstellen lassen | |||
= Installation verschiedener Pakete = | |||
* sudo apt-get install apache2 mariadb-server php php-intl php-mbstring php-xml php-apcu php-curl php-mysql unzip php-ldap | |||
== Zum Testen == | |||
; Install Test | |||
apt install ldap-utils | apt install ldap-utils | ||
==Verlinken der Module | ; Connection Test | ||
* ldapsearch -x -H ldap://172.26.54.2 -D "cn=administrator,cn=users,dc=lab34,dc=linuggs,dc=de" -b "dc=lab34,dc=linuggs,dc=de" -w 123Start$ | |||
*[[Test Web Seite]] | == Auf dem DC == | ||
* Gruppe nuxtuxer anlegen | |||
* User kit anlegen und in die Gruppe hinzufügen | |||
* User webservice anlegen | |||
* Diesen nutzen wir zum LDAP binden | |||
== Wieder zurück == | |||
* ldapsearch -x -H ldap://172.26.54.2 -D "cn=webservice,cn=users,dc=lab34,dc=linuggs,dc=de" -b "dc=lab34,dc=linuggs,dc=de" -w 12345-Xinux | |||
= Verlinken der Module = | |||
* a2enmod authnz_ldap | |||
= Test Web Seite = | |||
* [[Test Web Seite]] | |||
= | = LDAP anbinden = | ||
== Verlinken der Module == | |||
*a2enmod authnz_ldap | * a2enmod authnz_ldap | ||
== Wir bearbeiten die Datei == | |||
/etc/apache2/sites-enabled/000-default.conf | /etc/apache2/sites-enabled/000-default.conf | ||
=== Alle dürfen === | |||
<pre> | <pre> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
| Zeile 64: | Zeile 72: | ||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
</pre> | </pre> | ||
=== Nur gewisse Gruppen dürfen === | |||
<pre> | <pre> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
ServerAdmin webmaster@localhost | ServerAdmin webmaster@localhost | ||
| Zeile 84: | Zeile 90: | ||
AuthLDAPBindPassword "12345-Xinux" | AuthLDAPBindPassword "12345-Xinux" | ||
Require ldap-group cn=nuxtuxer,cn=users,dc=lab34,dc=linuggs,dc=de | Require ldap-group cn=nuxtuxer,cn=users,dc=lab34,dc=linuggs,dc=de | ||
</Directory> | </Directory> | ||
</VirtualHost> | |||
</pre> | </pre> | ||
= 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>''' | '''<VirtualHost _default_:443>''' | ||
'''ServerName webserver.lab34.linuggs.de''' | '''ServerName webserver.lab34.linuggs.de''' | ||
| Zeile 112: | Zeile 120: | ||
AuthLDAPBindPassword "12345-Xinux" | AuthLDAPBindPassword "12345-Xinux" | ||
Require valid-user | Require valid-user | ||
</Directory> | |||
</VirtualHost> | </VirtualHost> | ||
'''</IfModule>''' | '''</IfModule>''' | ||
=Reload= | = Reload = | ||
*sudo systemctl restart apache2 | * sudo systemctl restart apache2 | ||
=Checks= | |||
;Status? | = Checks = | ||
*sudo systemctl status | ; Status? | ||
;Port? | * sudo systemctl status apache2 | ||
*sudo ss -lntp | grep apache2 | |||
;Cipher and Protocol | ; Port? | ||
*nmap -sV --script ssl-enum-ciphers -p 443 webserver.lab34.linuggs.de | * sudo ss -lntp | grep apache2 | ||
;Zertifikat | |||
*nmap -sV --script ssl-enum-ciphers -p 443 webserver.lab34.linuggs.de | ; Cipher and Protocol | ||
= | * nmap -sV --script ssl-enum-ciphers -p 443 webserver.lab34.linuggs.de | ||
*Zertifizierungsstelle auf dem DC installieren | |||
*Zertifikat wird selbst erstellt | ; Zertifikat | ||
*Binden an den | * nmap -sV --script ssl-enum-ciphers -p 443 webserver.lab34.linuggs.de | ||
*Stammzertifikat zum Linux Webserver hinzufügen | |||
*Änderungen an der Apache Konfiguration vornehmen | = LDAP absichern = | ||
*Testen | * Zertifizierungsstelle auf dem DC installieren | ||
=Zertifizierungsstelle= | * Zertifikat wird selbst erstellt | ||
*[[Microsoft | * Binden an den LDAPS-Dienst | ||
=Weitere Sicherheit= | * Stammzertifikat zum Linux-Webserver hinzufügen | ||
;Modul headers laden | * Änderungen an der Apache-Konfiguration vornehmen | ||
*sudo a2enmod headers | * Testen | ||
; | |||
= Zertifizierungsstelle = | |||
* [[Microsoft Zertifizierungsstelle]] | |||
= Stammzertifikat einbauen = | |||
== LDAP-Verbindung nicht verschlüsselt == | |||
; Zertifikat einbauen unter Linux | |||
* sudo cp lab34-ca.cer /usr/local/share/ca-certificates/lab34-ca.crt | |||
* sudo update-ca-certificates | |||
; Test, ob das Zertifikat zieht | |||
* openssl s_client -port 636 -CAfile lab34-ca.cer -host win2022.lab34.linuggs.de | |||
; Test, ob das Zertifikat mit eingebautem Root-CA zieht | |||
* openssl s_client -port 636 -host win2022.lab34.linuggs.de | |||
; Ändern der Konfiguration | |||
'''ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub''' | |||
zu | |||
'''ldaps://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub''' | |||
ändern | |||
; Neustarten | |||
* systemctl restart apache2 | |||
= 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 | # HSTS aktivieren (1 Jahr) - Erzwingt die Nutzung von HTTPS für 1 Jahr | ||
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" | Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" | ||
| Zeile 149: | Zeile 195: | ||
# Schutz vor MIME-Sniffing - Erzwingt, dass der Browser den Content-Type strikt beachtet | # Schutz vor MIME-Sniffing - Erzwingt, dass der Browser den Content-Type strikt beachtet | ||
Header always set X-Content-Type-Options nosniff | Header always set X-Content-Type-Options nosniff | ||
=Tests= | |||
*curl -sI https://webserver.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content" | = Restart = | ||
= | * systemctl restart apache2 | ||
;Under Construction | |||
*[[Apache2 mit | = Tests = | ||
* curl -sI https://webserver.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content" | |||
= AppArmor = | |||
; Under Construction | |||
* [[Apache2 mit AppArmor from the Scratch]] | |||
[[Kategorie:LDAP]] | |||
Aktuelle Version vom 11. Oktober 2024, 09:18 Uhr
Ziel
- Wir wollen einen Apache2 Webserver aufsetzen
- Diesen wollen wir mit LDAP gegen die Domain authentifizieren
Aus dem Debian Template einen Klon erstellen
- Name: webserver
- Netz: dmz
- HOSTS: webserver.lab34.linuggs.de
- IPv4: 172.26.55.2/24
- GWv4: 172.26.55.1
- NSv4: 172.26.54.2
- DOM: lab34.linuggs.de
- HOSTS: webserver.lab34.linuggs.de
- IPv6: 2a02:24d8:71:3037::2/64
- GWv6: 2a02:24d8:71:3037::1
- NSv6: 2a02:24d8:71:3036::2
- DOM: lab34.linuggs.de
Auf dem Domaincontroller
- A-Record eintragen
- AAAA-Record eintragen
- PTR-Record automatisch erstellen lassen
Installation verschiedener Pakete
- sudo apt-get install apache2 mariadb-server php php-intl php-mbstring php-xml php-apcu php-curl php-mysql unzip php-ldap
Zum Testen
- Install Test
apt install ldap-utils
- Connection Test
- ldapsearch -x -H ldap://172.26.54.2 -D "cn=administrator,cn=users,dc=lab34,dc=linuggs,dc=de" -b "dc=lab34,dc=linuggs,dc=de" -w 123Start$
Auf dem DC
- Gruppe nuxtuxer anlegen
- User kit anlegen und in die Gruppe hinzufügen
- User webservice anlegen
- Diesen nutzen wir zum LDAP binden
Wieder zurück
- ldapsearch -x -H ldap://172.26.54.2 -D "cn=webservice,cn=users,dc=lab34,dc=linuggs,dc=de" -b "dc=lab34,dc=linuggs,dc=de" -w 12345-Xinux
Verlinken der Module
- a2enmod authnz_ldap
Test Web Seite
LDAP anbinden
Verlinken der Module
- a2enmod authnz_ldap
Wir bearbeiten die Datei
/etc/apache2/sites-enabled/000-default.conf
Alle dürfen
<VirtualHost *:80>
ServerAdmin technik@lab34.linuggs.de
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# LDAP anbinden
<Directory /var/www/html>
AuthType Basic
AuthBasicProvider ldap
AuthName "LDAP-AUTHENTIFIKATION"
AuthLDAPURL ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub
AuthLDAPBindDN "cn=webservice,cn=users,dc=lab34,dc=linuggs,dc=de"
AuthLDAPBindPassword "12345-Xinux"
Require valid-user
</Directory>
</VirtualHost>
Nur gewisse Gruppen dürfen
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# LDAP anbinden
<Directory /var/www/html>
AuthType Basic
AuthBasicProvider ldap
AuthName "LDAP-AUTHENTIFIKATION"
AuthLDAPURL ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub
AuthLDAPBindDN "cn=webservice,cn=users,dc=lab34,dc=linuggs,dc=de"
AuthLDAPBindPassword "12345-Xinux"
Require ldap-group cn=nuxtuxer,cn=users,dc=lab34,dc=linuggs,dc=de
</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 webserver.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
# LDAP anbinden
<Directory /var/www/html>
AuthType Basic
AuthBasicProvider ldap
AuthName "LDAP-AUTHENTIFIKATION"
AuthLDAPURL ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub
AuthLDAPBindDN "cn=webservice,cn=users,dc=lab34,dc=linuggs,dc=de"
AuthLDAPBindPassword "12345-Xinux"
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 webserver.lab34.linuggs.de
- Zertifikat
- nmap -sV --script ssl-enum-ciphers -p 443 webserver.lab34.linuggs.de
LDAP absichern
- Zertifizierungsstelle auf dem DC installieren
- Zertifikat wird selbst erstellt
- Binden an den LDAPS-Dienst
- Stammzertifikat zum Linux-Webserver hinzufügen
- Änderungen an der Apache-Konfiguration vornehmen
- Testen
Zertifizierungsstelle
Stammzertifikat einbauen
LDAP-Verbindung nicht verschlüsselt
- Zertifikat einbauen unter Linux
- sudo cp lab34-ca.cer /usr/local/share/ca-certificates/lab34-ca.crt
- sudo update-ca-certificates
- Test, ob das Zertifikat zieht
- openssl s_client -port 636 -CAfile lab34-ca.cer -host win2022.lab34.linuggs.de
- Test, ob das Zertifikat mit eingebautem Root-CA zieht
- openssl s_client -port 636 -host win2022.lab34.linuggs.de
- Ändern der Konfiguration
ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub
zu
ldaps://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub
ändern
- Neustarten
- systemctl restart apache2
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://webserver.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content"
AppArmor
- Under Construction