Jak korzystać z haseł innych niż zwykły tekst dla użytkowników Tomcat?

19

W systemie Ubuntu 10.04.3 LTS po zainstalowaniu Tomcat 6 sposobem dodania konta menedżera / administratora jest dodanie takiego rekordu do /etc/tomcat6/tomcat-users.xml:

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

To hasło jest w postaci zwykłego tekstu i nie czuję się z tym dobrze. Czy zamiast tego można użyć skrótu? Jeśli masz rozwiązanie inne niż Ubuntu, prawdopodobnie mogę je przetłumaczyć.

John Whitlock
źródło

Odpowiedzi:

14

Zaczerpnięte z tej strony

  1. dodać „przetrawić” atrybut w elemencie server.xmlz algorytmu hash jako wartości (możliwe wartości to na przykład md5, sha-1albo sha-256, w przypadku gdy jest zalecane).
  2. Biegać $CATALINE_HOME/bin/digest.sh -a <YOUR_HASH_ALGORITHM> <YOUR_PASSWORD>
  3. Otrzymasz wynik w następującej formie <YOUR_PASSWORD>:<ENCRYPTED_PASSWORD>
  4. Zamień wartość passwordatrybutu użytkownika w swoim tomcat-users.xmldo<ENCRYPTED_PASSWORD>
  5. uruchom ponownie tomcat

Zobacz też: Tomcat skrót hasła

Alex
źródło
1
+1, ale eek na MD5. Użyj "sha-1"lub "sha-256", jeśli to zadziała.
Shane Madden
1
W Tomcat 7 znajduje się teraz plik digest.bat w katalogu bin, aby to zrobić. Przykład:digest.bat -a "md5" <YOUR_PASSWORD>
Zasz
1
Jest to niepełne w przypadku Tomat 8.5.x. Zobacz mój komentarz poniżej, aby zobaczyć pełne kroki. Musisz także zmodyfikować swoją dziedzinę w pliku server.xml, a także w metodzie uwierzytelniania web.xml.
atom88
8

Dla każdego, kto tu przyjeżdża, szukając informacji o Tomcat 8.0.15 lub nowszym, prawdopodobnie powinieneś użyć SecretKeyCredentialHandler z PBKDF2, ponieważ jest to znacznie bezpieczniejsze (tj. Trudniejsze do złamania) niż prosty skrót wiadomości.

Na przykład w pliku server.xml:

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

W tej konfiguracji użyj następujących poleceń, aby wygenerować zaszyfrowane dane wyjściowe na podstawie hasła:

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

z wybraną liczbą iteracji i wielkością soli (w bajtach). Zauważ, że długość klucza musi być taka sama jak zdefiniowana w server.xml z powodu błędu 60446 . Jednak powinno to zostać naprawione wkrótce.

OSTRZEŻENIE! Upewnij się, że twoje hasło nie zostanie zapisane w historii poleceń twojej powłoki. W bash osiąga się to przez poprzedzenie polecenia pustą spacją.

Polecenie wyświetli twoje hasło w postaci zwykłego tekstu i reprezentację szesnastkową wynikowych poświadczeń, których powinieneś użyć jako atrybutu hasła w pliku tomcat-users.xml.

Dokumentację dla komponentu CredentialHandler można znaleźć tutaj . Możliwe wartości atrybutu algorytmu można znaleźć tutaj .

Niklas Holm
źródło
0

1) Wygeneruj hasło: /bin>digest.bat -s 0 -a sha-256

Przykład: /bin>digest.bat -s 0 -a sha-256 admin

Hasło do użycia to: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918

* Ważna uwaga: Musisz użyć „-s 0” (sól 0), inaczej nie zadziała.

2) wklej hasło powyżej do pliku tomcat-users.xml.

Przykład:

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

3) Skonfiguruj server.xml, aby używał haseł opartych na skrótach SHA-256:

4) skonfiguruj swój plik web.xml, aby używał haseł „DIGEST” i zaktualizuj RealmName, aby pasował powyżej (w sekcji 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>
atom88
źródło
Mylisz DIGEST auth z hashowanymi hasłami. Pytanie dotyczy używania hashowanych haseł w autoryzacji BASIC.
rustyx