Cisco IOS システム管理 – 仮想端末(VTY等)の詳細設定

スポンサーリンク

Cisco IOSはvty, consoleなどの仮想端末し、タイムアウトやメッセージ出力などの様々な設定が可能です。

コマンド一覧

このシナリオで重要なコマンド一覧は以下の通りです。

Router(config-line)# login [ local ]
Router(config-line)# login authentication { <auth_list> | default }
Router(config-line)# transport input { [ telnet ] [ ssh ] | all | none }
Router(config-line)# transport output { [ telnet ] [ ssh ] | all | none }
Router(config-line)# transport prefer { telnet | ssh | none }
Router(config-line)# session-timeout <min>
Router(config-line)# exec-timeout <min> [ <sec> ]
Router(config-line)# absolute-timeout <min>
Router(config-line)# logout-warning <sec>
Router(config-line)# ip netmask-format { bit-count | decimal | hexadecimal
Router(config-line)# lockable
Router(config-line)# length <num>
Router(config-line)# vacant-message <message>
Router(config-line)# refuse-message <message>
Router(config-line)# rotary <num>

Router(config)# username <name> access-group <ac;>
Router(config)# line vty <num>
Router(config-line)# access-class <acl> { in | out }

Router(config)# username <user> autocommand <command>
Router(config)# line vty <num>
Router(config-line)# autocommand <command>

構成図

これ以降の動作確認は、以下の環境で行います。
初期設定の状態でtelnetとsshによるアクセスを許可しています。

  +--------+        +--------+
  |   R1   +--------+   R2  | 
  +--------+.1    .2+--------+
          e0/0    e0/1
         192.168.12.0/24

 R1 Loopback0      R2 Loopback0
 10.1.1.1/32       10.2.2.2/32
 [R1]
ip domain name cisco.com
crypto key generate rsa
!
username cisco password 0 cisco
!
line vty 0 4
 login local
 transport input telnet ssh

 [R2]
ip domain name cisco.com
crypto key generate rsa
!
username cisco password 0 cisco
!
line vty 0 4
 login local
 transport input telnet ssh

設定全文は下記ファイルです。詳細設定は下記を参照ください。なお、ssh keyを生成する設定はconfigには含まれませんので、手入力でssh keyを生成して下さい

R1
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
!
!
ip cef
ip domain name cisco.com
!
username cisco password 0 cisco
!
!
ip auth-proxy max-nodata-conns 3
ip admission max-nodata-conns 3
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
ip tcp synwait-time 5
! 
!
!
!
!
interface Loopback0
 ip address 10.1.1.1 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.1 255.255.255.0
 half-duplex
!
router ospf 1
 log-adjacency-changes
 network 10.1.1.1 0.0.0.0 area 0
 network 192.168.12.1 0.0.0.0 area 0
!
no ip http server
no ip http secure-server
!
ip forward-protocol nd
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login local
 transport input telnet ssh
!
!
end
R2
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
memory-size iomem 5
no ip icmp rate-limit unreachable
!
!
ip cef
ip domain name cisco.com
!
username cisco password 0 cisco
!
!
ip auth-proxy max-nodata-conns 3
ip admission max-nodata-conns 3
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
!
ip tcp synwait-time 5
! 
!
!
!
!
interface Loopback0
 ip address 10.2.2.2 255.255.255.255
!
interface Ethernet0/0
 ip address 192.168.12.2 255.255.255.0
 half-duplex
!
router ospf 1
 log-adjacency-changes
 network 10.2.2.2 0.0.0.0 area 0
 network 192.168.12.2 0.0.0.0 area 0
!
no ip http server
no ip http secure-server
!
ip forward-protocol nd
!
!
!
!
!
control-plane
!
!
!
!
!
!
!
!
!
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login local
 transport input telnet ssh
!
!
end

line vty 接続設定 認証設定

仕様説明

以下のコマンドでline vtyに対する認証の設定が可能です。

コマンド 説明
login line passwordに基づく認証を行います。
login local local databaseに基づく認証を行います。
login authentication 認証リストに基づく認証を行います(要AAA有効化)。
Router(config-line)# login [ local ]
Router(config-line)# login authentication { <auth_list> | default }

以下transportコマンドは接続方法の定義です。

