なぜSSH待ち受けポート番号を変更する?

SSHサーバは、デフォルトではTCPポート22番で接続を待ち受けます。デフォルトのTCP22番ポートをそのまま利用していると、悪意を持つユーザが不正アクセスを試みようとするリスクが高くなります。もちろん、認証するので簡単には不正アクセスされることはありません。しかし、不正アクセスを試みられると利用可能なVTYラインが無駄に消費されてしまうことも考えられます。そこで、セキュリティ対策として、SSHの待ち受けポート番号をデフォルトの22番から変更します。

Cisco IOS SSH待ち受けポート番号の変更

Cisco IOSでSSH待ち受けポート番号を変更するための手順は次の通りです。

  1. 通常のSSHを受け付けるための設定を行う
  2. VTYラインをrotaryグループにグループ化する
  3. SSH待ち受けポート番号を指定してrotaryグループに関連付ける
  4. 変更したポート番号のみを許可するACLを適用する
以降のコマンドの解説では、VTYラインのライン番号は、デフォルトの0から4として考えます。

通常のSSHを受け付けるための設定を行う

通常のTCPポート22番でSSHを待ち受ける設定を行います。そのための設定コマンドは以下の通りです。

通常のSSH設定(config)#ip hostname <hostname>
(config)#ip domain-name <domain-name>
(config)#username <user> password <cisco>
(config)#crypto key generate rsa
(config)#line vty 0 4
(config-line)#transport input ssh
(config-line)#login local

<hostname> : ホスト名
<domain-name> : ドメイン名
<user> : 認証に利用するユーザ名
<password> : 認証に利用するユーザ名に対するパスワード

crypto key generate rsaコマンドを入力したあとは、生成する鍵のビット長を指定してください。

VTYラインをrotaryグループにグループ化する

rotaryグループによって、VTYラインをグループ化できます。SSHの待ち受けポート番号を受け付けるVTYラインをrotaryグループでグループ化します。ラインコンフィグレーションモードで次のコマンドを利用します。

rotaryグループの設定(config)#line vty 0 4
(config-line)#rotary <group-number>

<group-number> : rotaryグループ番号

SSH待ち受けポート番号を指定してrotaryグループに関連付ける

SSHの待ち受けポート番号を指定してrotaryグループに関連付けます。グローバルコンフィグレーションモードで次のコマンドを利用します。

SSH待ち受けポート番号を指定してrotaryグループに関連付ける(config)#ip ssh port <port-number> rotary <rotary-group-number>

<port-number> : SSH待ち受けポート番号
<rotary-group-number> : 関連付けるrotaryグループ番号

指定したポート番号のSSHアクセスはrotaryグループに関連付けたVTYラインで受け付けることになります。

変更したポート番号のみを許可するACLを適用する

ここまでの設定だけでは、デフォルトのTCPポート22番でのSSHアクセスも可能です。VTYラインにACLを適用して変更したポート番号のSSHアクセスのみを受け付けるようにします。

変更したポート番号のみを許可するACLを適用する(config)#access-list <ACL-num> permit tcp any any eq <port-number>
(config)#line vty 0 4
(config-line)#access-class <ACL-num> in

<ACL-num> : 拡張ACL番号。1~199
<port-number> : 指定したSSH待ち受けポート番号

Cisco IOS SSH待ち受けポート番号変更の設定例

以下のネットワーク構成のR1で、SSH待ち受けポート番号を2021に変更します。

図 SSH待ち受けポート番号変更 ネットワーク構成
図 SSH待ち受けポート番号変更 ネットワーク構成

Step1:通常のSSHを受け付けるための設定を行う

R1で通常のSSHを受け付ける設定を行います。以下の表のパラメータを利用します。

ホスト名R1
ドメイン名n-study.com
鍵のビット長1024
認証用のユーザ名/パスワードcisco/cisco

R1

hostname R1
ip domain-name n-study.com
!
username cisco password cisco
!
crypto key generate rsa
!
line vty 0 4
 login local
 transport input ssh

crypto key generate rsaコマンドを入力したら、以下のような表示になります。鍵のビット長を指定します。

R1(config)#crypto key generate rsa
The name for the keys will be: R1.n-study.com
Choose the size of the key modulus in the range of 360 to 2048 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]

Step2:VTYラインをrotaryグループにグループ化する

デフォルトのVTYライン0から4をrotaryグループ1にグループ化します。

R1

line vty 0 4
 rotary 1

Step3:SSH待ち受けポート番号を指定してrotaryグループに関連付ける

R1のSSH待ち受けポート番号として2021を指定して、rotaryグループ1に関連付けます。

R1

ip ssh port 2021 rotary 1

Step4:変更したポート番号のみを許可するACLを適用する

TCPポート2021のみSSHアクセスができるように、VTYラインにACLを適用します。

R1

access-list 100 permit tcp any any eq 2021
!
line vty 0 4
 access-class 100 in

Step5:R1へのSSHアクセスを確認する

R2からR1へのSSHアクセスを確認します。デフォルトのTCPポート22では、SSHでアクセスできません。TCPポート2021とするとR2からR1へSSHでログインできることがわかります。

R2

R2#ssh -l cisco 192.168.12.1
% Connection refused by remote host

R2#ssh -l cisco -p 2021 192.168.12.1

Password:

R1>

Ciscoのキホン