LoginSignup
0
0

More than 3 years have passed since last update.

SONiCとAAA(覚書)

Last updated at Posted at 2019-12-16

本稿についての注意(お詫び)

調べはしたものの実際に試せておらず、ただの覚書にとどまっているので、詳細な記述ができていない残念な内容となっている。いずれ試した際には加筆・修正する可能性があることを付記するが、現段階では機能の存在を紹介する以上の内容になってない旨、あらかじめご了承いただきたい。

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を直接編集する模様。

参考リンク

0
0
0

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
0
0