Wie verwende ich Nicht-Klartext-Passwörter für Tomcat-Benutzer?


19

Unter Ubuntu 10.04.3 LTS können Sie nach der Installation von Tomcat 6 ein Manager- / Administratorkonto folgendermaßen hinzufügen /etc/tomcat6/tomcat-users.xml:

<role rolename="manager"/>
<role rolename="admin"/>
<user username="user" password="password" roles="manager,admin"/>

Das Passwort ist im Klartext und damit bin ich nicht einverstanden. Gibt es eine Möglichkeit, stattdessen so etwas wie einen Hash zu verwenden? Wenn Sie eine Nicht-Ubuntu-Lösung haben, kann ich sie wahrscheinlich übersetzen.

Antworten:


14

Aus dieser Seite entnommen

  1. add „verdauen“ -Attribut auf Ihrem Element server.xmlmit einem Hash - Algorithmus als Wert (mögliche Werte sind zum Beispiel md5, sha-1oder sha-256, wo diese dringend empfohlen).
  2. Lauf $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. Sie erhalten eine Ausgabe in der folgenden Form <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Ersetzen Sie den Wert des Benutzerattributs passwordin Ihrem tomcat-users.xmlto<ENCRYPTED_PASSWORD>
  5. Starten Sie Tomcat neu

Siehe auch: Tomcat Digest-Passwort


1
+1, aber eek am MD5. Verwenden Sie "sha-1"oder "sha-256", wenn es funktionieren wird.
Shane Madden

1
In Tomcat 7 gibt es jetzt eine digest.bat im bin-Verzeichnis, um dies zu tun. Beispiel:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz

1
Dies ist für Tomat 8.5.x unvollständig. Siehe meinen Kommentar unten für die vollständigen Schritte. Sie müssen Ihren Realm auch in der Datei server.xml sowie in der Authentifizierungsmethode web.xml ändern.
Atom88

8

Wenn Sie hier nach Informationen zu Tomcat 8.0.15 oder neuer suchen, sollten Sie SecretKeyCredentialHandler stattdessen mit PBKDF2 verwenden, da es viel sicherer (dh schwerer zu knacken) ist als eine einfache Zusammenfassung von Nachrichten.

Zum Beispiel in Ihrer server.xml:

<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
       resourceName="UserDatabase">
   <CredentialHandler className="org.apache.catalina.realm.SecretKeyCredentialHandler"
                      algorithm="PBKDF2WithHmacSHA512"
                      keyLength="256"
   />
</Realm>

Verwenden Sie bei dieser Konfiguration Folgendes, um die Hash-Ausgabe aus Ihrem Kennwort zu generieren:

 $CATALINA_HOME/bin/digest.sh -a "PBKDF2WithHmacSHA512" -i 100000 -s 16 -k 256 -h "org.apache.catalina.realm.SecretKeyCredentialHandler" "YOUR_PASSWORD"

mit der Iterationszahl und der Salt-Größe (in Bytes) Ihrer Wahl. Beachten Sie, dass die Schlüssellänge aufgrund des Fehlers 60446 mit der in server.xml definierten übereinstimmen muss . Es sollte jedoch ziemlich bald stromaufwärts behoben werden.

WARNUNG! Bitte stellen Sie sicher, dass Ihr Passwort nicht im Befehlsverlauf Ihrer Shell gespeichert wird. In bash wird dies erreicht, indem dem Befehl ein Leerzeichen vorangestellt wird.

Der Befehl gibt Ihr Kennwort im Klartext und in hexadezimaler Darstellung der resultierenden Anmeldeinformationen aus, die Sie als Kennwortattribut in Ihrer tomcat-users.xml verwenden sollten.

Dokumentation zur CredentialHandler-Komponente finden Sie hier . Die möglichen Werte für das Algorithmusattribut finden Sie hier .


0

1) Generieren Sie das Passwort: /bin>digest.bat -s 0 -a sha-256

Beispiel: /bin>digest.bat -s 0 -a sha-256 admin

Das zu verwendende Passwort lautet: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Wichtiger Hinweis: Sie müssen "-s 0" (Salz 0) verwenden, sonst funktioniert es nicht.

2) Fügen Sie das obige Passwort in Ihre tomcat-users.xml-Datei ein.

Beispiel:

<!-- for password “admin” -->
<user username="tomcat" password="8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918" roles="manager-gui,manager,admin"></user>

3) Konfigurieren Sie server.xml für die Verwendung von Passwörtern, die auf SHA-256-Digest-Hashes basieren:

4) Konfigurieren Sie Ihre web.xml so, dass sie "DIGEST" -Kennwörter verwendet, und aktualisieren Sie RealmName so, dass er mit den oben angegebenen übereinstimmt (im Abschnitt HTMLManager).

 <catalina_home>/webapps/manager\WEB-INF\web.xml

    <login-config>
        <auth-method>DIGEST</auth-method>
        <realm-name>UserDatabase</realm-name> 
    </login-config>

Full context:
  <servlet>
    <servlet-name>HTMLManager</servlet-name>
    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>2</param-value>
    </init-param>

… SNIPPED_FOR_BREVITY ...   

    <login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>UserDatabase</realm-name>
  </login-config>

    <multipart-config>
      <!-- 50MB max -->
      <max-file-size>52428800</max-file-size>
      <max-request-size>52428800</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>
  </servlet>

Sie verwechseln die DIGEST-Authentifizierung mit Hash-Passwörtern. Die Frage bezieht sich auf die Verwendung von Hash-Passwörtern mit BASIC-Authentifizierung.
Rustyx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.