【CentOS7】のSSHポート番号を変更する

  • CentOS

SSHのポート番号は通常 22 番となっていますが、22番ポートを開けておくと海外から決め打ちでログイン試行されることも多く、セキュリティリスクを少しでも減らすためにポート番号を変更してみます。

SSH ポートは何番にすればよいか

ポートは 0~65535 まで存在していますが、大まかな区切りがあり

  • well-known port(0~1023)… 有名なサービス等で予約されているポート
  • registered port(1024~49151)… 登録済のポート

となっているため、ポート番号は 49152~65535 にするのが良いかもしれません。

SSHはデフォルトでは22番ポートで接続を待っている。攻撃者はポートスキャナを使ってホストがSSHサービスを実行しているかどうかを把握するが、(nmapを含め)たいていのポートスキャナではデフォルトでは1024以上のポート番号のスキャンは行なわれないため、SSH用のポートを1024以上の番号に変更しておくのが賢明だ。

SSHのセキュリティを高めるためのハウツー

ポート番号を変更する

ここでは例として65535番に変更してみます。サーバーへは SSH で接続しておきます。

sshd_configを書き換え

vi /etc/ssh/sshd_config

下記の行を書き換えます。

Port 22

最初は SSH デーモンが22番ポートで受け付けるようになっているので、コメントアウト(もしくは削除)して新しいポート番号を追加します。

#Port 22
Port 65535

これで SSH 接続を65535番で受け付けるようになります。

firewalld の設定をする

SSH での接続設定はできましたが、ファイアウォールの設定を変更しないと65535番で来た通信は拒否されてしまいます。65535番の通信を許可してあげます。

Firewalldは、CentOS 7から採用された「パケットフィルタリング」の仕組みです。パケットフィルタリングは、パケットの送受信において、あらかじめ指定したルールに基づいて通信の許可/拒否を制御する、セキュリティ対策の基礎手段です。

ハマる前に理解する「Firewalld」の設定方法、「iptables」との違い

firewalld の設定ファイルは下記に格納されています。

/usr/lib/firewalld/services/

たとえば firewalld の ssh に関する設定ファイルは、

/usr/lib/firewalld/services/ssh.xml

という xml 形式で存在していますが、基本的にこちらはデフォルトのまま上書きせず、後述する上書き用のファイルを作成します。

firewalld の設定を上書きするためのファイルを作る

firewalld の設定を上書きするには、下記のディレクトリに格納しておきます。

/etc/firewalld/services/

今回は ssh.xml を上書きしたいので、先ほどのデフォルト設定ファイルをコピーして上書き用ファイルを作成します。

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml

firewalld の設定を書き替える

コピーしたら、65535番ポートを許可してあげます。

vi /etc/firewalld/services/ssh.xml

下記の行を任意の port 番号に書き換え。今回は65535番にしてみます。

<port protocol="tcp" port="22"/>

<port protocol="tcp" port="65535"/>

sshd と firewalld を再起動

firewall-cmd --reload
systemctl restart sshd

こちらで設定完了です。念のため、接続を切る前に一度別のコンソールから port を指定してSSH接続できるか試してみましょう。

(間違いがあるとログインできなくなってしまう可能性もあるので)

ちなみに、SFTP 等で SSH でファイルを転送している場合はそちらのポートも変更されるので、接続情報の変更に注意してください。

参考