Kerberos kinit вводит пароль без подсказки

Я смотрел на это: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/kinit.html и заметил, что там написано, что я могу использовать "флаг пароля". Я не уверен, как это сделать, хотя?

Могу ли я ввести пароль для kinit без подсказки?

Например в настоящее время:

Если я наберу:

$ kinit [email protected]

Я получаю ответ:

[email protected] password: 

и я должен ввести пароль. Могу ли я в любом случае ввести что-то вроде kinit test @REALM password, чтобы оно мне не подсказывало?

Ответ 1

Используйте keytab для этого принципала!

Подробно: Как мне сделать сервис keytab.

Есть несколько способов, но я буду предполагать следующее: вы используете Active Directory в качестве вашей реализации KDC, вы запускаете серверную часть на Unix или Unix-подобных ОС, таких как CentOS, FreeBSD, HP-UX и т.д. У вас также есть MIT Kerberos или Heimdal установлен и krb5.conf настроен правильно.

Установите mskutil(1) через менеджер пакетов/портов или скомпилируйте из исходного кода. Если вы решите скомпилировать, убедитесь, что все зависимости присутствуют на вашем компьютере.

Теперь запустите mskutil:

$ /usr/local/sbin/msktutil update --verbose --use-service-account --account-name <samAccountName> \
  --old-account-password <password> --dont-change-password --keytab <path>

Замените samAccountName и password своими данными. Оставьте dont-change-password если у вас все в порядке с автоматически сгенерированными паролями. Настройте path где вы хотите сохранить файл keytab.

Образец прогона:

$ /usr/local/sbin/msktutil update --verbose --use-service-account --account-name uawet8er \
>   --old-account-password '...' --dont-change-password --keytab uawet8er.keytab
 -- execute: Skipping creation of new password
 -- get_dc_host: Attempting to find Domain Controller to use via DNS SRV record in domain AD.EXAMPLE.COM for procotol tcp
 -- validate: Found DC: dc01.ad.example.com. Checking availability...
 -- get_dc_host: Found preferred Domain Controller: dc01.ad.example.com
 -- create_fake_krb5_conf: Created a fake krb5.conf file: /tmp/.msktkrb5.conf-y6WVDM
 -- destroy_g_context: Destroying Kerberos Context
 -- initialize_g_context: Creating Kerberos Context
 -- finalize_exec: SAM Account Name is: uawet8er
 -- try_machine_password: Trying to authenticate for uawet8er with password
 -- create_default_machine_password: Default machine password for uawet8er is uawet8er
 -- try_machine_password: Error: krb5_get_init_creds_keytab failed (Vorauthentifizierung fehlgeschlagen)
 -- try_machine_password: Authentication with password failed
 -- try_machine_supplied_password: Trying to authenticate for uawet8er with supplied password
 -- switch_default_ccache: Using the local credential cache: FILE:/tmp/.mskt_krb5_ccache-ZUutAC
 -- finalize_exec: Authenticated using method 6
 -- LDAPConnection: Connecting to LDAP server: dc01.ad.example.com
SASL/GSSAPI authentication started
SASL username: [email protected]
SASL SSF: 256
SASL data security layer installed.
 -- ldap_get_base_dn: Determining default LDAP base: dc=AD,dc=EXAMPLE,dc=COM
 -- get_default_ou: Determining default OU: CN=Users,DC=ad,DC=example,DC=com
 -- ldap_check_account: Checking that a service account for uawet8er exists
 -- ldap_check_account: Checking service account - found
 -- ldap_check_account: Found userAccountControl = 0x200
 -- ldap_check_account: Found supportedEncryptionTypes = 28
 -- ldap_check_account: Found User Principal: uawet8er
 -- ldap_check_account_strings: Inspecting (and updating) service account attributes
 -- ldap_set_supportedEncryptionTypes: No need to change msDs-supportedEncryptionTypes they are 28
 -- ldap_set_userAccountControl_flag: Setting userAccountControl bit at 0x200000 to 0x0
 -- ldap_set_userAccountControl_flag: userAccountControl not changed 0x200
 -- ldap_get_kvno: KVNO is 8
 -- remove_keytab_entries: Trying to remove entries for uawet8er from keytab
 -- execute: Updating all entries for service account uawet8er in the keytab WRFILE:uawet8er.keytab
 -- update_keytab: Updating all entries for uawet8er
 -- add_principal_keytab: Adding principal to keytab: uawet8er
 -- get_salt: Using salt of AD.EXAMPLE.COMuawet8er
 -- add_principal_keytab:   Adding entry of enctype 0x17
 -- add_principal_keytab:   Adding entry of enctype 0x11
 -- add_principal_keytab:   Adding entry of enctype 0x12
 -- add_principal_keytab: Adding principal to keytab: uawet8er
 -- get_salt: Using salt of AD.EXAMPLE.COMuawet8er
 -- add_principal_keytab:   Adding entry of enctype 0x17
 -- add_principal_keytab:   Adding entry of enctype 0x11
 -- add_principal_keytab:   Adding entry of enctype 0x12
 -- add_keytab_entries: Trying to add missing entries for uawet8er to keytab

