大まかな手順
以前書いた記事にて標準の22番ポートでのssh接続を確認後によりセキュアなサーバーとするために通信ポート変更を行う方法です。大きく分けて、下記3つの設定変更が必要となります。
・再起動
SElinuxの設定変更
SElinuxの設定コマンド
"semanage"を使用します。まずsshdの受信ポートの設定状態を下記コマンドで確認します。デフォルト設定から変更していなければ"tcp 22"のみ設定されているはずです。
$ sudo semanage port --list | grep ssh ssh_port_t tcp 22
sshd受信ポートとして設定したいポートをSElinuxに追加します。さらにsshdのポート番号として設定した後、設定状態を再確認します。
$ sudo semanage port --add --type ssh_port_t --proto tcp [ポート番号] $ sudo semanage port -m -t ssh_port_t -p tcp [ポート番号] $ sudo semanage port --list | grep ssh ssh_port_t tcp [ポート番号], 22
以上でSElinuxのポート変更は終了です。
Firewallの設定変更
firewallに許可ポートを追加
下記コマンドを使用してssh用ポートとして追加予定のポートをfirewall許可ポートに追加します。対象のゾーンは"public"としていますが、変更している場合は変更が必要です。
$sudo firewall-cmd --add-port=[ポート番号]/tcp --zone=public --permanent
次に念のため22番ポートの許可を取り消します。警告が出ますが、wirewallの再起動までは通信は維持されます。
$ sudo firewall-cmd --remove-port=22/tcp --zone=public --permanent Warning: NOT_ENABLED: 22:tcp success $ sudo firewall-cmd --list-ports --zone=public --permanent [ポート番号]/tcp
以上でfirewallの設定変更は終了です。再起動等を行うとssh通信は出来なくなるので注意が必要です。
sshdの設定変更
sshdの受付ポート変更
vimを使用してsshd_configを変更します。"/etc/ssh"には"ssh_config"もあるので注意。
$ sudo vim /etc/ssh/sshd_config
変更箇所はこちら
... # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port [ポート番号] #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: ...
以上で、設定変更は終了です。再起動すると22番ポートではなく、設定したポートしか接続出来なくなります。途中で設定ミスがあると接続出来なくなるので注意が必要です。