環境構築からWEBアプリ開発・スマホアプリ開発まで。ときには動画制作やゲームも。

supilog
すぴろぐ

SSH接続のポート番号を変更してリスク軽減

SSH接続のポート番号を変更してリスク軽減

SSH接続のデフォルトのポート番号は22番。これは広く一般的に知られているものです。

サーバーを中長期的に管理した経験のある方であれば、お分かりかと思いますが、22番ポートへの接続を試みる不正アクセスの類は、わりと頻繁に発生します。そういう意味で標的となるのを避ける目的でポート番号を変更することが可能です。

※手順を実行する前に「注意」までご一読くださいmm

環境

Rocky Linux 8.4

手順

今回は、ポート番号を「22」から「51234」に変更してみましょう。

# ポート番号変更
$ vi /etc/ssh/sshd_config

<下記を変更する>
#Port 22
↓
Port 51234

再起動します。

# 再起動
systemctl restart sshd

リモートサーバーからログアウトし、再度接続してみると接続できないことがわかると思います。新しいポート番号を指定して接続してあげてください。

注意

この作業を行うと、SSH接続のポートが22番から変更されます。リモート接続しているターミナルも切断される場合もあります。firewalldなどが動作していた場合に、新規ポート番号が許可されていないと、サーバーから締め出されたあげく、二度と接続できなくなるなんて事も・・・。

参考までに、firewalldにおけるポート開放手順を記載しておきます。

# 現在追加されているサービスの確認
$ firewall-cmd --list-services --zone=public --permanent

# 独自サービス作成
$ firewall-cmd --permanent --new-service ssh51234
$ firewall-cmd --permanent --service=ssh51234 --set-description=SSH
$ firewall-cmd --permanent --service=ssh51234 --set-short=SSH
$ firewall-cmd --permanent --service=ssh51234 --add-port=51234/tcp

$ cat /etc/firewalld/services/ssh51234.xml
-----
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>SSH</description>
  <port port="51234" protocol="tcp"/>
</service>
-----

# サービス追加
$ firewall-cmd --add-service=ssh51234 --zone=public --permanent
$ firewall-cmd --reload

# 現在追加されているサービスの確認
$ firewall-cmd --list-services --zone=public --permanent
→「ssh51234」が追加されていること

ポート番号変更は必ずやった方がよい?

最後に、この質問にはNOと答えておきます。

例えばポート番号を50000番に変更したとしても、50000番に攻撃されたら同じことなので、万全な対策とは言えません。22番ポートに対してブルートフォースをしかけるようなBOTも存在しますので、無意味ではありませんが、あくまでもリスクの軽減です。

システムの安全性の設計は、総合的に他の仕組みと合わせて考える必要があります。SSH接続の例でいれば、公開鍵認証とか、VPN接続経由にするとか、AWSのセキュリティグループ設定とか、検討すべきことは沢山あるので、どのように設計するのかが大事です。

小さなメリットとしては、SSHポートへの不正アクセスがなくなる事で、接続失敗のログが大量に残ったりするのがなくなったり、微量ながら負荷軽減にもなりますので、筆者は個人の環境については全てポート番号を変更していますw