コマンド 説明
transport input line vtyへ どの接続方法を許可するかの定義です。
例えば、”transport telnet ssh”とすればtelnet接続とssh接続を許可します。
transport output vty接続したユーザが他のルータへどのような接続が可能かの定義です。例えば、”transport ssh”とすれば他のルータへの接続はsshのみ認められます。
transport prefer 優先する接続方法の定義です。user modeで”telnet 192.168.12.2″と入力すると接続方法を明示的に指定した接続もできますが、”192.168.12.2″のように接続方法を省略した指定も可能です。接続方法を省略した場合は、”transport prefer”で定義された接続方法が使用されます。
Router(config-line)# transport input { [ telnet ] [ ssh ] | all | none }
Router(config-line)# transport output { [ telnet ] [ ssh ] | all | none }
Router(config-line)# transport prefer { telnet | ssh | none }

接続設定 認証設定

仕様理解のため、以下の設定をR1に投入します。

 [R1]
line vty 0 4
 transport input ssh
 transport output telnet
 transport preferred none

R2からR1への接続を試みます。”transport input ssh”との設定が施されているので、telnet接続は拒否されるもののssh接続が可能である事が確認できます。

 [R2]
R2#telnet 10.1.1.1
Trying 10.1.1.1 ...
% Connection refused by remote host

R2#
R2#
R2#ssh -l cisco 10.1.1.1

Password:

R1>

R2からR1へ接続した後に、以下の操作を行います。

“R2″のようにホスト名を指定すると、デフォルトの挙動ではホスト名の名前解決を試みるはずです。しかし、以下の出力を見るとno ip domain-lookupが設定されていないにも関わらず名前解決をしません。これは”transport prefer none”が定義されているので、そもそも接続を試みない、つまり接続しないので名前解決も必要ないからです。

また、”transport output telent”が設定されているので、ssh接続は許可されない旨のエラーメッセージが表示され、その一方telnet接続は可能である事が読み取れます。

 [R2]
R1>R2
    ^
% Invalid input detected at '^' marker.

R1>
R1>
R1>ssh -l cisco 10.2.2.2
% ssh connections not permitted from this terminal
R1>
R1>telnet 10.2.2.2
Trying 10.2.2.2 ... Open


User Access Verification

Username: cisco
Password:
R2>

line vty タイムアウト設定

仕様説明

以下のコマンドでvty接続に関するtimeoutを定義する事ができます。

コマンド 説明
session-timeout vty接続したユーザが他のルータに接続した際、
他のルータへの接続可能な時間の上限を定義します。
exec-timeout 何も入力しない状態が続いた場合の接続可能時間の上限を定義します。
absolute-timeout 入力が続続いた場合の接続可能時間の上限を定義します。
absolute-timeout absolute-timeoutによりログアウトされる前に警告メッセージを表示します。
警告メッセージを表示することで、ログアウト前にwrite memoryを実行したりコマンド入力途中でのログアウトを防いだりする事が可能です。
Router(config-line)# session-timeout <min>
Router(config-line)# exec-timeout <min> [ <sec> ]
Router(config-line)# absolute-timeout <min>
Router(config-line)# logout-warning <sec>

動作確認 1

R1に対し以下timeoutを定義します。

 [R1]
line vty 0 4
 session-timeout 1
 exec-timeout 2
 absolute-timeout 5
 logout-warning 30

以下の操作を実行します。

  • R2からR1へ接続します。
  • 上記の状態でR1からR2へ再接続します。
  • session-timeoutによりログアウトするのを待ちます
  • exec-timeoutによりログアウトするのを待ちます
 [R2]
R2#ssh -l cisco 10.1.1.1
Password: 
R1>
R1>
R1>
R1>telnet 10.2.2.2
Trying 10.2.2.2 ... Open


User Access Verification

Username: cisco
Password:
R2>
R2>
R2>this is test message
    ^
% Invalid input detected at '^' marker.

R2>
[Connection to 10.2.2.2 idle too long; timed out]
R1>
R1>
R1>this is test message
    ^
% Invalid input detected at '^' marker.

R1>
[Connection to 10.1.1.1 closed by foreign host]
R2#

上記のイベントをターミナルソフトのログから時刻を追います。

16行目14:30:04にR2にログインが完了し、23行目14:31:17にログアウトしています。session-timeoutで定義された約1分後にログアウトしているのが分かります。

26行目14:31:45に最後の入力があり、31行目14:33:54にログアウトしています。exec-timeoutで定義した約2分後にログアウトしています。

