Apache vHost mit PAM-Authentifizierung (HTTPS)

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Apache PAM-Authentifizierung unter Debian 12/13

Diese Anleitung aktiviert PAM-Login (Linux-Benutzer) für Apache mittels pwauth.
Debian 12/13 nutzt journald – keine /var/log/auth.log mehr.

Pakete installieren

  • apt -y install libapache2-mod-authnz-external pwauth

Modul aktivieren

  • a2enmod authnz_external
  • systemctl restart apache2

Verzeichnis für die geschützte Seite

  • mkdir -p /var/www/vpn

Testseite

  • vi /var/www/vpn/index.html
<html>
<body>
<p style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">
Test Page for PAM Auth
</p>
</body>
</html>

Apache-Konfiguration mit PAM

  • vi /etc/apache2/sites-available/vpn.echt-jetzt.de.conf
<VirtualHost *:443>
    ServerName vpn.echt-jetzt.de
    DocumentRoot /var/www/vpn

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/echt-jetzt.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/echt-jetzt.de/privkey.pem

    AddExternalAuth pwauth /usr/sbin/pwauth
    SetExternalAuthMethod pwauth pipe

    <Directory /var/www/vpn>
        SSLRequireSSL
        AuthType Basic
        AuthName "PAM Authentication"
        AuthBasicProvider external
        AuthExternal pwauth
        require valid-user
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/vpn_error.log
    CustomLog ${APACHE_LOG_DIR}/vpn_access.log combined
</VirtualHost>

Site aktivieren

  • a2ensite vpn.echt-jetzt.de.conf
  • systemctl reload apache2

Funktionstest

Benutzer ist ein normaler Linux-Account

Debugging unter Debian 12/13 (journald)

pwauth schreibt NICHT nach /var/log/auth.log
  • journalctl -u apache2 -e
  • journalctl -e | grep -E "pam|pwauth"

Manuelles Prüfen eines PAM-Logins

  • pamtester apache BENUTZER authenticate

Rechte prüfen

pwauth muss root gehören, setuid root
  • ls -l /usr/sbin/pwauth