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 でファイルを転送している場合はそちらのポートも変更されるので、接続情報の変更に注意してください。