[Sun Apr 22 14:29:39.136 2012] R2#ssh -l cisco 10.1.1.1
[Sun Apr 22 14:29:46.137 2012] 
[Sun Apr 22 14:29:46.137 2012] Password: 
[Sun Apr 22 14:29:47.837 2012] 
[Sun Apr 22 14:29:47.837 2012] R1>
[Sun Apr 22 14:29:48.858 2012] R1>
[Sun Apr 22 14:29:49.893 2012] R1>
[Sun Apr 22 14:29:49.893 2012] R1>telnet 10.2.2.2
[Sun Apr 22 14:29:58.891 2012] Trying 10.2.2.2 ... Open
[Sun Apr 22 14:29:59.010 2012] 
[Sun Apr 22 14:29:59.010 2012] 
[Sun Apr 22 14:29:59.010 2012] User Access Verification
[Sun Apr 22 14:29:59.010 2012] 
[Sun Apr 22 14:29:59.010 2012] Username: cisco
[Sun Apr 22 14:30:02.874 2012] Password: 
[Sun Apr 22 14:30:04.924 2012] R2>
[Sun Apr 22 14:30:06.905 2012] R2>
[Sun Apr 22 14:30:06.959 2012] R2>this is test message
[Sun Apr 22 14:30:16.936 2012]     ^
[Sun Apr 22 14:30:16.936 2012] % Invalid input detected at '^' marker.
[Sun Apr 22 14:30:16.936 2012] 
[Sun Apr 22 14:30:16.936 2012] R2>
[Sun Apr 22 14:31:17.440 2012] [Connection to 10.2.2.2 idle too long; timed out]
[Sun Apr 22 14:31:17.456 2012] R1>
[Sun Apr 22 14:31:45.862 2012] R1>
[Sun Apr 22 14:31:45.862 2012] R1>this is test message
[Sun Apr 22 14:31:53.871 2012]     ^
[Sun Apr 22 14:31:53.872 2012] % Invalid input detected at '^' marker.
[Sun Apr 22 14:31:53.872 2012] 
[Sun Apr 22 14:31:53.872 2012] R1>
[Sun Apr 22 14:33:54.511 2012] [Connection to 10.1.1.1 closed by foreign host]
[Sun Apr 22 14:33:54.511 2012] R2#

動作確認 2

以下の操作を実行します。

  • R2からR1へ接続します。
  • exec-timeoutでログアウトされないよう定期的になんらかのコマンドを入力します。
  • absolute-timeoutによりログアウトするのを待ちます
 [R2]
R2#ssh -l cisco 10.1.1.1

Password:

R1>this is test message
    ^
% Invalid input detected at '^' marker.

R1>this is test message
    ^
% Invalid input detected at '^' marker.

R1>
*
*
* Line timeout expired
*
*
R1>
R1>
[Connection to 10.1.1.1 closed by foreign host]
R2#

上記のイベントをターミナルソフトのログから時刻を追います。

5行目14:35:02にR2にログインが完了し、16行目14:39:33に警告メッセージが表示され、16行目14:40:01にログアウトしています。absolute-timeoutで定義された約5分後にログアウトし、absolute-timeoutで定義した30秒前に警告メッセージが表示されています。

[Sun Apr 22 14:34:47.845 2012] R2#ssh -l cisco 10.1.1.1
[Sun Apr 22 14:35:01.370 2012] 
[Sun Apr 22 14:35:01.370 2012] Password: 
[Sun Apr 22 14:35:02.780 2012] 
[Sun Apr 22 14:35:02.781 2012] R1>this is test message
[Sun Apr 22 14:36:36.874 2012]     ^
[Sun Apr 22 14:36:36.874 2012] % Invalid input detected at '^' marker.
[Sun Apr 22 14:36:36.875 2012] 
[Sun Apr 22 14:36:36.875 2012] R1>this is test message
[Sun Apr 22 14:38:24.868 2012]     ^
[Sun Apr 22 14:38:24.868 2012] % Invalid input detected at '^' marker.
[Sun Apr 22 14:38:24.868 2012] 
[Sun Apr 22 14:38:24.868 2012] R1>
[Sun Apr 22 14:39:33.413 2012] *
[Sun Apr 22 14:39:33.413 2012] *
[Sun Apr 22 14:39:33.413 2012] * Line timeout expired
[Sun Apr 22 14:39:33.413 2012] *
[Sun Apr 22 14:39:33.413 2012] *
[Sun Apr 22 14:39:44.854 2012] R1>
[Sun Apr 22 14:39:49.868 2012] R1>
[Sun Apr 22 14:40:01.527 2012] [Connection to 10.1.1.1 closed by foreign host]
[Sun Apr 22 14:40:01.528 2012] R2#

