cisco機器のログイン認証をRadiusで認証させる
FreeRADIUSとCisco機器を利用したログイン認証 - devwiki
これが元ネタなのですが、整理してかけていません。
Cisco機器のもっとも単純なログイン認証は以下のような設定である。
条件
コンソールパスワード:LOGIN telnetパスワード:LOGIN 特権モードパスワード:SECRET
コンフィグ例
enable secret SECRET line con 0 password LOGIN login line vty 0 4 password LOGIN login
これを以下のようなユーザ認証に変更したい。
条件
CON:line認証 VTY:telnetはvty0-4に割り当てられline認証 VTY:sshはvty5-15に割り当てられRADIUSでのユーザ認証 特権:特権パスワードをRADIUS認証する
コンフィグ例(Cisco機器)
! SSHで接続する場合には、ドメイン名の設定後に、RSAキーを作成する。 ! RSAキーは768ビット以上にしなければSSHv2にすることができない。 ip domain-name prosper2.org crypto key generate rsa The name for the keys will be: R40801.prosper2.org Choose the size of the key modulus in the range of 360 to 4096 for your General Purpose Keys. Choosing a key modulus greater than 512 may take a few minutes. How many bits in the modulus [512]: ← ここで1024を入力する % Generating 1024 bit RSA keys, keys will be non-exportable... [OK] (elapsed time was 1 seconds) ip ssh version 2 ! ユーザ名の設定を行う ! 後述のRADIUSとの疎通が取れなくなった場合には、 ! このユーザ名とパスワードで認証が実施される。 username user01 password PSWDuser01 aaa new-model aaa session-id common ! line認証をdefaultグループにしておく。 ! →新規グループにしようとするとAAAサーバの設定が必要だが、 ! line認証ではAAAサーバを設定しないため、defaultにしか設定できない。 aaa authentication login default line aaa authorization exec default if-authenticated ! Radiusサーバを設定する。 aaa group server radius RadiusForLogin server-private 192.168.10.251 auth-port 1812 acct-port 1813 timeout 1 retransmit 1 key RADIUSKEY ! イネーブル認証にRadiusサーバを設定する。 aaa authentication enable default group RadiusForLogin enable ! ログイン認証にRadiusサーバを設定する。 aaa authentication login AuthenForLogin group RadiusForLogin local-case aaa authorization exec AuthorForLogin group RadiusForLogin if-authenticated ! コンソールはline認証とする line con 0 password LOGIN login authentication default ! コンソールにもRADIUS認証させたい場合には以下とする。 aaa authorization console line con 0 login authentication AuthenForLogin authorization exec AuthorForLogin ! telnetで着信したものはvty0-4に割り当てる ! vty0-4はline認証とする line vty 0 4 password LOGIN login authentication default transport input telnet ! sshで着信したものはvty5-15に割り当てる ! vty5-15はRADIUS認証、RADIUS認可とする。 line vty 5 15 login authentication AuthenForLogin authorization exec AuthorForLogin transport input ssh
コンフィグ例(FreeRadiusの/etc/raddb/users)
user Auth-Type := PAP , MD5-Password := "xxxx" $enab15$ Auth-Type := PAP , MD5-Password := "xxxx" admin Auth-Type := PAP , MD5-Password := "xxxx" Service-Type := NAS-Prompt-User , Cisco-AVPair := "shell:priv-lvl=15"
解説
Radiusアトリビュートとして以下を渡すと、権限レベル15でログインすることとなる。 権限レベル15とは特権モードのことである。 Service-Type := NAS-Prompt-User , Cisco-AVPair := "shell:priv-lvl=15" ただし、RADIUSによる認可を行うには、以下コマンドにて 「認証された場合に、認可を有効にする」ことをする必要がある。 aaa authorization exec AuthorForLogin group RadiusForLogin if-authenticated PAPの場合はパスワードをusersファイルに書き込まなければならないが、平文での保存が 精神衛生上よろしくない場合には、ハッシュ値での保存が可能である。 ハッシュ値は以下のコマンドで算出可能。 $ echo -n PASSWORD | openssl md5
動作確認
======== telnet ======== $ telnet r40801 Trying 192.168.100.254... Connected to r40801. Escape character is '^]'. User Access Verification Password: R40801>show privi Current privilege level is 1 R40801>en Password: R40801#show privi Current privilege level is 15 R40801#exit Connection closed by foreign host. Radiusログ Mon Mar 23 23:07:01 2015 : Auth: Login OK: [$enab15$/XXXXXX] (from client MyHome port 6 cli 192.168.10.251)
======== ssh ======== $ ssh admin@r40801 Password: R40801#show privi Current privilege level is 15 R40801#exit Connection to r40801 closed. $ Radiusログ Mon Mar 23 23:07:15 2015 : Auth: Login OK: [admin/XXXXXX] (from client MyHome port 12)
よしとする。