LAB Linux in heterogenen Netzen Apache2 Ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (31 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 | ||
== | ; 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 | |||
===Wir bearbeiten die Datei | == 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 | |||
== 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 62: | 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 82: | 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>''' | |||
'''ServerName webserver.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''' | |||
# LDAP anbinden | # LDAP anbinden | ||
<Directory /var/www/html> | <Directory /var/www/html> | ||
| Zeile 105: | Zeile 120: | ||
AuthLDAPBindPassword "12345-Xinux" | AuthLDAPBindPassword "12345-Xinux" | ||
Require valid-user | 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 = | |||
* [[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 | |||
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 | ||
* [[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