line vty 表示設定 操作設定

仕様説明

以下のコマンドでサブネットマスク表示形式、lock機能を設定する事ができます。なお、私が動作確認を行った環境では、length, vacant-message, refuse-messageはサポートされていませんでした。

コマンド 説明
ip netmask-format サブネットマスクの表示形式を変更します。
lockable lock機能を有効にします。
lenght showコマンドなどで一度に出力する行数を定義します。
vacant-message vty lineに空きがあり接続が可能な場合に出力するメッセージです。
refuse-message vty lineに空きがなく接続が不能な場合に出力するメッセージです。
Router(config-line)# ip netmask-format { bit-count | decimal | hexadecimal
Router(config-line)# lockable
Router(config-line)# length <num>
Router(config-line)# vacant-message <message>
Router(config-line)# refuse-message <message>

表示設定

以下設定をR1に投入します。

 [R1]
line vty 0 4
 lockable
 ip netmask-format hexadecimal
 length 10
 vacant-message # this is vacant message for vty #
 refuse-message # this is refuse message for vty #

R2からR1へ接続します。show ip interfaceなどサブネットマスクを表示させるコマンドを入力すると、サブネットマスクが16進数表記に変わっている事が分かります。

 [R2]
R2#ssh -l cisco 10.1.1.1

Password:

R1>
R1>show ip interface Ethernet 0/0
Ethernet0/0 is up, line protocol is up
  Internet address is 192.168.12.1 0xFFFFFF00
  Broadcast address is 255.255.255.255
  Address determined by non-volatile memory
  MTU is 1500 bytes
  Helper address is not set

 <omitted>

表示設定

lockはパスワードを入力しない限り、操作ができなくなる機能です。例えば、コンソールを開きっぱなしで離籍したい時に有効です。lock操作実施してから離籍すれば、他のユーザがコンソールからコマンドを入力するリスクを回避する事ができます。

R2からR1に接続したままの状態で、lockコマンドを入力します。パスワードを定義し、画面をlockできる事を確認します。

 [R2]
R1>lock
Password:
Again:

line vty アクセス制御

仕様説明

以下のコマンドでVTYに対するアクセス制御が可能です。

Router(config-line)# access-class <acl> { in | out }

以下のコマンドでユーザ単位のアクセス制御が可能です。ルータにログインしたユーザはアクセスリストで許可された通信しか許されなくなります。なお、このユーザ単位の制御は上記のline vtyに対する設定と競合します。

Router(config)# username <name> access-group <ac;>

VTYに対するアクセス制御

以下の設定をR1に投入します。

 [R1]
ip access-list standard PERMIT_VTY_IN
 10 permit host 10.2.2.2
ip access-list standard PERMIT_VTY_OUT
 10 permit host 10.2.2.2
!
line vty 0 4
 transport input all
 transport output all
 access-class PERMIT_VTY_OUT out
 access-class PERMIT_VTY_IN in

R2からR1へ接続を試みます。VTY入力方向のACLの影響で、送信元がLoopback 0 (10.2.2.2)の場合のみ接続が許可される事が分かります。

R2#telnet 10.1.1.1 /source-interface Ethernet 0/0
Trying 10.1.1.1 ...
% Connection refused by remote host

R2#
R2#
R2#telnet 10.1.1.1 /source-interface Loopback 0
Trying 10.1.1.1 ... Open


User Access Verification

Username: cisco
Password:
R1>

R2からR1へ接続した状態で、再度R1からR2への接続を試みます。VTY出力方向のACLの影響で、宛先が10.2.2.2の場合のみ接続が拒否される事が分かります。また、ACLによって拒否された場合は、”Connections to that host not permitted from this terminal”と宛先から接続拒否を返された時とは異なるエラーメッセージが出力される事にも注意して下さい。

R1>telnet 192.168.12.2
Trying 192.168.12.2 ...
% Connections to that host not permitted from this terminal
R1>
R1>
R1>telnet 10.2.2.2
Trying 10.2.2.2 ... Open


