私はこれを見ていました: http://docs.Oracle.com/javase/7/docs/technotes/tools/windows/kinit.html そして、「パスワードフラグ」これを行う方法はわかりませんか?
kinit
のプロンプトを表示せずにパスワードを入力できますか?
たとえば、現在:
入力した場合:
$ kinit test@REALM
私は応答を受け取ります:
test@REALM's password:
パスワードを入力する必要があります。とにかくkinit test @ REALM passwordのようなものを入力できるので、プロンプトは表示されませんか?
そのプリンシパルのキータブを使用してください!
詳細:サービスのキータブはどうすればよいですか。
複数の方法がありますが、私は次のことを前提としています。KDC実装としてActive Directoryを実行しており、バックエンドはCentOS、FreeBSD、HP-UXなどのUnixまたはUnixライクなOSで実行されています。また、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
_を省略します。 keytabファイルを保存する場所をpath
に調整します。
サンプルの実行:
_$ /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
_
次に、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
_
このキータブは、JGSSの_login.conf
_または_KRB5_CLIENT_KTNAME
_およびMIT Kerberosで使用できるようになりました。
またできます
$ echo 'password' | kinit username
2つの人気のあるKerberosクライアントパッケージがあります:MITおよびHeimdal。HeimdalはMacOSに付属するものですが、MITはリファレンス実装です。Heimdalクライアントでは、 --password-file
フラグを使用します。
$ kinit --password-file=~/mypasswordfile test@REALM
これにより、「パスワードをファイル名の 1行目 から読み取る」ので、プロセスリストにパスワードが漏洩することを回避できます。
代わりに行うことができます
--password-file=STDIN
パイプして、例cat password_file | kinit --password-file=STDIN test@REALM
。
注:これにより、ps
出力を介したパスワードの漏洩が回避されます。
MacOSでは keychain オプションも使用できます。お持ちのクライアントのタイプはkinit --version
で確認できます。 --version
フラグが認識されない場合は、MIT client; Heimdalクライアントがフラグを認識しすぎてバージョンを報告しているようです。
UbuntuがデフォルトをHeimdal実装からMIT 14.04と16.04の間の1つに切り替えました。また、一般的に言えば、2つのパッケージ 互いに競合する )に切り替えたことに注意してください。
使用しているkinitに正確に依存することもできるかもしれませんが、それは非常に悪い考えです。そのシステムの誰でもプロセステーブルと任意のコマンドのARGVを読み取ることができるため、パスワードが公開されます。
Kinitのほとんどの実装は、まさにこの理由でこれをサポートしていません。
あなたはウィンドウズボックスとUNIXボックスのどちらにいるのか完全に明確ではありませんか?
どちらにしても、この問題を処理する正しい方法は、キータブを使用することです。
キータブには、プリンシパルのキー(パスワードではない)が格納されます。 Kerberosでは、パスワードは、暗号交換で実際に使用されるよりランダムなキーを生成するために使用されます。キータブを作成/操作するコマンドは通常、
ktutil
「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
参照リンク hortonworkskb.iu.ed