らくがきちょう

なんとなく

Cisco IOS ルータへの SSH ログインを Radius 認証させる

以前に Cisco IOS ルータへの Radius ログイン時、自動的に特権モードにするにはというメモを書きましたが、これでは設定として不十分な為、新たに「Cisco IOS ルータへ Radius 認証でログインする」方法に関して、メモを書き直します。

設定方針

  • コンソールログイン
    • Radius 認証はさせず、ローカル認証させる
    • 特権モードへの移行にはパスワード (enable secret) が必要
  • SSH ログイン (Radius サーバ正常時)
    • Radius 認証する
    • Radius 認証に成功した場合はログイン直後から特権モードとする
  • SSH ログイン (Radius サーバ障害時)
    • Radius サーバがダウンしている場合はローカル認証に切り替える
    • 特権モードに昇格する場合はコンソールログイン同様、パスワード (enable secret) が必要
  • それ以外のログイン
    • Telnet 等、他のログイン方法は無効とする

パラメータ

事前に決定しておく必要がある代表的なパラメータを表にまとめます。

項目 意味 設定例
[HOSTNAME] ホスト名 iosv-1
[ENABLE-SECRET] 特権モードのパスワード enable-secret
[DOMAIN] ドメイン example.com
[RADIUS-ADDRESS] Radius サーバのアドレス 10.0.0.100
[SECRET] Radius シークレット radius-secret
[LOCAL-ADMIN] ローカルユーザ admin
[LOCAL-PASS] ローカルユーザ用のパスワード password
[ADDRESS] インターフェイスのアドレス 10.0.0.1
[NETMASK] インターフェイスのネットマスク 255.255.255.0
[GATEWAY] デフォルトゲートウェイ 10.0.0.254

IOS ルータ用のコンフィグ

クラシックな IOS 用のコンフィグは以下のようです。 正確な情報を調べることは出来なかったのですが、(IOS-XE 以前の) クラシックな IOS では RadSec (RFC-6614 Transport Layer Security (TLS) Encryption for RADIUS には対応していないようなので、通常の Radius プロトコルを用いています。

service password-encryption
service timestamps debug datetime msec localtime
service timestamps log datetime msec localtime
!
hostname [HOSTNAME]
!
enable secret [ENABLE-SECRET]
!
aaa new-model
!
aaa group server radius GROUP-RADIUS
 server-private [RADIUS-ADDRESS] auth-port 1812 acct-port 1813 timeout 3 retransmit 1 key [SECRET]
!
aaa authentication login default none
aaa authentication login VTY_LOGIN group GROUP-RADIUS local
aaa authentication login CON_LOGIN local
aaa authorization exec default none
aaa authorization exec VTY_EXEC group GROUP-RADIUS if-authenticated
!
ip domain-name [DOMAIN]
!
clock timezone JST 9 0
!
crypto key generate rsa modulus 2048
ip ssh version 2
no ip http server
no ip http secure-server
!
username [LOCAL-ADMIN] privilege 15 password [LOCAL-PASS]
!
interface GigabitEthernet0/0
 ip address [ADDRESS] [NETMASK]
 no shutdown
!
ip route 0.0.0.0 0.0.0.0 [GATEWAY]
`
line con 0
 exec-timeout 60 0
 login authentication CON_LOGIN
!
line vty 0 4
 exec-timeout 60 0
 authorization exec VTY_EXEC
 login authentication VTY_LOGIN
 transport input ssh
!
end