なぜ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

Copy
  1. hostname R1
  2. ip domain-name n-study.com
  3. !
  4. username cisco password cisco
  5. !
  6. crypto key generate rsa
  7. !
  8. line vty 0 4
  9. login local
  10. transport input ssh

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

Copy
  1. R1(config)#crypto key generate rsa
  2. The name for the keys will be: R1.n-study.com
  3. Choose the size of the key modulus in the range of 360 to 2048 for your
  4. General Purpose Keys. Choosing a key modulus greater than 512 may take
  5. a few minutes.
  6.  
  7. How many bits in the modulus [512]: 1024
  8. % Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
  9.  

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

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

R1

Copy
  1. line vty 0 4
  2. rotary 1

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

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

R1

Copy
  1. ip ssh port 2021 rotary 1

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

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

R1

Copy
  1. access-list 100 permit tcp any any eq 2021
  2. !
  3. line vty 0 4
  4. access-class 100 in

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

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

R2

Copy
  1. R2#ssh -l cisco 192.168.12.1
  2. % Connection refused by remote host
  3.  
  4. R2#ssh -l cisco -p 2021 192.168.12.1
  5.  
  6. Password:
  7.  
  8. R1>

Ciscoのキホン