VPS利用にあたりやるべきこと(その2)(備忘録を兼ねて)
さて、前回(https://note.com/lovely_daphne590/n/nfe6be1e5b79f)の続き。
秘密鍵でパスワードなしにユーザーでSSH接続をするところまで書いた。
なお環境はUbuntu20.04である。
ユーザーにsudo権限を与える。一旦rootにスイッチする。
$ su -
Password: ←rootパスワードを入れ(入力文字列は表示されない)Enter。
# gpasswd -a note sudo
# exit ←ここはCtrl+Dキーでもよい。
$ exit
一旦ログアウトした。再度ログインすると、ユーザーがroot権限を持つ。
試しにここでOSのアップデートをかけてみよう。root権限が正しく付与されているかの確認にもなって一石二鳥だ。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
2行目は時間がかかるので待とう。
さて、ここからSSH接続の安全性を高める作業に入る。
rootにスイッチし、SSH接続の設定ファイルをコピーする。
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup ←念のため、元ファイルをバックアップ。
# vim /etc/ssh/sshd_config
編集するのは3カ所。
Port 22 を 56789(例)に書き換える
PermitRootLogin yes を no に書き換える
PasswordAuthentication yes を no に書き換える
vimの操作方法を念のため。
iで編集作業に入る。Escキーで編集モード終了、:wqで保存して終了、:q!で保存せずに終了。
sshd_config を書き換えて保存したら、sshdを再起動する。
# systemctl restart sshd
# systemctl status sshd ←sshdの状態を確認する。
ここで緑色の●が出てActive: active(running)になっていれば良し。
(もしDeadになっていれば、Tera TermではなくVPSのコンソール画面に入ってsshd_config_backupを使って修正する。)
次にSSHのファイヤーウォールの設定を変更する。
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
# vim /etc/firewalld/services/ssh.xml
<port protocol="tcp" port="22"/> を"56789"(例)に書き換え、保存する。
ポート開放をする。
# ufw status
(仮にufwがインストールされていなければ apt-get install ufwする)
恐らくStatus : inactiveとなっているので、
# ufw enable
yを打つ。
ポートを開放する。
# ufw allow 56789 ←先ほど書き換えたSSH接続のポート
# ufw allow 80 ←httpのポート
# ufw allow 443 ←httpsのポート
# ufw default deny ←その他のポートを閉じる。
変更を保存し、確認する。
# ufw reload
# ufw status
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ -----
56789 ALLOW IN Anywhere
56789 (v6) ALLOW IN Anywhere (v6)
80 ALLOW IN Anywhere
80 (v6) ALLOW IN Anywhere (v6)
443 ALLOW IN Anywhere
443(v6) ALLOW IN Anywhere (v6)
こうなっていれば成功。
結論をまとめると、
rootでのパスワード総当たり攻撃が防げた。
noteユーザーを作り、rootでのパスワードログインを禁止した。
パスワードログインでなく秘密鍵でのログインに変更した。
SSH接続のポートをデフォルトの22から56789(例)に変えた。
これでVPSの安全性は高まった。
追記というのも何だが、上記にはうまくいかない箇所がある。
というのも、Ubuntu20.04からはSSHポートの変更がうまくいかないことがあるのだ。
# cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
と打つと、「/usr/lib/firewalld/services/ssh.xmlは存在しない」と言われる。
その場合の回避方法は私は知らない。
なので、SSHポートの変更はあきらめて22のままにしている。
当然その場合は、/etc/ssh/sshd_configのPort番号も書き換えてはならない。