こんにちは。じじグラマーのカン太です。
毎週毎週心折れそうになりながら、週末プログラマーをしています。
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サーバーをインストールする予定です。
コメント