サーバ運用では一般的なSSH公開鍵認証をCisco ASAで実装する。これにより、よりセキュア、かつ効率的に運用が可能になる。
オフィシャル情報
Cisco ASAのSSH関連設定ガイドはこちら www.cisco.com
本記事ではSSH公開鍵認証に特化して設定方法を記載する。
環境情報
自宅用なので、定期的なOSバージョンアップはしておらず、やや古い...。SSH公開鍵認証を適用する際には事前に導入バージョンで検証を実施ください。(後述の通りバージョンによる差異があります)
ASA5505# sh ver Cisco Adaptive Security Appliance Software Version 9.2(3) Device Manager Version 7.2(1) Compiled on Mon 15-Dec-14 04:10 by builders System image file is "disk0:/asa923-k8.bin" ...
認証は機器ローカルのみで実施する。よりセキュアな環境ではRADIUSサーバによる認証を検討ください。( Cisco ASA:RADIUSを使ったASAへのログイン設定と注意点 - Cisco Community )
ASA5505# sh run | i aaa aaa authentication ssh console LOCAL aaa authentication telnet console LOCAL
通常のパスワード認証でログインできる状態からスタートする。
ASA5505# sh run | i password enable password PASSWORD encrypted username dev password PASSWORD encrypted privilege 15 --- [dev@h-cent-mng01 ~]$ ssh dev@asa5505 dev@asa5505's password: PASSWORD Type help or '?' for a list of available commands. ASA5505>
SSH公開鍵認証の設定をする
設定コマンドは以下の通り。(上記ドキュメントを参考に設定)
ASA5505# conf t ASA5505(config)# username dev password PASSWORD privilege 15 ASA5505(config)# username dev attributes ASA5505(config-username)# ssh authentication publickey <PUBLIC_KEY>
ここで入力するPUBLIC_KEYは、以下のようなSSH公開鍵の、
[dev@h-cent-mng01 ~]$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAAD... dev@d-cent-mng01.designet.local
スペースを含まないこの部分だけを入力する。
AAAAB3NzaC1yc2EAAAAD...
SSH秘密鍵でログインする
ローカルからは適切な秘密鍵を使用して接続するよう、.ssh/config
等を設定する。Teraterm等の場合はSSH秘密鍵ファイルを選択する。
パスフレーズなしのSSHキーペアを設定している場合、以下のようにパスフレーズなしでログインできる。
[dev@h-cent-mng01 ~]$ ssh dev@asa5505 Type help or '?' for a list of available commands. ASA5505>
(注意)パスワードなしユーザの作成・追加設定
検証したバージョンでは、以下のようにnopasswordとしてユーザを作成した場合、空のパスワードが設定されるため注意。
ASA5505(config)# username dev nopassword privilege 15
[dev@h-cent-doc01 ~]$ ssh asa5505 dev@asa5505's password: [何も入力せずEnter] Type help or '?' for a list of available commands. ASA5505>
検証バージョンではパスワードなしユーザは作成できない...
ASA5505(config)# username hatena ? configure mode commands/options: attributes Enter the attributes sub-command mode for the specified user nopassword Indicates that this user has no password password The password for this user ASA5505(config)# username hatena attributes ERROR: Invalid username
以下のバージョンでパスワード未定義が作成できるようになったようだ。(未検証)
SSH 公開キー認証の改善
9.6(2)
以前のリリースでは、ローカル ユーザ データベース( (aaa authentication ssh console LOCAL ))を使用して AAA SSH 認証を有効にしなくても、SSH 公開キー認証((ssh authentication ))を有効にすることができました。この設定は修正されたため、AAA SSH 認証を明示的に有効にする必要があります。ユーザが秘密キーの代わりにパスワードを使用できないよう、パスワード未定義のユーザ名を作成できるようになりました。
次のコマンドが変更されました。ssh authentication、username
(備考)Privilegeの動作
Privilegeの動作についてはこちらのやりとりがが参考になった。
ログイン時からEnableモード(15)になるのではなく、(enable_15ユーザでなく)そのユーザでEnableモードに遷移できるということのようだ。Linuxで言うsudo
できるようなものだ。
ASA5505> show curpriv Username : dev Current privilege level : 1 Current Mode/s : P_UNPR ASA5505> en Password: ENABLE_PASSWORD ASA5505# show curpriv Username : enable_15 Current privilege level : 15 Current Mode/s : P_PRIV ASA5505# exit ASA5505> login Username: dev Password: PASSWORD ASA5505# sh curpriv Username : dev Current privilege level : 15 Current Mode/s : P_PRIV
まとめ - Cisco ASAにSSH公開鍵認証でログインする
Cisco ASAにSSH公開鍵認証を設定し、秘密鍵によるログインを実装した。検証用途で言うと、パスフレーズなしキーペアの使用により効率が向上する。より新しいOSバージョンを使用することで、パスワードログインを禁止し鍵認証を必須とすることができる。