本稿についての注意(お詫び)
調べはしたものの実際に試せておらず、ただの覚書にとどまっているので、詳細な記述ができていない残念な内容となっている。いずれ試した際には加筆・修正する可能性があることを付記するが、現段階では機能の存在を紹介する以上の内容になってない旨、あらかじめご了承いただきたい。
AAA
AAAとは、Authentication, Authorization, and Accounting、
- Authentication 認証
- Authorization 認可
- Accounting 課金
を表す用語。
認証でアクセスしてくるユーザを確認し、認可でユーザごとに参照・設定可能な権限を与え、その記録を取得・収集する。
SONiCとAAA
SONiCはCLIでの操作のためにログインが必要になるが、ここにAAAが適用される。設定がない倍は、ビルド時に設定されたユーザ名とパスワードによるログインとなる。設定することにより、外部サーバによってユーザ認証させることができる。対象はsshによるログインとコンソールログインの両方となっている。また、gRPCによるtelemetryもAAAと連動できるようにする予定がある模様。
世の中の主なAAA用のプロトコルとしてはRADIUS, TACACS+があるが、SONiCではTACACS+をサポートする。
AAAを使う利点
AAAを使うことによる利点は下記となる。
- 共通アカウントでなく、各ユーザのアカウントを用意しアクセス状況を確認できる
- スイッチ(実機)ごとにユーザアカウント情報を作成する必要がなく、サーバ側でアカウント情報を管理できる
TACACS+サーバを用意する
Linuxホスト用のTACACS+サーバパッケージが存在する。
Ubuntuでの例は下記。tac_plus.conf
を記述し-C
で指定して起動する。
$ sudo apt install tacacs+
(ログ省略)
$ tac_plus
Usage: tac_plus -C <config_file> [-GghiLPstv] [-B <bind address>] [-d <debug level>] [-l <logfile>] [-p <port>] [-u <wtmpfile>] [-w <whologfile>]
-G stay in foreground; do not detach from the tty
-g single thread mode
-h display this message
-i inetd mode
-L lookup peer addresses for logs
-P parse the configuration file and exit
-S enable single-connection
-s refuse SENDPASS
-t also log to /dev/console
-v display version information
認証方法を設定する
$ sudo config aaa authentication login -h
Usage: config aaa authentication login [OPTIONS] [AUTH_PROTOCOL]...
Switch login authentication [ {tacacs+, local} | default ]
$ sudo config aaa authentication fallback enable
$ sudo config aaa authentication failthrough enable
$ sudo config aaa authentication login tacacs+ login
-
local
を指定すると、パスワード認証となる。インストール後のSONiCにログインしたのち、通常のLinuxホストと同様vipw
などを駆使してアカウント情報を更新すれば、その通りにログインできる。 -
tacacs+
を指定すると、TACACS+サーバへ問い合わせる認証となる。 - 並べて記述し
fallback enable
とすることで、先に記述した認証に失敗した際、次の認証方法を試すことができる。 - 内部的にはTACACS+用のPAMモジュールが用意されていて、
/etc/nsswitch.conf
による参照優先度が書き換わる。
AAA設定状態を参照する
(未設定時)
$ show aaa
AAA authentication login local (default)
AAA authentication failthrough False (default)
(設定後)
$ show aaa
AAA authentication login tacacs+,local
AAA authentication failthrough True
AAA authentication fallback True
-
local
はパスワード認証をあらわす。tacacs+
だとTACACS+認証となる。 -
failthrough
は、複数のTACACS+サーバを登録してあるサーバで認証エラーとなった際に別のサーバに問い合わせに行くかをあらわす。True
で次のサーバに問い合わせに行く。
認証サーバ設定
$ sudo config tacacs
Usage: config tacacs [OPTIONS] COMMAND [ARGS]...
TACACS+ server configuration
Options:
-?, -h, --help Show this message and exit.
Commands:
add Specify a TACACS+ server
authtype Specify TACACS+ server global auth_type [chap...
default set its default configuration
delete Delete a TACACS+ server
passkey Specify TACACS+ server global passkey...
timeout Specify TACACS+ server global timeout <0 -...
認可関連情報を設定する
/etc/nss_tacacs.conf
を直接編集する模様。