Linuchs: Ordner mit Passswort schützen

Moin,

auf meinem Linux-Server möchte ich einen Ordner und seine Unterordner mit einem Passwort gegen fremden Aufruf schützen. Es kommt die Meldung

Internal Server Error

.../musik/.htaccess

AuthUserFile /opt/users/www/php/muster.de/musik/.htpasswd
AuthGroupFile /dev/null
AuthName "Geschützer Bereich "
AuthType Basic
<Limit GET POST PUT>
require valid-user
deny from all
Satisfy Any
</Limit>

.../musik/.htpasswd

saschi:uR5hMXxicjYAQ
Kalle:$apr1$d.Qjukyv$rrvy428pjTCcGIYq0VwZZ.

Der erste User stammt aus einer Datei von 2009 (anderes Projekt, anderer Server), das Passwort des zweiten habe ich heute generiert mit http://www.htaccesstools.com/htpasswd-generator/ Wieso sind die so unterschiedlich lang?

Der Provider ist TwooIt, in meinem FTP-Programm heisst der Ordner /muster.de/musik mit phpinfo() sehe ich unter _SERVER["PWD"] den Wert /opt/users/www/php/muster.de

Wie schütze ich diesen Ordner erfolgreich?

Gruß, Linuchs

  1. Tach!

    auf meinem Linux-Server möchte ich einen Ordner und seine Unterordner mit einem Passwort gegen fremden Aufruf schützen. Es kommt die Meldung

    Internal Server Error

    Schau ins ErrorLog des Servers nach der konkreten Meldung.

    Der erste User stammt aus einer Datei von 2009 (anderes Projekt, anderer Server), das Passwort des zweiten habe ich heute generiert mit http://www.htaccesstools.com/htpasswd-generator/ Wieso sind die so unterschiedlich lang?

    Unterschiedliche Verschlüsslungsmethoden. Heutzutage macht man das besser als damals.

    Wie schütze ich diesen Ordner erfolgreich?

    Mit den richtigen Direktiven. Vielleicht hast du einen 2.4er Apachen, da ist das anders zu notieren als beim 2.2er.

    dedlfix.

    1. Hallo dedlfix,

      Schau ins ErrorLog des Servers nach der konkreten Meldung.

      Wo ist das? Das Verzeichnis cgi-bin ist leer. Geprüft mit Filezilla. Unter dem Suchbegriff error gibt's bei phpinfo keine Ordner- oder Datei-Angabe.

      Unter Core => error_log steht no value (local value) und no value (master value) und log_errors = Off

      Mit den richtigen Direktiven. Vielleicht hast du einen 2.4er Apachen, da ist das anders zu notieren als beim 2.2er.

      Ja, Apache/2.4.26 (Unix) OpenSSL/1.0.1t mod_fcgid/2.3.9

      Hier die komplette Meldung, wenn ich den geschützten Ordner aufrufe:

      Internal Server Error
      
      The server encountered an internal error or misconfiguration and was unable to complete your request.
      
      Please contact the server administrator at webmaster@osmer.de to inform them of the time this error occurred, and the actions you performed just before this error.
      
      More information about this error may be available in the server error log.
      

      Ich kann also mit der momentanen Konfiguration keinen Passwortschutz einrichten?

      Linuchs

      1. Tach!

        Schau ins ErrorLog des Servers nach der konkreten Meldung.

        Wo ist das?

        Das ist eine Konfigurationssache des Apachen. Vielleicht ist es unter /var/log/apache/ oder /var/log/httpd/ oder ganz woanders. Da musst du gegebenenfalls deinen Administrator befragen. Bei einigen Hostern kommt man auch gar nichts ans Error-Log.

        Das Verzeichnis cgi-bin ist leer.

        Das ist ja auch kein Logfile-Verzeichnis.

        Geprüft mit Filezilla. Unter dem Suchbegriff error gibt's bei phpinfo keine Ordner- oder Datei-Angabe.

        PHP und dessen Einstellungen haben damit gar nichts zu tun.

        Mit den richtigen Direktiven. Vielleicht hast du einen 2.4er Apachen, da ist das anders zu notieren als beim 2.2er.

        Ja, Apache/2.4.26 (Unix) OpenSSL/1.0.1t mod_fcgid/2.3.9

        Dann schau mal in die Dokumentation des Apachen, wie man das jetzt machen muss.

        Hier die komplette Meldung, wenn ich den geschützten Ordner aufrufe:

        500er Fehler sind generell nichtssagend in Richtung Webseitenbesucher. Da hilft auch kein vollständiger nichtssagender Text. Nur das Error-Log gibt Auskunft über die genaue Ursache.

        More information about this error may be available in the server error log.

        Das ist der einzige zielweisende Satz in dem ganze Text.

        Ich kann also mit der momentanen Konfiguration keinen Passwortschutz einrichten?

        Doch, mit den Direktiven entsprechend deiner Version vom Webserver.

        dedlfix.

      2. Schau ins ErrorLog des Servers nach der konkreten Meldung.

        Wo ist das?

        Da wo es in der Serverkonfiguration konfiguriert ist.

        Das Verzeichnis cgi-bin ist leer.

        Das wäre auch ein schlechter Ort dafür, da gehören schließlich Programme hin.

        Unter Core => error_log steht no value (local value) und no value (master value) und log_errors = Off

        Dann solltest du den Admin des Servers darum bitten, log_errors auf den (i.A.) sinnvolleren Wert On zu stellen. error_log kann ruhig leer bleiben, dann landen die Log-Ausgaben in STDERR und der Apache kümmert sich um den Rest (wo dessen Error-Log ist, s.o.).

      3. Hallo Linuchs,

        Hier die komplette Meldung, wenn ich den geschützten Ordner aufrufe:

        Internal Server Error
        
        The server encountered an internal error or misconfiguration and was unable to complete your request.
        
        Please contact the server administrator at webmaster@osmer.de to inform them of the time this error occurred, and the actions you performed just before this error.
        
        More information about this error may be available in the server error log.
        

        Die 500er Meldungen sind absichtlich nichtssagend, damit man einem potenziellen Hacker nichts verrät. Nur wer nichts weiß, kann auch nichts verraten 😉

        Bis demnächst
        Matthias

        --
        Rosen sind rot.
  2. saschi:uR5hMXxicjYAQ
    Kalle:$apr1$d.Qjukyv$rrvy428pjTCcGIYq0VwZZ.
    

    Beides Passwörter sind schlecht, genauer: unsicher, "gehascht". Das Obere ist wohl MD5, das untere Apache-MD5. Der Apache 2.4 versteht mit bcyrypt "gehaschte" Passwörter, die auf folgende Weise erzeugt werden können:

    PHP:

    $apachepassword  = password_hash( $password, PASSWORD_BCRYPT );
    

    Ergebnis: etwas wie:

    "$2y$10$fSdkqk5HVN8YjDAAWmAPQucFtNJI7GM2rlQFPCDhdr719HyfPV6Wy"
    

    Shell:

    user="hugo";
    pass="hallo"
    apachepasswordline=`htpasswd -Bbn "$user" "$pass"`
    echo $apachepasswordline
    

    Ergebnis: Etwas wie:

    hugo:$2y$05$Stz/8OKhna7Iy4W3GbKW.OM4W2hrhJ5TGWQBHElaX04Ht5lkMFmR.
    

    In den folgenden Zeilen mischst Du fröhlich alte und neue Syntax:

    require valid-user     # vor und nach 2.4
    deny from all          # vor 2.4
    Satisfy Any            # vor 2.4
    

    Das geht, wenn überhaupt, nur wenn das Modul "mod_access_compat" installiert und aktiviert ist.

    Hier gibt es die Hinweise für den Übergang zum Apache 2.4.

    Und hier gibt es eine von zahlreichen Fertiglösungen.