さくらのVPSで Ruby on Rails のアプリを公開 第6回

Ruby on Rails

こんにちは。じじグラマーのカン太です。
毎週毎週心折れそうになりながら、週末プログラマーをしています。

Ruby on Railsで開発した業務系のアプリをさくらのVPSサーバーで公開したので、その手順を紹介する企画の第6弾です。

前回で、鍵認証による接続が可能になりました。
今回は、「root」ユーザでパスワードを使ってのログインをできなくします。

前回の内容はこちらです。

では早速はじめましょう。

SSH接続設定とSSH接続ポート番号の変更

作業用一般ユーザの鍵認証を使った接続が出来るようになったので、スーパーユーザーの「root」では直接ログインできないようにします。ついでに、デフォルトで設定されているSSH接続用のポート番号も変えてしまいましょう。

SSH関連の設定は、「/etc/ssh/sshd_config」に記述されています。
スーパーユーザー権限(sudo)で編集します。
まずはバックアップを取りましょう。

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.org

パスワードを聞いてきますので入力してください。

正常終了すれば、バックアップ完了です。

SSH接続用ポート番号の変更

デフォルトのままだと危険ですので、SSH接続用ポート番号を変更します。

$ sudo vi /etc/ssh/sshd_config

エディタが開きますので、「port」が記述してあるところを探してください。

#Port 22
#AddressFamily any
ListenAddress 0.0.0.0

番号は使用されていないポート(1025~49151)から任意の数値を設定します。
例では「2022」にしています。(コメントも外します)

Port 2022

「root」ユーザでのログインを無効にする

続いて、「root」ユーザでのログインを無効にします。
portを記述した少し下に、「 PermitRootLogin 」がありますので、「yes」を「no」に変更します。

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes

#LoginGraceTime 2m
PermitRootLogin no
#StrictModes yes

パスワード認証を無効にする

続いてパスワード認証を無効にします。

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no

編集が終われば、変更を保存して終了してください。

SSH接続の動作確認

変更を反映させるために再読み込みをおこないます。

$ sudo systemctl restart sshd

ステータスを確認します。

$ sudo systemctl status sshd

● sshd.service - OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
Active: active (running) since 月 2021-09-09 16:54:45 JST; 24s ago
 Docs: man:sshd(8)
       man:sshd_config(5)
Main PID: 26151 (sshd)
CGroup: /system.slice/sshd.service
       mq26151 /usr/sbin/sshd -D

「Active: active」になっていれば完了です。

firewalld(ファイアウォール)の設定

SSH接続ポート番号を変更したので、firewalldの設定も変更しておく必要があります。

$ sudo vi /usr/lib/firewalld/services/ssh.xml

編集で設定ファイルを開いて

<port protocol="tcp" port="2022"/>

ポート番号を変更します。

$ sudo firewall-cmd --reload
success

再読み込みをして、「success」と出れば完了です。

接続できなくなったときは

再読み込みをして、下記のようにエラーになることがあります。

$ sudo firewall-cmd --reload
FirewalID is not running

さくらのVPS側で「パケットフィルタ」が設定されていると(デフォルトで設定)CentOS7のデフォルト設定からファイアウォールの起動が外された状態になるようです。
パケットフィルタの設定でSSHのポートを変更できないため、今回はパケットフィルタ自体を無効にします。

さくらのVPSのサーバー設定画面の「グローバルネットワーク」⇒「パケットフィルタ設定」画面へ遷移し、パケットフィルタを「無効」にしてください。

設定が終わったら「Tera Term」に戻り、ファイアーウォールを起動します。

$ sudo systemctl start firewalld.service

エラーメッセージが出なければOKです。

ついでに、 ファイアーウォール の自動起動にしてしまいましょう。

$sudo systemctl enable firewalld.service

新しいポートでの接続確認

「Tera Term」を再起動し、ポートを変更した番号に変更して接続してください。
接続できれば、今回の作業は終了です。

まとめ

いかがでしたでしょうか。今回はいろいろと設定しました。内容はよくわからなくても、設定できればよしとしましょう。「vi エディタ」の使い方とは端折りましたが、親切なサイトもたくさんありますので調べてみてください。僕も毎回調べています。

次回は、Webサーバーをインストールする予定です。

コメント