比較的メジャーなリナックスのディストリビューションの中でシンプルでミニマルなアーチリナックスを使ってVPSサーバーを構築します。
↓
今回紹介する設定を行う事でCommand Line Interface(CLI)での操作をより快適に行う事が出来るかもしれません。
↓
今後の開発はこの設定で行いますので、もしもお使いの環境との差異が発生した場合は高度な柔軟性を維持しつつ、臨機応変に対応いただけましたら幸いです。
↓
今回のチュートリアルを実行するにあたって必要な環境は
↓
・bash shell script が動くPC ・Arch VPS 開発 環境 ・めげない心
↓
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インチ
↓
今回の環境で利用使用したサービスを記載しておきます。環境を同じにする事で再現性が高まるかもしれません。
↓
↓
私は自宅サーバーでサーバーを運用しないので、企業のサービスを利用しておりますが、もしも余ったPC等で自宅サーバーの環境を構築出来る人は、Arch linuxが入ったPCにセットアップしていただければ機能すると思われます。
↓
Bash や zsh が動くアプリを起動します。起動のやり方は詳細覧をご覧いただければ記載しております。
↓
Youtube
Blog https://prototype.tel/how-to-ssh-connect-vps-conoha-en
Youtube
Blog https://prototype.tel/how-to-ssh-connect-vps-conoha-jp
↓
バッシュのインストールのやり方については、過去の記事を参照ください。
↓
Youtube
Youtube
↓
バッシュを起動させたら
ssh ???.???.???.??
と入力してエンター
↓
??? の部分はこのはのVPSで表示された数字です。
↓
The authenticity of host ~ ngerprint])? と出ますので
yes
と入力してエンター
↓
root@???.???.???.???'s password: と表示されますので、Arch VPSを作成した時にメモをおすすめしておいたパスワードを入力してエンター
↓
[root@localhost ~]#
と出たら成功無事ssh接続出来ました。
↓
SSH内部での設定を行います。
↓
`pacman -Syu elinks と入力してエンター。アーチリナックスを最新の状態へアップデート
↓
:: Proceed with installation? [Y/n]
インストールしますか?
↓
と出力されますので
y
を記入してエンター
↓
==> Image generation successful
と出たら成功。
↓
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
と入力してエンター
↓
操作が直感的で簡単だと思われる最もメジャーなテキストエディタであるnanoをインストールします。
↓
もしも、他の使い慣れたエディタがございましたらそれをインストールして頂けましたら幸いです。
↓
pacman -S nano
と入力してエンター。nanoをインストールします。
↓
:: Proceed with installation? [Y/n] と出力されますので
y
を記入してエンター
↓
CLIの視認性を高める為カラーの変更を行います。この行為は任意です。
↓
nano /etc/pacman.conf
を入力してエンター
↓
エディタの中の #Color の # を消して Color にします。#を外す行為をコメントアウトと呼びます。
↓
変更を元に戻すには、 エディタの中の Color の # を追加して #Color にします。
↓
さらにオプションですが、追加で# Misc options 以下に
ILovecandy
を追加する事でダウンロードのアニメーションを変更する事が出来ます。これはフレーバー要素です。
↓
変更したら Ctrl(^) + s をして変更を保存
↓
Ctrl(^) + x でnanoを終了
↓
一般ユーザーに スーパーユーザー権限を与えます。これをしないと一般ユーザーにてルート内部のファイルの書き換えを行う事ができません。
↓
pacman -S sudo
と入力してエンター
↓
EDITOR=nano visudo
と入力してエンター
↓
エディタの中の # %wheel ALL=(ALL) ALL
の # を消して
% wheel ALL=(ALL) ALL
にします
↓
変更したら Ctrl(^) + s をして変更を保存
↓
Ctrl(^) + x でnanoを終了
↓
一般ユーザーの作成を行います。
↓
useradd -m -aG wheel {Your username}
と入力してエンター
ここでは -m
を付加する事で homeディレクトリ以下に{Your username}のフォルダを作成します。
↓
-aG wheel
で wheelグループに {Your username} を追加します。これによって # %wheel ALL=(ALL) ALL
のグループに入りますのでsudo権限を付加する事が可能になります。
↓
ここでグループを付加し忘れたとしても後から付加や解除する事は出来ますが、面倒くさいので useradd の部分で一括で登録しておいた方が手間は少ないと思います。
↓
passwd {Your username}
と入力してエンター
↓
{任意のパスワード}
を入力してエンター
↓
{もう一度、任意のパスワード}
を入力してエンター
↓
passwd: password updated successfully と出たら成功
↓
su {今さっき作成したユーザー名}
を入力してエンター
↓
管理者から一般ユーザーにユーザーアカウントを変更します
↓
cd
を入力してエンター
↓
一般ユーザーのドキュメントルートに移動します。
↓
ブルートフォースアタック ランダムなユーザー名とパスワードの組み合わせをとにかく沢山作ってウェブページや SSH などのサーバーログインプロンプトにログインを絶えず試行する攻撃からサーバーを守る為にssh認証する為の準備をします。これによってよりサーバー側がより強固になります。
↓
現状だと、IPアドレスとパスワードさえ知っていれば世界中誰でもサーバーに接続する事ができます。 SSH認証 とは 秘密鍵を作成し秘密鍵を持っているPC以外では接続できないように制限する方法です。
↓
↓
mkdir .ssh
を入力してエンター
↓
ls -a
を入力してエンター。隠しファイルも含めた全てのドキュメントを表示
↓
. .. .bash_logout .bash_profile .bashrc .cache .ssh .ssh が出力されてる事をご確認くだされば幸いです
↓
exit
を入力してエンター。VPSでの作業を終了(logout)します。
↓
logout
Connection to ???.???.???.??? closed.
↓
と表示されるまで何度も exit
を行って下さい。
↓
Connection to ???.???.???.??? closed. と出たらログアウト出来ています。
↓
ローカル環境にて秘密鍵、公開鍵の作成を行います。
↓
ネットに書かれているチュートリアルだとほとんど全て RSA暗号方式 を使って秘密鍵を作成しております。その暗号方式よりもより強固なEd25519暗号を使って暗号化キーを作成します。
↓
このチュートリアルでは ras認証よりも強固な ブロックチェーン にも使われている暗号化技術である Ed25519暗号 を採用しています。これによりサーバーをより強固に守れます。
↓
ただし、RSA方式でもPCのマシンスペックを使って解読させる事は極めて困難なので、そこまで暗号化方式にこだわる事は無いと思います。
↓
↓
16文字の小文字と大文字、数字、記号の組み合わせのコードを出力
cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+?><~\;' | fold -w 16 | head -n 1
↓
暗号化キーのパスワードを何にすれば良いのか迷ったらこれで作成すれば良いのではないかと思われます。
↓
先ほど作成した.sshフォルダはVPS内部のフォルダです。今回はwindows内部のドキュメントルート内に.sshフォルダを作成します。
↓
cd
を入力してエンター
↓
ログインユーザーのドキュメントルートに移動します。
↓
mkdir .ssh
を入力してエンター
↓
ls -all
を入力してエンター。隠しファイルを含めたすべてのファイルを表示
↓
.ssh が出力されているか確認。以前に .ssh ファイルを作成した人はこの手順は不要です。
↓
-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ファイルを指定可能)
↓
-i|暗号化されていない秘密鍵ファイルまたは公開鍵ファイルを読み出し、OpenSSH互換形式に変換してから標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定、-mオプションで変換元の鍵の形式を指定できる) -e|OpenSSH形式の秘密鍵ファイルまたは公開鍵ファイルを読み出し、RFC 4716形式または-mオプションで指定した形式で標準出力に出力する(変換元のファイルは-fオプションまたは対話式で指定) -m|形式/「-i」オプションで入力する鍵の形式を、「-e」オプションで出力する鍵の形式を、「RFC4716」(デフォルト)、「PKCS8」「PEM」から指定する -y|OpenSSH形式の秘密鍵ファイルを読み出し、OpenSSH形式の公開鍵を標準出力に出力する
↓
-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はスマートカードなどのハードウェアデバイスを使用する認証サポートを提供する。
↓
-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
までをコピーしてどこかにメモしておいて下さい。
↓
.ssh に対してローカルのあなたのPCでログインしてるユーザー以外の読み書きを禁止する設定を行います。
↓
もしもPCを誰とも共有していなければこの操作は必要ないかもしれません。
↓
cd ..
を入力してエンター。一つ上の階層に戻ります。
↓
chmod 700 .ssh
を入力してエンター。.sshのファイルにあなた以外のユーザーのアクセスを禁止
↓
ssh接続するにあたって手間を減らす為にconfigファイルを作成します。今回紹介する方法ではこのファイルの設定が必ず必要になります。
↓
nano .ssh/config
を入力してエンター
↓
今度はVPSに一般ユーザーとしてssh接続します。
↓
ssh {あなたが作った一般ユーザー名}@???.???.???.???
を入力してエンター
↓
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
を入力してエンター。読込・書込み権限を付与
↓
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 22
↓
Port 22222
----------
PermitRootLogin yes
↓
PermitRootLogin no
----------
PasswordAuthentication yes
↓
PasswordAuthentication no
----------
↓
変更したら Ctrl(^) + s をして変更を保存
↓
Ctrl(^) + x でnanoを終了
↓
接続ポート変更 必ず # を外して下さい。ポート番号は 49152~65535 の間でランダムに選んで下さい。上は適当に56789を使っていますが任意で変更して下さい。
↓
·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
↓
実際ポート自体は0から65535まで存在しますがその中でも0~1023までを「ウェルノウンポート番号」という。これらはIANAという団体により管理されている。
↓
「よく知られているポート番号」というように、よく知られているので攻撃の対象になりやいす特徴を持っています。
↓
TCP/IPやUDPにおいて通信で利用されるポート番号のうち、メジャーなサービスやプロトコルが利用するために予約されているポート番号のことである。
↓
80がHTTP、22がSSHとあるように、メジャーなサービスはポート番号が一般的に決め打ちされている。
↓
それらはサービスごとに設定ファイルを編集し、待受のポート番号を変更することも可能だ。セキュリティの関係上意図的にポート番号を変更することもしばしあるが、基本的にはウェルノウンポート番号を使用するようにしよう。
↓
1024~49151 こちらもIANAで管理されている。
↓
特定のアプリケーションなどが使用することになっているポート郡である。IANAが登録を受け付け、公開している。
↓
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
↓
最後までご覧いただきありがとうございました。参考になれば幸いです
↓
これからも、お役に立てる情報を更新します。宜しければご寄付をよろしくおねがいします。寄付をいただけましたら飛び跳ねて喜びます。