server-memo.net

SSH待ち受けポート変更

      2016/01/22

待ち受けポート変更の理由

外部(インターネット)に設置してあるサーバには、ブルートフォース等の攻撃が常に行われてきます。そこで、少しでも攻撃の頻度を減らすための方法として、SSHの待ち受けポート変更という方法があります。

通常 SSHの待ち受けポートは22番ポートとなっていますが、これを別のポートにすることで、外部からの攻撃を随分と減らすことが出来ます。

SSHポート変更方法

待ち受けポートの変更は非常に簡単です。

「/etc/ssh/sshd_config」に「Port xxxxx」といった設定を追加するだけです。xxxxxの部分は設定したいポート番号となります。

CentOSの場合の初期設定は、下記のように設定がコメントとなっているので、その下部にでも設定を追加すれば良いでしょう。

初期設定
#Port 22
 設定追加例

この設定例では、SSHの待ち受けポートは10022番に設定しています。

#Port 22
Prot 10022

※この待ち受け番号は特別な理由がない限り、ウェルノウン(well known)ポート(0-1023番)は使用しないほうが良いでしょう。

設定変更

設定ファイルのバックアップを行ってから、編集作業を行ってきます。

# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_yyyymmdd
# vi /etc/ssh/sshd_config
設定内容確認

「diff」コマンドを使用して、設定変更箇所の確認を行います。

# diff /etc/ssh/sshd_config /etc/ssh/sshd_config_yyyymmdd
18d17
< Port 10022

「Port 10022」という部分が追加されていることがわかります。

設定反映

sshdに設定を反映させるには、「service sshd reload」コマンド使います。設定が間違っていた場合等など、SSHで接続することが出来なくなってしまうことがあるので、コンソールで接続できる環境を用意しておくか、別にもう1セッションSSH接続をしておく等してから、設定の反映を行ってください。

# service sshd reload

 動作確認

実際にSSHで接続をして、設定が反映させれているか確認します。

22番ポートで接続

22番ポートで接続してみて、接続が出来ない事確認します。

下記は動作確認の為に、設定変更をしたサーバ上から「user」というユーザで接続を行った際の作業ログとなります。

ssh user@192.168.1.100
ssh: connect to host 192.168.1.100 port 22: Connection refused

「Connection refused」と表示されて、接続出来ないことが確認できます。

10022番ポートで接続

次に、10022番ポートで接続してみます。

$ ssh -p 10022 user@192.168.1.100
user@192.168.1.100's password: 
Last login: Wed Dec  3 13:41:09 2014 from localhost

無事、接続が出来ることが確認できました。

接続出来ない場合

「/etc/ssh/sshd_config」の設定に間違いが無いのに接続が出来ない場合についてですが、原因としては以下のことが考えられます。

  • サーバとクライアントの間にファイアウォールがある
  • サーバ上でファイアウォールが動作している

どちらの場合も、ファイアウォールのポリシーを変更する必要があります。

切り分けとしては、設定変更を行ったSSHのサーバ上からは自分に宛てにSSH接続出来るかどうか確認してみてください。

サーバ上からは接続できるが、クライアントからは接続することができない場合は、サーバとクライアント間の問題のことが多いので、途中ファイアウォールがあるかどうか確認してみてください。

サーバとクライアントの間にファイアウォールがある場合は、ファイアウォールの管理者にポリシーの変更を依頼して対処してもらってください。(セキュリティ強化のためという理由を説明してもダメな場合はあきらめるしかないですが・・・)

サーバ上からも接続できない場合は、サーバ上で動作しているファイアウォールの影響が考えられるので、サーバ上でファイアウォールのポリシーを確認してみて下さい。

 - SSH