Теперь проверьте ваш keytab с помощью kinit:

$ kinit  -k -t uawet8er.keytab uawet8er
$ klist
Ticketzwischenspeicher: FILE:/tmp/krb5cc_722
Standard-Principal: [email protected]

Valid starting       Expires              Service principal
24.07.2019 13:15:45  24.07.2019 23:15:45  krbtgt/[email protected]
        erneuern bis 25.07.2019 13:15:45

Теперь login.conf таблица KRB5_CLIENT_KTNAME готова для использования с вашим login.conf для JGSS или с KRB5_CLIENT_KTNAME и MIT Kerberos.

Ответ 2

Также вы можете

$ echo 'password' | kinit username

Ответ 3

Существует 2 популярных клиентских пакета Kerberos: MIT и Heimdal. Heimdal - это то, что поставляется с MacOS, но MIT является эталонной реализацией. На клиентах Heimdal вы можете использовать флаг --password-file:

$ kinit --password-file=~/mypasswordfile [email protected]

Это позволяет избежать утечки пароля в список процессов, так как он "читает пароль из первой строки имени файла".

Вы можете альтернативно сделать

--password-file=STDIN

и передайте это, ex cat password_file | kinit --password-file=STDIN [email protected] cat password_file | kinit --password-file=STDIN [email protected].

ПРИМЕЧАНИЕ. Это позволяет избежать утечки пароля через вывод ps.

В MacOS вы также можете использовать опцию цепочки для ключей. Вы можете проверить тип вашего клиента с помощью kinit --version. Если флаг --version не распознан, скорее всего, у вас есть клиент MIT; клиенты Heimdal, кажется, слишком распознают флаг и сообщают версию.

Обратите внимание, что Ubuntu переключил настройку по умолчанию с реализации Heimdal на MIT между 14.04 и 16.04. Также, вообще говоря, два пакета конфликтуют друг с другом.

Ответ 4

Возможно, вы сможете в зависимости от того, какой именно кинит вы используете, но это очень плохая идея. Любой пользователь этой системы может прочитать таблицу процессов и ARGV для любой команды, и, таким образом, ваш пароль будет открыт.

Большинство реализаций kinit не поддерживают это именно по этой причине.

Не совсем ясно, что вы в окне окна или в Unix?

В любом случае, правильный способ справиться с этой проблемой - использовать keytab.

Keytabs хранят ключ для принципала (а не пароль). В kerberos пароль используется для генерации более случайного ключа, который фактически используется в криптографическом обмене. Команда для создания/манипулирования ключами обычно

ktutil

Ответ 5

Создайте таблицу ключей, используя "ktutil"

> ktutil   
ktutil:  addent -password -p [email protected] -k 1 -e rc4-hmac   
Password for [email protected]: [enter your password]  
ktutil:  addent -password -p [email protected] -k 1 -e aes256-cts  
Password for [email protected]: [enter your password]   
ktutil:  wkt username.keytab   
ktutil:  quit


    # Below steps will will create a keytab for the user, move it into a secure directory, 
and automatically get a ticket when the user logs in with a bash shell

mkdir /home/username/keytabs 
chmod 700 /home/username/keytabs 
mv username.keytab /home/username/keytabs 
chmod 600 /home/username/keytabs/username.keytab 
echo "kinit -kt /home/username/keytabs/username.keytab [email protected]" >> /home/username/.bash_profile

Команда для передачи keytab и входа в систему

kinit [email protected] -k -t/path/to/username.keytab

Ссылка ссылка hortonworks kb.iu.edu