格安VPS Contaboを契約して、サーバー環境を整える
2024-09-30
Post Image

初めて、Contaboを借りサーバーを環境を整えるまでの手順を記録します。 VPSサーバーの最低限のセキュリティ対策についても記録するので、お役に立てば幸いです。

Contabo

2003年、ドイツに設立された格安VPSを提供する会社。

国内で最安と名高い、WebARENA Indigo(キャンペーン時)よりも同等スペックで比較すると少し安い。とはいえ、WebARENA Indigoは低スペックマシンで良ければ、かなり安くVPS構築できると思います。なにより日本語ですし。

VPSの立ち上げ

アカウントを作成し、お好きなスペックのVPSを契約します。(割愛) Contaboのコントロールパネルから、以下のように進みます。

  • control panel > VPS control

ここで、Serverの項目からIP addressをメモしておきます。 クライアントPCにて、ターミナルを起動し、ssh接続をする。

ssh root@<IP address>
> Are you sure you want to continue connecting?

となるので、yesとして、VPS契約時のroot passwordを入力します。

のようにクライアントPCのターミナルに出力されれば、ホストPCへの接続成功です。

最低限のセキュリティ対策

rootでのSSH接続とパスワードによるSSH接続の無効化

このままでは、rootに対して手当たり次第にパスワードを試されれば、不正ログインされてしまいます。
そこで、最低限のセキュリティ対策を施します。

一般ユーザーの作成

ユーザーを作成する。

root@*******:~# sudo useradd -m -s /usr/bin/bash <user name>
root@*******:~# sudo passwd <user name>
New password: 
Retype new password: 
passwd: password updated successfully

sudoグループに新規ユーザーを追加

sudo adduser <user name> sudo
cat /etc/group | grep sudo

クライアント側での鍵ペア(公開鍵&秘密鍵)の生成

ホストPCに公開鍵を格納するために、<.ssh>ディレクトリを作成します。

ssh <user name>@<IP address>
mkdir ~/.ssh
exit

クライアントPCで鍵ペア(公開鍵&秘密鍵)の生成します。

ssh-keygen -t ed25519 -C '<コメント>' -f ./<filename>

以下のパスワード設定を求められます。パスワードなしでも設定できます。

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

秘密鍵(filename)、公開鍵(filename.pub)が作成されるので、クライアントPCからホストPCへ公開鍵をコピーします。

scp ./<filename>.pub <user name>@<IP address>:/home/<user name>/.ssh/<filename>.pub

ホストPCに入り、authorized_keys ファイルを作成し、公開鍵を付加し、権限を変更します。

touch ~/.ssh/authorized_keys
cat ~/.ssh/<filename>.pub > ~/.ssh/authorized_keys
sudo chmod 600 ~/.ssh/authorized_keys

ファイアーフォールの設定

現状、SSH接続のポートはデフォルトの22が使われています。 それでは、攻撃の対象になりやすいので、SSH接続のポートの変更と、ファイアーフォールの設定を行います。

sudo ufw status
> Status: inactive

初期設定では、ファイアーフォールの設定は行われていません。
ufwを起動します。

sudo ufw enable
sudo ufw status verbose

ポートを開けます。
この際に、デフォルトの22を開放しないと、万一時間制限で接続が切れた際に、再接続できなくなりますので、念のため開放し、後ほど閉じます。

sudo ufw allow 22  
sudo ufw allow <ssh接続用のポート番号>  

ちなみに任意のIPからのみの接続に制限したい場合は以下です。

sudo ufw allow from XXX.YYY.ZZZ.ZZZ to any port <> proto tcp

ufwが起動中であるため、ufwのリロードします。

sudo ufw reload

sshの設定ファイル変更

sudo vi /etc/ssh/sshd_config
#ポート番号の変更
- #Port 22
+ Port <ssh接続用のポート番号>
#root でのログインの抑止
- #PermitRootLogin prohibit-password ←この記述はないかもしれません。
- PermitRootLogin yes
+ PermitRootLogin no
# パスワード認証の抑止
# PasswordAuthentication yes
PasswordAuthentication no
#空のパスワードの抑止 
- #PermitEmptyPasswords no
+ PermitEmptyPasswords no
#最大の認証の試行回数.多数の認証を試みることを防ぐ. 
- #MaxAuthTries 6
+ MaxAuthTries 6
#sshプロトコルバージョン2のみを有効
+ Protocol 2

SSH接続の設定を反映させてログアウトします。

sudo systemctl restart sshd.service
exit

ファイアーフォールの設定(ポート22の閉鎖)

sudo ufw delete allow 22

最低限のセキュリティ対策は以上です。お疲れ様でした。

備忘録

不正ログインされていないか確かめる方法

ログイン成功のログを確認する。

sudo cat /var/log/auth* | grep "sshd" | grep "Accepted"

ログイン失敗のログを確認する。

cat /var/log/auth* | grep "sshd" | grep "Failed password"
格安VPS Contaboを契約して、サーバー環境を整える
https://notes.midnightstops.com/posts/7/
作者
Author
公開日
2024-09-30