🏢

ConohaのVPSでKaliLinuxを使う

2024/04/13に公開

動機

ぼく「GMOインターネットの株式をNISAで100株買ったけど、値下がりしてもう数年くらい塩漬け状態。」
ぼく「悔しいから株主優待を使ってVPS使い倒そう。」

予算構成

VPS構成

  • 4,027 円 (6ヶ月分) まとめトク
    • CPU: 3Core
    • メモリ: 2GB
    • SSD: 100GB
    • どのOSでも良いので、一旦この構成でLinuxサーバを立てておく。

KaliLinuxのOSイメージをConohaに追加

事前準備

手順

  • 以下を実行し、保存イメージにkaliを追加
#!/bin/bash
# encoding: utf-8

# 事前にAPIユーザーを作成してください
APIUSER=""
APIPASS=""
TENANT_ID=""

# 1. APIトークンを発行
# https://doc.conoha.jp/api-vps3/identity-post_tokens-v3/
curl -vv -D - -s -o /dev/null -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"auth\": {\"identity\": {\"methods\": [\"password\"],\"password\": {\"user\": {\"id\": \"${APIUSER}\",\"password\": \"${APIPASS}\"}}},\"scope\": {\"project\": {\"id\": \"${TENANT_ID}\"}}}}" \
https://identity.c3j1.conoha.io/v3/auth/tokens | perl -lane "print \$1 if /^(?:x-subject-token: )(.+)\$/i" > token.txt

APITOKEN=`cat token.txt | tr -d '\r' | tr -d '\n'`

IMAGE_NAME="kali"
# 2. ISOをアップロードする箱(イメージID)を作る
# https://doc.conoha.jp/api-vps3/image-create_iso_image-v3/
curl -X POST \
-H "X-Auth-Token: ${APITOKEN}" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d "{\"name\": \"${IMAGE_NAME}\",\"disk_format\": \"iso\",\"hw_rescue_bus\": \"ide\",\"hw_rescue_device\": \"cdrom\",\"container_format\": \"bare\"}" \
https://image-service.c3j1.conoha.io/v2/images | jq -r .id > imageid.txt

IMAGEID=`cat imageid.txt | tr -d '\r' | tr -d '\n'`

FILENAME="kali-linux-2024.1-installer-amd64.iso"

# 3. 箱にisoを突っ込む
# ローカルに ${FILENAME}が存在することが条件
# https://doc.conoha.jp/api-vps3/image-create_iso_image-v3/
curl -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/octet-stream" \
-H "X-Auth-Token: ${APITOKEN}" \
-T "${FILENAME}" \
https://image-service.c3j1.conoha.io/v2/images/${IMAGEID}/file
  • kaliがアップロードされていることを確認

kali_uploaded.png

KaliLinuxのOSイメージをVPSに差し込みしLiveDVDを起動

事前準備

  • 適当に新規でVPSサーバーを立てておく。

    • どうせディスクパーティションごとデータを吹き飛ばします。
  • インストールするVPSのUUIDを確認しておく

    • VPSの詳細から、VPS設定を見ればUUIDは分かります。
  • インストールするVPSをシャットダウンしておく

  • 以下の機能をOFFにする

    • ネットワーク Virtio
    • ストレージ Virtio
  • APIを叩く為のツール実行環境を作成

    • curl
    • perl
    • jq

手順

  • 以下を実行する
#!/bin/bash
# encoding: utf-8

APITOKEN=`cat token.txt | tr -d '\r' | tr -d '\n'`
IMAGEID=`cat imageid.txt | tr -d '\r' | tr -d '\n'`

# ServerのUUIDは事前に調べておく。WebUIのVPSの詳細から、VPS設定を見ればUUIDは分かります。
SERVERID=""

# 1. サーバに保存イメージを突っ込む
curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d "{\"rescue\": {\"rescue_image_ref\": \"${IMAGEID}\"}}" \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action | jq -r .adminPass > adminpass.txt

# adminpassは発行されるが、使わない?

# 2. 接続用VNCのURLを取得する (これはWebUIからでも可能)
curl -X POST \
-H "Accept: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"remote_console": {"protocol": "vnc","type": "novnc"}}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/remote-consoles | jq -r .remote_console.url | tee remote_console.txt

# 3. 出力されたVNCのURLにブラウザでアクセス

# 4. VNCのボタンでCtrl+Alt+Deleteを送信しGRUBからExpert Installを選択
#    いくつかインストール途中でシェルに入りゴニョゴニョする必要があるため。

# 5. ベースシステムのインストール後、エキスパートシェルに移動し
#    以下を実行し、ネットワークからaptでパッケージをインストールさせる
#    cdromはiSCSIなのだが、USB経由でLiveCDがアタッチされているようで
#    cdromのラベルでのアクセスが機能していない為である。

# # rm /target/usr/lib/apt-setup/generators/40cdrom
# # umount /target/media/cdrom
# # umount /media/cdrom

# 6. 一通りインストールが完了したら、サーバをシャットダウンする

# 7. サーバの保存イメージをEjectし、レスキューモードを解除する
curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"unrescue": null}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action

# 8. もしレスキューモードから復旧せずにエラーとなった場合は一度強制シャットダウンする
curl -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: ${APITOKEN}" \
-d '{"os-stop": {"force_shutdown": true}}' \
https://compute.c3j1.conoha.io/v2.1/servers/${SERVERID}/action

# 9. サーバをConohaのWebUIから起動する

  • kaliのGRUB (Advanced...からExpert Installが可能)

    kali_grub.png

  • エキスパートシェルですべき内容を忘れなければ、kaliのインストールは難なく終わる

    kali_installed.png

事後整理

  • 必要に応じて、ネットワークvirtioとストレージvirtioをONにする

コスト比較

マイグレーション BEFORE

  • NTT WebArena Indigo Ubuntu 22.04 LTS
    • 4GB/4vCPU/80GB/500Mbps上限/IPv4/IPv6/6ヶ月9,780円

マイグレーション AFTER

  • Conoha VPS Kali-Linux Rolling 2024.1
    • 2GB/3vCPU/100GB/100Mbps上限/IPv4/IPv6/VPS割引きっぷ6ヶ月4,142円(株主優待で実質0円!!!)
    • 更新の際は割高になるので、毎回マイグレできるように、主要なサーバはkubernetes(minikube)を使ってテンプレ化しよう!

Discussion