-
kusanagiとは、言ってしまえば高速化チューニングしたLAMP(WEB実行)環境になります。
かんたんKUSANAGIは「かんたんKUSANAGI」テンプレートではKUSANAGIを簡単に操作できる、プライム・ストラテジー社公式認定のKUSANAGIかんたん管理ツール「ConoHa KUSANAGI manager」がインストールされます。 KUSANAGI managerではKUSANAGIの初期設定、WordPress作成で必要だったコマンド操作が不要となり簡単にKUSANAGI搭載のWordPressを運用することができます。
とCentOS(2020年7月現在centos7)上にKUSANAGI環境からwordpressのインストールまでほぼ自動で出来てしまいます。
インスタンス作成時、オプション設定でsshとメール関連のポートのみ解放していましたが、ConoHa KUSANAGI managerにアクセスするポートやhttp、https等 必要なポートを解放していくことにします。
ConoHa vpsのコントロールパネルで解放したポートは仮想サーバーのOS内のファイアウォール(centos7の場合firewalld)では無く仮想インフラ側になります。
その為、ConoHa apiを使用して設定していく必要があります。
- STEP1
- コントロールパネルのサイドメニューのAPIを選択します。
- STEP2
- APIユーザーのパスワードを設定します。
- STEP3
- sshで仮想サーバーに接続します。
- STEP4
- ConoHa apiはREST APIとして実装されているためcurlコマンドで簡単に実行できますが戻り値のjsonを整形する為にjqコマンドをインストールします。
yum install jq --enablerepo=epel
- STEP5
- トークンを発行する
トークン発行 – Identity API v2.0 / ConoHa API-
いよいよ、ConoHa APIを実行してファイアウォールを設定していきます。
ConoHa APIの詳細は ConoHa API Index / ConoHa API をご覧ください。
今回は、identity api v2.0(最初にトークンを発行する為に使用)とNetwork api v2.0を使用します。
基本的には、ConoHa APIのドキュメントのExample 通り実行していくだけですが、curlのiオプションはHTTPレスポンスヘッダ情報を返す為jqコマンドで整形できなくなってしまいますので iオプションは実行時のエラーを確認したい時のみ付加しjqで整形する場合は不要です。
curl -X POST \ -H "Accept: application/json" \ -d '{"auth":{"passwordCredentials":{"username":"APIユーザー.ユーザー名","password":"APIユーザー.パスワード"},"tenantId":"テナント情報.テナントID"}}' \ エンドポイント.Identity Service/tokens|jq
curl -X POST -H "Accept: application/json" -d '{"auth":{"passwordCredentials":{"username":"username","password":"password"},"tenantId":"tenantId"}}' https://identity.tyo.conoha.io/v2.0/tokens|jq % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2549 100 2399 100 150 7275 454 --:--:-- --:--:-- --:--:-- 7269 { "access": { "token": { "issued_at": "yyyy-mm-ddTHH:MM:SS.993201", "expires": "yyyy-mm-ddTHH:MM:SSZ", "id": "トークンID", "tenant": { "domain_id": "domainid", "description": "v2", "enabled": true, "id": "テナントID", "name": "テナント名" }, "audit_ids": [ "xxxxxxxxxxxxx" ] }, ....
-
いよいよ、ConoHa APIを実行してファイアウォールを設定していきます。
- STEP6
- セキュリティグループを作成
セキュリティグループ作成 – Network API v2.0
コントロールパネルにあったように役割毎(WEB、メール)にグループを作成した方が管理しやすいですが、個人で運営しているだけなのでそれほど変更する必要もない為、一つのグループでルールを設定します。 ※デフォルトで作成されているセキュリティグループのルール変更は出来ない為、独自のルールを設定したい場合は、最低一つは新規でセキュリティグループを作成する必要があります。curl -X POST \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group": {"name": "myrule","description": "My Custom Sec"}}' \ エンドポイント.Network Service/security-groups|jq
- STEP7
- 作成したセキュリティグループをセキュリティルールを追加
セキュリティグループ ルール作成 – Network API v2.0 / ConoHa API
※STEP6で作成した実行した際の戻り値にセキュリティグループIDがあるのでパラメータに指定します。
例:kusanagi manager用のポートを特定IPからのみアクセス可能に設定します。
curl -X POST \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv4", "security_group_id": "セキュリティグループID", "port_range_min": "ポート番号", "port_range_max": "ポート番号", "protocol": "tcp","remote_ip_prefix":"許可IP"}}' \ エンドポイント.Network Service/security-group-rules|jq
curl -X POST \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv4", "security_group_id": "セキュリティグループID", "port_range_min": "80", "port_range_max": "80", "protocol": "tcp"}}' \ エンドポイント.Network Service/security-group-rules|jq
curl -X POST \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"security_group_rule": {"direction": "ingress", "ethertype": "IPv6", "security_group_id": "セキュリティグループID", "port_range_min": "80", "port_range_max": "80", "protocol": "tcp"}}' \ エンドポイント.Network Service/security-group-rules|jq
- STEP8
- セキュリティグループ一覧取得でグループとルールの確認
セキュリティグループ一覧取得 – Network API v2.0 / ConoHa API
※STEP7で作成したグループのみを確認したい場合はセキュリティグループ詳細取得 – Network API v2.0 / ConoHa APIで確認する事も可能ですがセキュリティグループやルールの数が少ない為、セキュリティグループ一覧取得でSTEP7で設定したルールの確認を行います。curl -i -X GET \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ エンドポイント.Network Service/security-groups|jq
- STEP9
- セキュリティグループを設定するポートの確認ポート一覧取得 – Network API v2.0
作成したグループを設定する仮想サーバーのポートを特定する為にポート一覧を表示し仮想サーバーのIPアドレスを元にポートIDを確認します。
また、現在ポートに設定されているセキュリティグループを確認します。curl -i -X GET \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ エンドポイント.Network Service/v2.0/ports|jq
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1683 100 1683 0 0 4461 0 --:--:-- --:--:-- --:--:-- 4452 { "ports": [ { "status": "ACTIVE", "name": "PORT_NAME", "allowed_address_pairs": [], "admin_state_up": true, "network_id": "69f32dbf-392d-459a-b7d9-6802d55a6d65", "tenant_id": "22394afc818d471ca2f0308c06ae7460", "extra_dhcp_opts": [], "binding:vnic_type": "normal", "device_owner": "compute:None", "mac_address": "fa:16:3e:16:69:ce", "fixed_ips": [ { "subnet_id": "45093c6d-e0cf-4101-943b-c75625a57801", "ip_address": "172.21.139.80" } ], "id": "08357e0f-3b36-46f4-8f75-bbdb0bfcaa33", "security_groups": [ "6cdb77f5-0e85-49cf-b093-acb3ab41e730" ], "device_id": "2a0b45bb-1e14-400e-a386-195f58c47f4e" },
該当ポートのid及び、security_groups(現在設定されているポートのセキュリティグループ)のID一覧を確認します。
現在設定されているセキュリティグループの詳細を確認したい場合は、
セキュリティグループ詳細取得 – Network API v2.0 で確認したいセキュリティグループIDを設定して確認します。
- STEP10
- ポートにセキュリティグループを設定ポート一覧取得 – Network API v2.0
セキュリティグループを一つ追加や一つ削除などはできず、セキュリティグループのリストを設定するため設定済みのセキュリティグループも再度記載する必要があります。
curl -X PUT \ -H "Accept: application/json" \ -H "X-Auth-Token: トークンID" \ -d '{"port": {"security_groups": ["セキュリティID1", "セキュリティID2", "セキュリティID3" ]}}' \ エンドポイント.Network Service/ports/da195d06-1cde-452b-9135-c773417cebb8
ConoHa vpsでサーバー構築(3.kusanagi manager)かんたんkusanagi編へ続く