初めて、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"