Pocket

Linuxアカウント認証周りの調査

  • add this entry to hatena bookmark

業務にて、Linuxにおけるアカウントのパスワード等に関するアルゴリズムを調べる必要がありましたので、調査結果を以下に記載しています。

パスワード暗号化(ハッシュアルゴリズム)の調査

パスワードの暗号化(ハッシュ アルゴリズム)で何が使われているかは、/etc/shadows のパスワードフィールドの頭3文字を見れば分かります。最近のOSでは、「$6$」になっているかと思いますが、これはSHA512が使われている事を指します。

ちなみに、以下がハッシュアルゴリズムの見分け表です。

$1$ MD5 さらに昔に使われていたDES(56bitまで)よりも長いパスワードが使える
$2$ Blowfish
$5$ SHA-256
$6$ SHA-512

では、実際にどこで設定されているのかを見ていきます。

設定場所

Linuxアカウント周りはPAM(Pluggable Authentication Modules)が使われています。

昔は「/etc/login.defs」でログインやパスワード関連の設定を行っていました。現在はlogin,passwd,suなどのプログラムはPAMに置き換わっています。現状も /etc/login.defs ファイルは使われていますが、PAMを使う部分は関係ありません。(もう少し整理が必要・・・)

PAMの設定ファイルは、/etc/pam.d/ディレクトリに置かれています。

# ls /etc/pam.d/
chfn                 login             polkit-1        smartcard-auth-ac  sudo
chsh                 newrole           remote          smtp               sudo-i
config-util          other             run_init        smtp.sendmail      su-l
crond                passwd            runuser         sshd               system-auth
fingerprint-auth     password-auth     runuser-l       ssh-keycat         system-auth-ac
fingerprint-auth-ac  password-auth-ac  smartcard-auth  su
#

アプリ毎、用途毎に設定ファイルが存在しています。では、実際に中身を見ていきたいと思います。

PAM設定ファイルの中身

/etc/pam.d/system-auth に基本的な設定が入っています。

設定の意味については、色々ググると出てきます。

password の個所で、sha512となっているので、この個所がパスワードのハッシュアルゴリズムを設定している事になるかと思います。(/etc/shadow で確認した $6$ になっていた部分が、実際に設定されている箇所がこの場所。)

以上で、一旦調べたかった事は裏が取れたので、終了とします。(PAM関連は奥が深いので、この投稿では深追いしない事にします。)

補足:関連ライブラリ

ライブラリは、/lib64/security/ ディレクトリに置かれている。以下のとおり、多数のファイルがある。

# ls /lib64/security/
pam_access.so        pam_filter.so     pam_nologin.so         pam_time.so
pam_cap.so           pam_ftp.so        pam_permit.so          pam_timestamp.so
pam_chroot.so        pam_group.so      pam_postgresok.so      pam_tty_audit.so
pam_ck_connector.so  pam_issue.so      pam_pwhistory.so       pam_umask.so
pam_console.so       pam_keyinit.so    pam_rhosts.so          pam_unix_acct.so
pam_cracklib.so      pam_lastlog.so    pam_rootok.so          pam_unix_auth.so
pam_debug.so         pam_limits.so     pam_securetty.so       pam_unix_passwd.so
pam_deny.so          pam_listfile.so   pam_selinux_permit.so  pam_unix_session.so
pam_echo.so          pam_localuser.so  pam_selinux.so         pam_unix.so
pam_env.so           pam_loginuid.so   pam_sepermit.so        pam_userdb.so
pam_exec.so          pam_mail.so       pam_shells.so          pam_warn.so
pam_faildelay.so     pam_mkhomedir.so  pam_stress.so          pam_wheel.so
pam_faillock.so      pam_motd.so       pam_succeed_if.so      pam_xauth.so
pam_filter           pam_namespace.so  pam_tally2.so
#

かなり沢山あります。/etc/pam.d/の中のファイルで参照設定されています。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。