User Access Verification

Username: cisco
Password:
R2>

ユーザ単位のアクセス制御

ユーザoperatorを作成し、operatorに対するアクセス制御をかけます。この設定は、先程のline vtyに対するアクセス制御と競合しますので、先程の設定の削除操作も行います。

 [R1]
line vty 0 4
 transport input all
 transport output all
 no access-class PERMIT_VTY_OUT out
 no access-class PERMIT_VTY_IN in
!
access-list 100 permit tcp any host 10.2.2.2 eq 22
username operator access-class 100 password operator

R2からR1へ、ユーザoperatprで接続します。ACLの影響で、telnetでの接続はできませんがSSH(tcp 22)による接続は可能である事を確認します。

R2#telnet 10.1.1.1 /source-interface Loopback 0
Trying 10.1.1.1 ... Open


User Access Verification

Username: operator
Password:
R1>telnet 10.2.2.2
Trying 10.2.2.2 ...
% Connections to that host not permitted from this terminal
R1>
R1>
R1>ssh -l cisco 10.2.2.2

Password:

R2>

line vty rotary

仕様説明

以下のコマンドでtelnet接続可能なポート番号を変更します。例えば、”rotary 1″と指定すると、3001, 4001, 5001などのポート番号で接続可能です。

Router(config-line)# rotary <num>

rotaryはlock and keyと呼ばれる機能と併用される事が多いです。lock and keyは、アクセス許可用のユーザを作成し、そのユーザでログインすると一定時間アクセスが許されるようになる仕組みの事です。

lock and keyは”access-enable”というコマンドを実行する事によって、アクセスが一定時間許されるようになります。一般的には、ログイン後に自動的に”access-enable”コマンドを実行するようにします。コマンド自動実行の方法は、以下のようにユーザ単位の定義とline単位の定義があります。

Router(config)# username <user> autocommand <command>

Router(config)# line vty <num>
Router(config-line)# autocommand <command>

動作確認

rotaryの動作確認として、lock and keyを実装します。以下のようにlock and keyでhttpを許可する設定を投入します。

 [R1]
ip http server
username access password access
!
line vty 4
 rotary 1
 autocommand access-enable host
!
ip access-list extended LOCK_KEY
 10 dynamic ACCESS timeout 5 permit tcp any any eq www
 20 deny tcp any any eq www
 99 permit ip any any
!
interface Ethernet0/0
 ip access-group LOCK_KEY in

lock解除前は、httpに対してアクセスできない事を確認します。

 [R2]
R2#telnet 10.1.1.1 80
Trying 10.1.1.1, 80 ...
% Destination unreachable; gateway or host down

R2#

lock解除し、httpに対してアクセス可能な事を確認します。

 [R2]
R2#telnet 10.1.1.1 3001
Trying 10.1.1.1, 3001 ... Open


User Access Verification

Username: access
Password:
[Connection to 10.1.1.1 closed by foreign host]
R2#
R2#
R2#telnet 10.1.1.1 80
Trying 10.1.1.1, 80 ... Open
GET
HTTP/1.1 400 Bad Request
Date: Fri, 01 Mar 2002 00:11:04 GMT
Server: cisco-IOS
Accept-Ranges: none

400 Bad Request

[Connection to 10.1.1.1 closed by foreign host]
R2#

line console

仕様説明

以下のコマンドでconsoleに対する同時接続数を制限する事ができます。

Router(config-line)# session-limit <num>

上記以外の設定は、line vtyとほぼ同じなので説明を省略します。

動作確認

上記以外の設定は、line vtyとほぼ同じなので説明を省略します。

line console 0
 transport output all
 transport preferred none
 session-limit 1
 vacant-message # this is vacant message for console #
 refuse-message # this is refuse message for console #
 login local
 lockable

R1>exit

 this is vacant message for console

User Access Verification

Username: cisco
Password:
R1>
R1>
R1>hoge
    ^
% Invalid input detected at '^' marker.

R1>
R1>show ip inter
R1>show ip interface E
R1>show ip interface Ethernet 0/0
Ethernet0/0 is up, line protocol is up
  Internet address is 192.168.12.1 0xFFFFFF00
  Broadcast address is 255.255.255.255
  Address determined by non-volatile memory
  MTU is 1500 bytes
  Helper address is not set

R1>lock
Password:
Again:

タイトルとURLをコピーしました