はじめに
この記事では ConoHa VPS を立ち上げてすぐにやるべきセキュリティ対策について解説します。
以下の 4 点について解説します。
- 一般ユーザの作成
- SSH 接続の設定
- root ユーザーの SSH 接続禁止
- ポート番号の変更
- ファイアウォールの設定
一般ユーザの作成
一般ユーザを作成します。
ここではユーザ名を [ユーザ名] とします。
お好きな名前に変更してください。
adduser [ユーザ名]
で作成します。
この後の SSH サーバの設定で root ユーザでの SSH 接続を禁止します。
そのため SSH 接続用のユーザを作成し sudo 権限もあわせて付与しておきます。
gpasswd -a [ユーザ名] sudo
SSH 接続の設定
root ディレクトリから .ssh 以下をコピーする
cp -r /root/.ssh /home/[ユーザ名]/.ssh
所有者を変更する.
chown -R [ユーザ名]:[ユーザ名] /home/[ユーザ名]/.ssh
権限を変更する.
chmod 700 /home/[ユーザ名]/.ssh
chmod 600 /home/[ユーザ名]/.ssh/authorized_keys
これで [ユーザ名] でログインできるようになります。
root ユーザーの SSH 接続禁止
root でログインできなくなるので、事前に先ほど作成した一般ユーザでログインできるかどうかを確かめてから実行してください。
初期設定では root ユーザでの SSH 接続が許可されています。
しかし root ユーザでログインされてしまうと一発でシステムが乗っ取られてしまいます。
なので root ユーザでは SSH 接続出来ないように設定を変更しておきます。
SSH サーバの設定を行うファイルは
/etc/ssh/sshd_config
です。なので、設定ファイルのバックアップを行ってから作業します。
sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config_`date +%Y%m%d-%H%M%S`
そして、
/etc/ssh/sshd_config
を編集します。
編集は vi でも nano でも VSCode などのエディタでも問題ありません。
編集する箇所は
PermitRootLogin yes # 変更前
PermitRootLogin no # 変更後
です。
ポート番号の変更
次に ポート番号 22 から別の番号に変更します。
本記事では変更後のポート番号を 12345 とします。
先ほどと同様に
/etc/ssh/sshd_config
を編集します。
Port 22
とある部分に対して
Port 12345
# Port 22 不安であれば 12345 でログインできたことを確認してからコメントアウト
22 ポートでログインできなくなります。
なので、必ず以下のファイアウォールの設定をしてください。
ファイアウォールの設定
まず、現在のファイアウォールの状態を確認します。
ufw status numbered
22 番ポートが解放されていると思います。
このままだとファイアウォールによって 12345 番ポートでログインできません。
12345 番ポートを開きます。
ufw allow 12345/tcp
次に、22 番ポートを閉じます。
不安であれば 12345 でログインできたことを確認してから実行してください。
以下の手順で 22 番ポートを閉じます。
ufw status numbered
で 22 番ポートの番号を確認。
設定されていた OpenSSH のルールの番号を削除します。
1 番の場合
ufw delete 1
IPv4 と IPv6 の両方が表示されている場合、同様の手順で IPv6 用のルールも削除してください。
このサーバを web サーバとして使用する場合は、このタイミングで 80、443 のポート番号を解放してもいいと思います。
ufw allow 80/tcp
ufw allow 443/tcp
最後に
ufw status numbered
と実行して
ufw status numbered
Status: active
To Action From
-- ------ ----
[ 1] 12345/tcp ALLOW IN Anywhere
[ 2] 80/tcp ALLOW IN Anywhere
[ 3] 443/tcp ALLOW IN Anywhere
[ 4] 12345/tcp (v6) ALLOW IN Anywhere (v6)
[ 5] 80/tcp (v6) ALLOW IN Anywhere (v6)
[ 6] 443/tcp (v6) ALLOW IN Anywhere (v6)
となっていれば OK です。
設定が完了したら SSH サーバを再起動してください。
systemctl restart sshd
設定が完了したらファイアウォールも再起動してください。
sudo ufw reload
ここまでの作業が完了したらサーバの再起動を行います。
sudo reboot
おわりに
最後に一般ユーザでログインすることを確認できれば OK です。
またパスワードログインが不可能なこと。
root でログインが不可能なこと。
も確認できれば尚いいと思います。
以上参考になれば嬉しいです。