LAB Linux in heterogenen Netzen Apache2 Ldap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(7 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 Ldap gegen die Domain authentfizieren
+
* 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=
+
= 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
 
==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==
+
; Connection Test
a2enmod authnz_ldap
+
* 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==
+
 
*[[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==
+
= LDAP anbinden =
===Verlinken der Module===
+
== Verlinken der Module ==
*a2enmod authnz_ldap
+
* a2enmod authnz_ldap
  
===Wir bearbeiten die Datei===
+
== Wir bearbeiten die Datei ==
 
  /etc/apache2/sites-enabled/000-default.conf
 
  /etc/apache2/sites-enabled/000-default.conf
====Alle dürfen====
+
 
 +
=== Alle dürfen ===
 
<pre>
 
<pre>
 
<VirtualHost *:80>
 
<VirtualHost *:80>
Zeile 64: Zeile 72:
 
         </Directory>
 
         </Directory>
 
</VirtualHost>
 
</VirtualHost>
 
 
</pre>
 
</pre>
  
====Nur gewisse Gruppe dürfen====
+
=== 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>'''
+
= 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>
  </Directory>
 
 
       </VirtualHost>
 
       </VirtualHost>
 
  '''</IfModule>'''
 
  '''</IfModule>'''
  
=Reload=
+
= Reload =
*sudo systemctl restart apache2
+
* 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 Zertifizierungstelle]]
 
=Stamm Zertifikat einbauen=
 
==ldap Verbindung nicht verschlüsselt==
 
  
;Zertifikat einbauen unter Linux
+
= Checks =
*cp lab34-ca.cer /usr/local/share/ca-certificates/lab34-ca.crt
+
; Status?
*sudo update-ca-certificates
+
* sudo systemctl status apache2
;Test ob das Zertifikat zieht
+
 
*openssl s_client -port 636 -CAfile lab34-ca.cer -host win2022.lab34.linuggs.de
+
; Port?
;Test ob das Zertifikat, mit eingebauten root-ca zieht
+
* sudo ss -lntp | grep apache2
*openssl s_client -port 636 -host win2022.lab34.linuggs.de
+
 
;Ändern der Konfiguration
+
; 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'''
 
  '''ldap://win2022.lab34.linuggs.de/dc=lab34,dc=linuggs,dc=de?sAMAccountName?sub'''
 
zu
 
zu
Zeile 153: Zeile 170:
 
ändern
 
ändern
  
=Weitere Sicherheit=
+
; Neustarten
==HTTP abschalten==
+
* systemctl restart apache2
'''Inter der Datei /etc/apache2/ports.conf'''  
+
 
 +
= Weitere Sicherheit =
 +
== HTTP abschalten ==
 +
'''In der Datei /etc/apache2/ports.conf'''
 
  #Listen 80
 
  #Listen 80
 
'''auskommentieren'''
 
'''auskommentieren'''
;Neustarten
 
*systemctl restart apache2
 
  
==Header Optionen==
+
; Neustarten
;Modul headers laden
+
* systemctl restart apache2
*sudo a2enmod headers
+
 
;Sicherheitsoptionen zusätzlich zu TLS
+
== 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 174: Zeile 196:
 
  Header always set X-Content-Type-Options nosniff
 
  Header always set X-Content-Type-Options nosniff
  
=Restart=
+
= Restart =
*systemctl restart apache2
+
* systemctl restart apache2
 +
 
 +
= Tests =
 +
* curl -sI https://webserver.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content"
  
=Tests=
+
= AppArmor =
*curl -sI https://webserver.lab34.linuggs.de | egrep "Strict|X-Frame|X-Content"
+
; Under Construction
=Apparmor=
+
* [[Apache2 mit AppArmor from the Scratch]]
;Under Construction
+
[[Kategorie:LDAP]]
*[[Apache2 mit Apparmor from the Scratch]]
 

Aktuelle Version vom 11. Oktober 2024, 07: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

AppArmor

Under Construction