デフォルトから変更済みだったSSHのポートを、再変更したときのメモ。
背景
デフォルトから変更して使っていたポートに、あやしいアクセスが毎日記録されるようになってきた。次のようなログが残る。
sshd[78450]: banner exchange: Connection from 83.97.73.245 port 50134: invalid format
どう見てもBOT。「invalid format」とあるあたり、SSHではない別のものを期待してスキャンしているものと思われる。
デフォルトのポート番号を使っていたときに比べれば、比較にならないほどアクセス数は少ないものの、うざいことに代わりはない。再びポート番号を変更してみることにした。
環境
- サーバー側: FreeBSD 14.1
- クライアント側: macOS Sonoma 14.5
使用するポート番号の選択
なるべく狙われないポートがいい。ということで、使われていないポート番号を探す。それには、既に割り当てられているポートを避ければよい。割り当て済みのポートは、WIkipediaに記載されている。
ただし、正式に割り当てられていないポートの中にも、実際にはそれなりに使われていることがある。これを調べるには、 speedguide.net の Ports Database が便利だった。
検索フォームに Unassigned と入力して search ボタンをクリックすれば、未割り当てのポートが一覧表示される。表示されたポート番号をクリックして、利用状況を判断して選択すればよい。今回は、12323 を使用するものとして説明する。
サーバー側の設定
ファイアウォールの設定
使用するポートをファイアウォールに登録。
/etc/rc.confを編集して、firewall_myservices の定義に 12323/tcp を追加する。
firewall_myservices="12323/tcp http/tcp https/tcp smtp/tcp smtps/tcp submission/tcp submissions/tcp imaps/tcp"
ipfwを再起動。
# sudo service ipfw restart
sshdの設定
/etc/ssh/sshd_configに次の行を追加。
Port 12323
sshdを再起動。
# sudo service sshd restart
クライアント側の設定
sshの設定
~/.ssh/config に次の設定を追加。
Host server.domain.jp
Port 12323
ServerAliveInterval 15
ServerAliveCountMax 15
TCPKeepAlive yes
ポートの変更に必要なのはPortのディレクティブのみ。それ以外は、時間切れで切断されないようにするための設定。