VPS の使用、運営、およびメンテナンスは専門知識が必要です。VPS のセキュリティを確保するためには、細部にわたって対策を行う必要があります。初心者の場合、VPS を購入した後、以下の設定を行うことをおすすめします。これにより、VPS のセキュリティを最大限に保護することができます。
1. root パスワードの変更と root ログインの制限#
1.1 root パスワードの変更#
SSH ツール(例:putty、Xshell など)を使用して、VPS プロバイダーが提供する IP、ポート(22)、アカウント(root)、およびパスワードを入力して VPS に接続します。IP がブロックされていることが確認された場合、プロバイダーに連絡して使用可能な IP に変更することができます(通常、1 回の IP 変更は無料で行えますが、各プロバイダーの規定によります)。
root で VPS にログインした後、次のコマンドを入力してパスワードを変更します:passwd。変更するパスワードを入力します(入力したパスワードは表示されません)。
1.2 VPS ログインアカウントの変更#
VPS ログインアカウントを変更し、root アカウントのログインを制限し、通常のアカウントで VPS に接続します(注意して操作してください)。この操作の理由は、root アカウントがスキャンやブルートフォース攻撃の対象になりやすいため、VPS ログインアカウントの変更により攻撃の難易度を上げることです。具体的な手順は以下の通りです:
1.2.1 root で通常のユーザーを作成します:sudo adduser (を設定するユーザー名に置き換えてください);
1.2.2 新しいユーザー(で指定したユーザー)を sudo グループに追加して管理者権限を取得します:sudo usermod -aG sudo
1.2.3 新しいユーザー名でのログインが成功するかテストします。
方法 1:コマンド su - を入力して新しいユーザーの環境に切り替えます。この時、パスワード(先ほど変更した root のパスワード)を入力する必要があります。新しいユーザーでログインした後、sudo コマンドを入力すると、新しいユーザーの管理者環境に入ることができます。
方法 2:1.2.2 の手順で root ログインの設定を行った後、root アカウントの SSH 接続を終了し、新しいユーザー名と root のパスワードで再度ログインします。
1.3 Root ログインの無効化#
新しいユーザー名で VPS に接続した後、次のコマンドを入力します:sudo nano /etc/ssh/sshd_config で SSH 設定ファイルを編集します。
"PermitRootLogin" の項目を "PermitRootLogin no" に変更し、ファイルを保存して終了します(ctrl+x で保存して終了します)。
SSH サービスを再起動します:sudo systemctl restart ssh。再起動後、VPS は root ユーザー名でのログインができなくなります。
1.4 SSH のブルートフォース攻撃対策#
1.4.1 シェルスクリプトの作成
まず、以下のコマンドを入力して、SSH のブルートフォース攻撃を防ぐためのスクリプトファイルにアクセスします。
vi /usr/local/bin/secure_ssh.sh
次に、スクリプトファイルに以下の内容を書き込みます:
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.txt
for i in `cat /usr/local/bin/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 7 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
1.4.2 タスクの作成
まず、crontab -e を入力してタスクの編集環境に入り、以下の内容をファイルに追加します(SSH のブルートフォース攻撃を防ぐスクリプトを 3 分ごとに実行するタスク):
*/3 * * * * sh /usr/local/bin/secure_ssh.sh
2. システムの更新と追加・削除の実行#
2.1 システムと必要な依存関係の更新、不要なインストールパッケージの削除#
Ubuntu/Debian の場合は、次のコマンドを入力します:
apt update -y && apt full-upgrade -y && apt autoremove -y && apt autoclean -y
CentOS/RHEL の場合は、次のコマンドを入力します:
yum update -y && yum upgrade -y && yum autoremove -y && yum clean all
2.2 ゴミの一括削除#
Ubuntu/Debian の場合は、次のコマンドを入力します:
sudo apt autoremove --purge -y
sudo apt clean -y
sudo apt autoclean -y
sudo apt remove --purge $(dpkg -l | awk '/^rc/ {print $2}') -y
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
sudo journalctl --vacuum-size=50M
sudo apt remove --purge $(dpkg -l | awk '/^ii linux-(image|headers)- +/{print $2}' | grep -v $(uname -r | sed 's/-.*//') | xargs) -y
CentOS の場合は、次のコマンドを入力します:
sudo yum autoremove
sudo yum clean all
sudo journalctl --rotate
sudo journalctl --vacuum-time=1s
sudo journalctl --vacuum-size=50M
sudo yum remove $(rpm -qa kernel | grep -v $(uname -r))
3. Virtio-Balloon の無効化、VPS プロバイダーによるパフォーマンスへの影響を防止#
Virtio-Balloon は、VPS の仮想メモリの動的割り当てプラグインとして理解できますが、VPS プロバイダーが超過販売を行った場合、他のユーザーの VPS のパフォーマンスに影響を与える可能性があります。そのため、このプラグインが存在するかどうかを確認し、存在する場合は無効化することをおすすめします。
3.1 コマンドのクエリ:#
lsmod | grep virtio_balloon
私の Racknerd では有効になっています。以下の画像を参照してください:
Racknerd Virtio Ballon |
3.2 無効化方法は 2 つあります:#
方法 1:Virtio-Balloon のアンインストール#
Racknerd の場合、Virtio-Balloon はシステムに組み込まれていないため、一時的に rmmod virtio_balloon コマンドでアンインストールすることができます。永続的に適用するには、関連するシステムルールを変更する必要があります:
vi /etc/modprobe.d/blacklist.conf
以下の内容を書き込んで保存し、終了します:
blacklist virtio_balloon
システム情報を更新します:
update-initramfs -u
方法 1 の参考文献:禁用 Virtio-Balloon。
方法 2:Grub の設定を変更して Virtio-Balloon を無効化する#
Cloudcone など、virtio_balloon が組み込まれた VPS の場合、lsmod | grep virtio_balloon コマンドでは検出されませんが、rmmod virtio_balloon コマンドを入力すると、virtio_balloon が組み込まれていることが表示されます。この場合、virtio_balloon はモジュールとしてロードされるのではなく、カーネルに直接コンパイルされています。そのため、Grub の設定を変更する必要があります。
-
Grub の設定ファイルにアクセスします:
sudo nano /etc/default/grub
-
GRUB_CMDLINE_LINUX="virtio_balloon=0" というコマンドラインを追加します。または、既存の GRUB_CMDLINE_LINUX に追加するパラメータの前に virtio_balloon=0 を挿入し、スペースを追加します。
-
Ctrl+X で保存して終了し、sudo update-grub コマンドを入力して設定を更新し、sudo reboot コマンドを入力してシステムを再起動します。
上記の設定を行うことで、VPS のセキュリティが相対的に向上します。