VPS arch 初期設定

Introduce | 導入

比較的メジャーなリナックスのディストリビューションの中でシンプルでミニマルなアーチリナックスを使ってVPSサーバーを構築します。

今回紹介する設定を行う事でCommand Line Interface(CLI)での操作をより快適に行う事が出来るかもしれません。

今後の開発はこの設定で行いますので、もしもお使いの環境との差異が発生した場合は高度な柔軟性を維持しつつ、臨機応変に対応いただけましたら幸いです。

必要な装備

今回のチュートリアルを実行するにあたって必要な環境は

・bash shell script が動くPC ・Arch VPS 開発 環境 ・めげない心

Tools for USE | 使った道具

Global

Microsoft Surface Laptop 3 – 13.5

New Microsoft Surface Laptop 3 – 15

NEW Microsoft Surface Pro X – 13

日本

マイクロソフト Surface Laptop 3 13.5インチ

マイクロソフト Surface Laptop 3 15インチ

マイクロソフト Surface Pro X

Services and equipment used this time|今回利用したサービス

今回の環境で利用使用したサービスを記載しておきます。環境を同じにする事で再現性が高まるかもしれません。

conoha vps 初期設定 ssh接続方法

私は自宅サーバーでサーバーを運用しないので、企業のサービスを利用しておりますが、もしも余ったPC等で自宅サーバーの環境を構築出来る人は、Arch linuxが入ったPCにセットアップしていただければ機能すると思われます。

ssh connection|ssh接続

Bash や zsh が動くアプリを起動します。起動のやり方は詳細覧をご覧いただければ記載しております。

How to open vps server with Conoha VPS

Youtube

Blog https://prototype.tel/how-to-ssh-connect-vps-conoha-en

conoha vps 初期設定 ssh接続方法

Youtube

Blog https://prototype.tel/how-to-ssh-connect-vps-conoha-jp

Open bash|バッシュの起動

バッシュのインストールのやり方については、過去の記事を参照ください。

Youtube

How to install git bash

Youtube

ギットバッシュのインストールのやり方

バッシュを起動させたら ssh ???.???.???.?? と入力してエンター

??? の部分はこのはのVPSで表示された数字です。

The authenticity of host ~ ngerprint])? と出ますので yes と入力してエンター

root@???.???.???.???'s password: と表示されますので、Arch VPSを作成した時にメモをおすすめしておいたパスワードを入力してエンター

[root@localhost ~]# と出たら成功無事ssh接続出来ました。

Arch linux 初期設定

SSH内部での設定を行います。

Update the initial package to the latest|初期パッケージを最新に更新

