2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AIX】ログインとユーザー認証についてまとめてみた(基本編)

Posted at

AIXのログインとユーザー認証について、教科書レベルの内容をまとめてみました。
実機での検証で確かめたことも置いておきます。

内容の加筆修正は随時行います。


実機環境

  • AIX 7.3.0.0(TL1 SP1)
  • openssh.base.server 8.1.102

概要

AIXのログインとユーザー認証プロセスについて、フロー図を作ってみました。
以降はこのフロー図に従って順に内部的な動きを見ていきます。

この記事を書くきっかけにもなった、AIX,シェルなどの環境設定部分(図の「環境設定」~「シェルの起動まで」)については別途記事を書こうと思います。

loginの要求

図と照らしあわると「ユーザーによるログイン名の入力」に向かう矢印にあたる箇所の話です。
AIXのユーザーのログイン形態は以下2種類と言われています。

  1. gettyが待機するポートからのログイン
  2. TCP/IPネットワーク経由でサーバー(login)プログラムを起動させる

上記は2つともログイン要求の仕組みに違いはあるものユーザー認証の仕組みはパスワード認証方式の場合同じため、それぞれのログイン要求について述べ、ユーザー認証についてはまとめて記載します。


1. getty(/usr/sbin/getty)からのloginの要求

端末を使ったサーバーへの直接ログインがこのログイン形態です。

流れは以下の通りです。
init起動 → gettyをスタートさせる → gettyが待ち受けるポート(コンソール・デバイス)に端末が接続される → ログイン・プロンプトの表示 → 端末からの入力

細かい部分を見ていきます。

  • ログインに使用されるポートは/etc/initabに記載されています。
    grep getty /etc/inittabで確認可能。以下、実機での出力
cons:0123456789:respawn:/usr/sbin/getty /dev/console

※この場合、待ち受けているポートは/dev/consoleになります。

現在使用しているコンソール・デバイスはlsconsで確認可能です。

実機でHMCからのVterm(/dev/vty)接続の場合、出力は以下のようになります

# lscons
/dev/vty0
  • 各ポートの構成は/etc/security/login.cfgにて属性と値で設定できます。
    内容はcatコマンドなどで確認可能です。詳細な属性の説明は設定ファイル内に記載ありますが、こちらのドキュメントにも記載があります。
    (https://www.ibm.com/docs/en/aix/7.3?topic=files-logincfg-file)

以下、属性値を実機で確認したものです。

/etc/security/login.cfg(一部抜粋)
default:
        sak_enabled = false
        logintimes =
        logindisable = 0
        logininterval = 0
        loginreenable = 0
        logindelay = 0

・・・・

usw:
        shells = /bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,/bin/ksh93,/bin/bash,/usr/bin/sh,/usr/bin/bsh,/usr/bin/csh,/usr/bin/ksh,/usr/bin/tsh,/usr/bin/ksh93,/usr/bin/bash,/usr/bin/rksh,/usr/bin/rksh93,/usr/sbin/uucp/uucico,/usr/sbin/snappd
        maxlogins = 32767
        logintimeout = 60
        maxroles = 8
        auth_type = STD_AUTH
        pwd_algorithm = ssha256
        unix_passwd_compat = true

/etc/security/login.cfgではherald属性にてログイン・プロンプトの設定ができます。

/etc/security/login.cfg(一部抜粋)
 herald        Specifies the initial message to be printed out when getty or
               login prompts for a login name.  This value is a string that is
               written out to the login port.  If the herald is not specified
               for a port or in the default stanza, then the default herald is
               gotten from the message catalog associated with the language
               set in /etc/environment.

AIXにおいて端末からのログインを実行するには対象ユーザーのlogin属性の値がTrueである必要があります。

実機でログインプロンプトの変更

デフォルト

AIX Version 7
Copyright IBM Corporation, 1982, 2022.
Console login:

viでPortのスタンザを変更

default:
        herald = "login to console: "
        ・・・

exitしてログインプロンプト表示させてみると、、、

login to console:

2. TCP/IPネットワーク経由でloginの要求

rlogin,telnet,sshログインがこのログイン形態にあたります。
流れは以下の通りです。
(前提)rlogind/telnetd/sshdがactive状態 → クライアントからrlogin/telnet/sshコマンドの発行 → サーバーとの通信確立 → rlogind/telnetd/sshdからlogin要求 → 入力

以下、細かい部分です。

  • 前提のrlogind/telnetd/sshdの状態はlssrc -s サービス名で確認できます
# lssrc -s sshd
Subsystem         Group            PID          Status
 sshd             ssh              7274760      active

rlogind,telnetdについてはinetdの子プロセスとして動きます。そのため、/etc/inetd.confにてrlogind,telnetdが有効になるように以下のような記載が存在する必要があります。

telnet  stream  tcp6    nowait  root    /usr/sbin/telnetd      telnetd -a  #telnetの場合
login   stream  tcp6    nowait  root    /usr/sbin/rlogind      rlogind     #rloginの場合

AIX7.3ではセキュリティの都合でデフォルトではコメントアウトされているので注意が必要です

sshdについてはinetdではなくその上位のsrcmstrの子プロセスで動くため/etc/inetd.confの編集は必要ありません。また、/etc/ssh/sshd_configで詳細の設定が可能です。
※ここでsshについて内容を書くと長くなるため割愛します。

AIXにおいてTCP/IPネットワーク経由のログインを実行するには対象ユーザーのrlogin属性の値がTrueである必要があります。


ユーザーの認証

図と照らしあわると「ユーザーによるログイン名の入力」~「ログエントリーの追加」にあたる箇所の話です。
ユーザーの認証については以下の前提条件があります。

  • 端末からのログインの場合、対象ユーザーの属性値loginがtrueであること
  • TCP/IPネットワーク経由のログインの場合、対象ユーザーの属性値rloginがtrueであること

設定はchuser login=true ユーザー名 chuser rlogin=true ユーザー名で設定をするか、smitty chuserでも設定できます

  User can LOGIN?                                     true                   + #login属性
  User can LOGIN REMOTELY(rsh,tn,rlogin)?             true                   + #rlogin属性

ユーザー認証(パスワード認証方式)の流れは以下の通りです。

実際試しにログインを失敗(パスワード入力ミス)してみました。

login to console: root
root's Password:
You entered an invalid login name or password.
login: root
root's Password:
You entered an invalid login name or password.
login: root
root's Password:
*******************************************************************************
*                                                                             *
*                                                                             *
*  Welcome to AIX Version 7.3!                                                *
*                                                                             *
*                                                                             *
*  Please see the README file in /usr/lpp/bos for information pertinent to    *
*  this release of the AIX Operating System.                                  *
*                                                                             *
*                                                                             *
*******************************************************************************
2 unsuccessful login attempts since last login.
Last unsuccessful login: Sun Oct  6 21:21:13 CDT 2024 on /dev/vty0
Last login: Sun Oct  6 21:17:41 CDT 2024 on /dev/vty0

すると/etc/security/failedloginには記録されています。(diff差分で確認)

[haship10t@root]/# diff loginfail1.txt loginfail2.txt
3c3
< f▒▒▒UNKNOWN_USERvty0|
f▒▒UNKNOWN_USERvty0|f▒▒?
・・・(f▒8▒hashinokvty0e*g<▒
---
> f▒▒▒UNKNOWN_USERvty0|
・・・(f▒8▒hashinokvty0e*g<▒rootvty0e0gE▒rootvty0e0gE▒
2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?