CentOSのsshポート番号の変更方法

IT

久しぶりにCentOSを使おうとしたところ、忘れていたので備忘として紹介します。

SELinuxの設定変更

SELinuxの状態確認をします。

$sudo getenforce
Enforcing

まずはSemanageコマンドをインストールします。

$sudo yum install policycoreutils-python

SELinuxのsshポートの設定状況を確認します。

$ sudo semanage port --list | grep ssh
ssh_port_t                     tcp      22

SELinuxの設定にポートを追加します。今回は2222に設定することとします。

$ sudo semanage port --add --type ssh_port_t --proto tcp 2222 

結果を確認します。

$ sudo semanage port --list | grep ssh
ssh_port_t                     tcp      2222, 22

sshdサービスのポート変更

まずはsshdサービスのコンフィグファイルをバックアップ。

$sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.orignal

次にsshd_configファイルの以下の行を修正します。

変更前:#Port 22
変更後:Port 変更したい任意のポート番号(今回は2222)

その後、sshdのサービスを再起動します。

$sudo systemctl restart sshd

上記のコマンドを実行した際に以下のエラーが発生する場合があります。これはSELinuxの設定によるものなので上述のSELinuxの設定ができていないことによるものですので、再度設定を見直してください。

Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.servic
e" and "journalctl -xe" for details.

OSのファイアウォール(firewalld)設定を変更する。

まずは設定ファイルをコピーします。今回はssh.xmlをssh-2222.xmlというファイル名で保存します。firewalldのデフォルト設定のファイル位置と変更する場合のファイル位置が異なるので注意です。

・ /usr/lib/firewalld/ はシステムデフォルト設定の保存場所
・ /etc/firewalld/ はユーザーが設定変更した場合の設定ファイルの保存場所

$ sudo cp -p /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-22
22.xml 

コピーしたssh-2222.xmlの以下の箇所を変更します。

変更前:<port protocol=”tcp” port=”22″/>
変更後:<port protocol=”tcp” port=”2222″/>

次に既存のsshのサービスを削除します。今回はもともとEnableになっていなかったのでWarningが出力されました。

$ sudo firewall-cmd --permanent --remove-service=ssh
Warning: NOT_ENABLED: ssh
success

新しくssh-2222をサービスとして追加します。

$ sudo firewall-cmd --permanent --add-service=ssh-2222
success

最後にfirewalldを再起動します。

$sudo firewall-cmd --reload

設定については以上です。

GCEでのセットアップはGCPのファイアウォール設定等も必要ですが今回はCentOSのポート変更設定手順の備忘が趣旨なので割愛します。こちらの記事でGCEのsshポート番号変更について記載しています。

コメント