`pacman -Syu elinks と入力してエンター。アーチリナックスを最新の状態へアップデート

:: Proceed with installation? [Y/n] インストールしますか?

と出力されますので y を記入してエンター

==> Image generation successful と出たら成功。

Delete Package Cache|パッケージキャッシュの削除

pacman でダウンロードされたパッケージは /var/cache/pacman/pkg ディレクトリ内に置かれ、手動で削除しない限りファイルはずっと保持されます。

パッケージがアップデートされても、古いバージョンのキャッシュファイルはそのまま残ってしまいます。

その為、定期的に手動でファイルを削除しないとストレージの使用量が肥大化していきます。

Arch Linux を使っていく上で気付きにくいけれども重要な部分だと思います。定期的なアップデートとキャッシュクリアを行うと、より安定してサーバーを運用出来ます。

then enter. Clear the Archlinax cache pacman -Sc と入力してエンター アーチリナックスのキャッシュをクリアします

:: Do you want to remove all other packages from cache? [Y/n] キャッシュから他のすべてのパッケージを削除しますか?

y と入力してエンター

:: Do you want to remove unused repositories? 未使用のリポジトリを削除しますか?

y と入力してエンター

Install nano|テキストエディタのインストール

操作が直感的で簡単だと思われる最もメジャーなテキストエディタであるnanoをインストールします。

もしも、他の使い慣れたエディタがございましたらそれをインストールして頂けましたら幸いです。

pacman -S nano と入力してエンター。nanoをインストールします。

:: Proceed with installation? [Y/n] と出力されますので y を記入してエンター

colour setting|カラーの変更

CLIの視認性を高める為カラーの変更を行います。この行為は任意です。

nano /etc/pacman.conf を入力してエンター

エディタの中の #Color の # を消して Color にします。#を外す行為をコメントアウトと呼びます。

変更を元に戻すには、 エディタの中の Color の # を追加して #Color にします。

さらにオプションですが、追加で# Misc options 以下に ILovecandy を追加する事でダウンロードのアニメーションを変更する事が出来ます。これはフレーバー要素です。

変更したら Ctrl(^) + s をして変更を保存

Ctrl(^) + x でnanoを終了

Grant sudo privilege|sudo権限を付与

一般ユーザーに スーパーユーザー権限を与えます。これをしないと一般ユーザーにてルート内部のファイルの書き換えを行う事ができません。

pacman -S sudo と入力してエンター

EDITOR=nano visudo と入力してエンター

エディタの中の # %wheel ALL=(ALL) ALL の # を消して % wheel ALL=(ALL) ALL にします

変更したら Ctrl(^) + s をして変更を保存

Ctrl(^) + x でnanoを終了

Creating a general user|一般ユーザーの作成

一般ユーザーの作成を行います。

useradd -m -aG wheel {Your username} と入力してエンター

useradd Tip| useradd 補足

ここでは -m を付加する事で homeディレクトリ以下に{Your username}のフォルダを作成します。

-aG wheel で wheelグループに {Your username} を追加します。これによって # %wheel ALL=(ALL) ALL のグループに入りますのでsudo権限を付加する事が可能になります。

ここでグループを付加し忘れたとしても後から付加や解除する事は出来ますが、面倒くさいので useradd の部分で一括で登録しておいた方が手間は少ないと思います。

Add password to general user|一般ユーザーにパスワードを追加

passwd {Your username} と入力してエンター

{任意のパスワード} を入力してエンター

{もう一度、任意のパスワード} を入力してエンター

passwd: password updated successfully と出たら成功

su {今さっき作成したユーザー名} を入力してエンター

管理者から一般ユーザーにユーザーアカウントを変更します

cd を入力してエンター

一般ユーザーのドキュメントルートに移動します。

Create .ssh|.ssh の作成

ブルートフォースアタック ランダムなユーザー名とパスワードの組み合わせをとにかく沢山作ってウェブページや SSH などのサーバーログインプロンプトにログインを絶えず試行する攻撃からサーバーを守る為にssh認証する為の準備をします。これによってよりサーバー側がより強固になります。

現状だと、IPアドレスとパスワードさえ知っていれば世界中誰でもサーバーに接続する事ができます。 SSH認証 とは 秘密鍵を作成し秘密鍵を持っているPC以外では接続できないように制限する方法です。

SSH認証とは

mkdir .ssh を入力してエンター

ls -a を入力してエンター。隠しファイルも含めた全てのドキュメントを表示

. .. .bash_logout .bash_profile .bashrc .cache .ssh .ssh が出力されてる事をご確認くだされば幸いです

exit を入力してエンター。VPSでの作業を終了(logout)します。

logout

Connection to ???.???.???.??? closed.

と表示されるまで何度も exit を行って下さい。

Connection to ???.???.???.??? closed. と出たらログアウト出来ています。

Public key authentication settings|公開鍵認証の設定

ローカル環境にて秘密鍵、公開鍵の作成を行います。

ネットに書かれているチュートリアルだとほとんど全て RSA暗号方式 を使って秘密鍵を作成しております。その暗号方式よりもより強固なEd25519暗号を使って暗号化キーを作成します。

このチュートリアルでは ras認証よりも強固な ブロックチェーン にも使われている暗号化技術である Ed25519暗号 を採用しています。これによりサーバーをより強固に守れます。

ただし、RSA方式でもPCのマシンスペックを使って解読させる事は極めて困難なので、そこまで暗号化方式にこだわる事は無いと思います。

ed25519認証とは

Output of encryption key (optional)|暗号化キーの出力(任意)

16文字の小文字と大文字、数字、記号の組み合わせのコードを出力

cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+?><~\;' | fold -w 16 | head -n 1

暗号化キーのパスワードを何にすれば良いのか迷ったらこれで作成すれば良いのではないかと思われます。

.ssh フォルダを作成

先ほど作成した.sshフォルダはVPS内部のフォルダです。今回はwindows内部のドキュメントルート内に.sshフォルダを作成します。

cd を入力してエンター

ログインユーザーのドキュメントルートに移動します。

mkdir .ssh を入力してエンター

ls -all を入力してエンター。隠しファイルを含めたすべてのファイルを表示

.ssh が出力されているか確認。以前に .ssh ファイルを作成した人はこの手順は不要です。

Main options of ssh-keygen|ssh-keygenの主なオプション

-t|方式/作成する鍵の暗号化形式を「rsa」(デフォルト)、「dsa」「ecdsa」「ed25519」から指定する -b|ビット数/作成する鍵のビット数を指定する(RSA形式の場合、デフォルトは2048bit) -a|ラウンド数/ed25519形式で生成する際のKDF(Key Derivation Function)ラウンド数を指定する。数が大きいと暗号の耐性が上がるが、処理に時間がかかるようになる -f|ファイル / ファイルを指定する(生成または読み出すファイルを指定)。ただし、併用するオプションによって意味が変化する(通常は鍵ファイル) -p|パスフレーズを変更する(対話形式で元のパスフレーズを1回、新しいパスフレーズを2回指定する)。元のパスフレーズは「-P」オプション、新しいパスフレーズは「-N」オプションで指定可能 -N|パスフレーズ / 新しく設定するパスフレーズを指定する -P|パスフレーズ / 元のパスフレーズを指定する -C|コメント / コメントを指定する(デフォルトは「ユーザー名@ホスト名」。「-C ""」でコメントを削除) -E|形式/鍵の指紋(fingerprint)を表示する際の形式を「sha256」(デフォルト)か「md5」で指定する

-F|ホスト名/指定したホスト名を、鍵ファイルとともに保存されている「known_hosts」ファイルから探して表示する(-fオプションでknown_hostsファイルを指定可能、-lオプションで対応する指紋を表示可能) -H|「known_hosts」ファイルを更新する(-fオプションでknown_hostsファイルを指定可能、元のファイルは拡張子.oldで保存される) -R|ホスト名/指定したホストに属する鍵を全て取り除く(-fオプションでknown_hostsファイルを指定可能) -r|ホスト名/指定したホストに対応する指紋を表示する(-fオプションでknown_hostsファイルを指定可能)

ssh-keygen conversion related|ssh-keygen 変換関連

-i|暗号化されていない秘密鍵ファイルまたは公開鍵ファイルを読み出し、OpenSSH互換形式に変換してから標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定、-mオプションで変換元の鍵の形式を指定できる) -e|OpenSSH形式の秘密鍵ファイルまたは公開鍵ファイルを読み出し、RFC 4716形式または-mオプションで指定した形式で標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定) -m|形式/「-i」オプションで入力する鍵の形式を、「-e」オプションで出力する鍵の形式を、「RFC4716」(デフォルト)、「PKCS8」「PEM」から指定する -y|OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する

ssh-keygen certificate related|ssh-keygen 証明書関連

-s|CA鍵/指定したCA鍵で公開鍵に署名をする -I|秘密鍵/公開鍵に証明する際に使用する鍵を指定する -h|鍵に署名する際、ユーザー証明書の代わりにホスト証明書を作成する -D|ライブラリ/PKCS#11トークンのライブラリを指定し、公開鍵をダウンロードする(※1) -n|名前/証明書に含めるユーザー名またはホスト名を指定する。名前は複数指定可能 -O|オプション/鍵に署名する際に使用する証明書のオプションを指定する(詳細は「man ssh-keygen」の「CERTIFICATES」セクション参照) -V|期間/証明書に署名する際の有効期間を指定する。「YYYYMMDD」または「YYYYMMDDHHMMSS」で期限切れとなる日時を指定するか、「:」で区切って「開始:終了」のように指定する。「+」「-」記号で期間を示すことも可能 -z|シリアル番号/証明書に埋め込むシリアル番号を指定する -L|証明書の内容を表示する -k|KRL(Key Revocation List、鍵失効リスト)ファイルを生成する(「-f」で出力ファイルを指定、「-u」を併用するとファイルに追加、「-s」でCA鍵のパス、「-z」でシリアル番号を指定) -Q|-fでKRLファイルを指定し、鍵がKRLで失効したものとして指定されているかを検査する(「-Q -f KRLファイル 対象ファイル」で実行)/※1 PKCS(Public-Key Cryptography Standards)は公開鍵暗号標準のグループ。PKCS#11はスマートカードなどのハードウェアデバイスを使用する認証サポートを提供する。

ssh-keygen others|ssh-keygen その他

-A|ホスト鍵(/etc/ssh/ssh_host_key、/etc/ssh/ssh_host_dsa_key)を生成する(root権限が必要) -l|公開鍵ファイルの指紋(fingerprint)を表示する -B|公開鍵ファイルや秘密鍵ファイルのbubblebabbleダイジェストを表示する -q|メッセージを表示しない -v|詳細なメッセージを表示

cd .ssh を入力してエンター

ssh-keygen -t ed25519 -b 4096 -C win -f id_ed25519_winarchvps を入力してエンター。ed25519暗号化形式で鍵を作成

Enter passphrase (empty for no passphrase): パスワードを入力してください

{忘れないパスワード} を入力してエンター

もう一度 {忘れないパスワード} を入力してエンター。

+--[ED25519 256]--+
|E   ..o=*o.+o    |
|.   .oo+oo...    |
|....  o=..       |
| o+. o  =        |
|o .oo ooS.       |
|* ...+o oo       |
|oo.. o+o+o       |
| .   o+o+o       |
|      .o..       |
+----[SHA256]-----+

このような謎のAA(アスキーアート)が出てきたら成功。

何を示しているかと言うと、人間の脳は一々パスワードなんか覚えてられないからアスキーアートで図として形を覚えておけば誰かがパスワードいじった時に記号が変わるのでクラッキングに気付きやすいんじゃ無いの?という対策です。

ls を入力してエンター

id_ed25519_winarchvps.pub id_ed25519_winarchvps の2種類が存在していればOK

The one without .pub is the key, and the one with .pub is the keyhole. .pubが付いていない方が鍵、.pubが付いている方が鍵穴です。

.pubが付いていない方をオンラインにアップロードしたりシェアしたり、消したりしない方が無難です。消したりしたらもう二度とその秘密鍵を共有したサーバー等にはネットを介して接続出来なくなります。(2敗

cat id_ed25519_winarchvps.pub を入力してエンター

ssh-ed25519 A1lAAI1NTE5AAABBafqZ6rAAWcfAAIKgbSpIw8AbpBD9Pu1X7PAAC3NzaCUj2ty1Vvjm win までをコピーしてどこかにメモしておいて下さい。

If you share your PC with someone|もしもPCを誰かと共有している場合は

.ssh に対してローカルのあなたのPCでログインしてるユーザー以外の読み書きを禁止する設定を行います。

もしもPCを誰とも共有していなければこの操作は必要ないかもしれません。

cd .. を入力してエンター。一つ上の階層に戻ります。

chmod 700 .ssh を入力してエンター。.sshのファイルにあなた以外のユーザーのアクセスを禁止

make config file|コンフィグファイルの作成

ssh接続するにあたって手間を減らす為にconfigファイルを作成します。今回紹介する方法ではこのファイルの設定が必ず必要になります。

nano .ssh/config を入力してエンター

Ssh connection as a general user|一般ユーザーにてssh接続

今度はVPSに一般ユーザーとしてssh接続します。

ssh {あなたが作った一般ユーザー名}@???.???.???.??? を入力してエンター

Example|例

ssh ya10-810@???.???.???.??? Will be.

もしも useradd -m -G wheel ya10-810 と一般ユーザーを作成していたなら ssh ya10-810@???.???.???.??? となります。

{username}@???.???.???.???'s password: と表示されますので、 一般ユーザーを作成する時に設定したパスワードを入力してエンター

[{username}@localhost ~]# と出たら成功無事ssh接続出来ました。

nano .ssh/authorized_keys を入力してエンター。

メモしておいた ssh-ed25519 A1lAAI1NAA5AAABBafqZAAw8AbpBD9Pu1AA7PAAC3NzaCUjAAAcfAAIKgbSAA2ty1Vvjm win をコピペします。

変更したら Ctrl(^) + s をして変更を保存

Ctrl(^) + x でnanoを終了

chmod 700 .ssh/ を入力してエンター。現在ログインしているユーザー以外のアクセス禁止設定

chmod 600 .ssh/authorized_keys を入力してエンター。読込・書込み権限を付与

Limiting sshd_config connections to VPS|VPSへのアクセス制限

VPSへのアクセス制限の設定を行います。

今回行う事は ・ログインポートを22番から変更 ・ルートログインの不許可 ・パスワードを使ったログインの不許可

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config-old を入力してエンター。バックアップを作成します。(任意)

sudo nano /etc/ssh/sshd_config を入力してエンター。

[sudo] password for {username}: と表示されますので、一般ユーザーを作成する時に 設定したパスワードを入力してエンター

下記の内容に変更してください。

Will be changes|変更箇所

#Port 22Port 22222 ---------- PermitRootLogin yesPermitRootLogin no ---------- PasswordAuthentication yesPasswordAuthentication no ---------- ↓

変更したら Ctrl(^) + s をして変更を保存

Ctrl(^) + x でnanoを終了

tip for port numbers|ポート番号についての補足

接続ポート変更 必ず # を外して下さい。ポート番号は 49152~65535 の間でランダムに選んで下さい。上は適当に56789を使っていますが任意で変更して下さい。

Typical port numbers and protocols|代表的なポート番号とプロトコル

·TCP 20 : FTP (Data|データ) ·TCP 21 : FTP (control|制御) ·TCP 22 : SSH ·TCP 23 : Telnet ·TCP 25 : SMTP ·UDP 53 : DNS ·UDP 67 : DHCP(server|サーバ) ·UDP 68 : DHCP(client|クライアント) ·TCP 80 : HTTP ·TCP 110 : POP3 ·UDP 123 : NTP ·TCP 443 : HTTPS

Well known port numbers|よく知られているポート番号

実際ポート自体は0から65535まで存在しますがその中でも0~1023までを「ウェルノウンポート番号」という。これらはIANAという団体により管理されている。

「よく知られているポート番号」というように、よく知られているので攻撃の対象になりやいす特徴を持っています。

TCP/IPやUDPにおいて通信で利用されるポート番号のうち、メジャーなサービスやプロトコルが利用するために予約されているポート番号のことである。

80がHTTP、22がSSHとあるように、メジャーなサービスはポート番号が一般的に決め打ちされている。

それらはサービスごとに設定ファイルを編集し、待受のポート番号を変更することも可能だ。セキュリティの関係上意図的にポート番号を変更することもしばしあるが、基本的にはウェルノウンポート番号を使用するようにしよう。

Registered port number|レジスタードポート番号

1024~49151 こちらもIANAで管理されている。

特定のアプリケーションなどが使用することになっているポート郡である。IANAが登録を受け付け、公開している。

Other port numbers|その他のポート番号

49152~65535はユーザが自由にとりあつかえるポート番号となっている。IANAに登録をする必要もない。

ポート番号に関しては「実際どのサービスをどのポートで動かすのか?」というのは絶対の決め打ちが存在するわけではないので、任意で管理、わりふって使用することも出来る。その他のポート番号から選択することを推奨します。

systemctl restart sshd を入力してエンター。sshdをリロードする事で変更を反映させます。 sshdを変更する度にこの行為を行って下さい(13敗

exit を入力してエンター

Connection to ???.???.???.??? closed. と表示されるまで何度も exit を行って下さい。

Connection to ???.???.???.??? closed. と出たらログアウト出来ています。

ssh接続するにあたって手間を減らす為にconfigファイルを作成します。今回紹介する方法ではこのファイルの設定が必ず必要になります。

cd を入力してエンター。windowsのドキュメントルート階層に行きます。

nano .ssh/config を入力してエンター

Host vps
 HostName ???.???.???.???
 Port 22222
 User {General user name you created あなたが作った一般ユーザー名}
 IdentityFile ~/.ssh/id_ed25519_winarchvps

内容を書き込みます。

ホストネームはあなたがVPSを作成した時に付与された数字です。

{General user name you created あなたが作った一般ユーザー名} はVPS内部であなたが作成した一般ユーザー名です。

変更したら Ctrl(^) + s をして変更を保存

Ctrl(^) + x でnanoを終了

次回からVPSに接続する場合は ssh vps を入力してエンター

Enter passphrase for key '/c/Users/admin/.ssh/id_ed25519_winarchvps': と出力されますので id_ed25519_winarchvps を作成する時に設定したパスワードを入力

以上で非常に厄介なVPSサーバーの初期設定のチュートリアルを終了します。

お疲れさまでした。参考になれば幸いです。最後までご覧頂きありがとうございました。

English How to open vps server with Conoha VPS

日本語 conoha vps 初期設定 ssh接続方法

thank you

最後までご覧いただきありがとうございました。参考になれば幸いです

寄付のお願い

これからも、お役に立てる情報を更新します。宜しければご寄付をよろしくおねがいします。寄付をいただけましたら飛び跳ねて喜びます。