お名前.com レンタルサーバーでやっているブログを
お名前.com VPS に移行することを目的にやっています。
何かあったときに再現できるように個人メモ的なものです。
ネットで調べたことをやっていますが、
セキュリティに関してここで書いたことをやって
余計にセキュリティがあまくなることもあるかもしれませんのでご了承ください。
ギリギリで移行するのではなくレンタルサーバーとVPSを併用してなれるようにしました。
ドメイン移行は1番、最後。
それまでは別ドメイン(1年限定の安いやつや無料)をVPSに割り当てて使いました。
実際に動かしているもの
イチゲブログ(WordPress)-今ご覧のブログ。
お名前.comのVPSにデプロイしたDjangoアプリ
環境
パソコンWindows11
VPS OS Ubuntu 20.04.3 LTS
申し込み
実際に申し込んだ手順です。
お名前.comは既に使っているのでアカウントがある状態です。
GMOインターネットグループの株主優待があるのですが、
サービス初回、請求分は対象外っぽく入力する画面は出てこなかった。
お名前.com VPS から私はメモリ1Gプランで「今すぐお申込み」→VPS(KVM) お申込みの6ヶ月払い選択
VPS(KVM)1GBプラン(6ヶ月)2024/3/8時点
初期設定費用0円初回料金(6ヶ月払い)5,568円(税込)サービス維持調整費 834円(税込)
次へ→支払い方法、クレジットカード、クレジットカード情報入力
GMOポイントがあればGMOポイント利用でポイント数入力→申込む
認証用メールが送られてくるので認証URLクリック→「電話を受ける」をクリックすると電話が掛かってくるので認証番号入力→「お名前.com Navi(契約管理画面)を開くと」をクリックすると、ステータス が申込受付(手続き開始)→ご入金確認済みになります。
1時間ぐらいしたらお名前.com Naviのメニューバーのその他→VPS(KVM)
サーバー情報のIPアドレスは(設定中)ですが次のセットアップをするとIPアドレスが割り当てられます。
コントロールパネル詳細にログインIDとパスワードがあります。
→ログイン→セットアップする→OSとバーションを選択し、OSのrootパスワードを指定→確認セットアップする→完了する
参考:VPSで独自ドメインを利用するには?VPSの登録からDNSレコードの設定方法
目次へ
レンタルサーバー解約
ある程度めどが立ってから現状使っているお名前.com レンタルサーバーを解約申し込みしました。
参考:【サーバーサービス】解約方法を教えてください|ヘルプ | ドメイン取るならお名前.com (onamae.com)
具体的手順:
レンタルサーバー一覧から解約するプランをクリックすると
「ドメイン永続無料権利を失い今後ドメイン使用料金が発生しますがよろしいでしょうか。
注意点・ご確認
■ 次回更新時より更新料金が発生いたします。
■ ドメインの種類によって更新料金は異なります」
と出ます。
私は、ドメインは使い続けるので、更新料金を払っていくつもりです。
ドメインの更新手続きは別途、連絡待ち。
→解約手続きを続ける→アンケートに答える→解約
まとめ払いをしているので解約日は、まとめ払いの契約が終わる日(1か月以上先)になりました。
(解約日を選択するところはなかった。)
まとめ払いの場合、自動更新との関係に気を付けたほうがいいかもしれません。
私は自動更新解除せずに上記の解約をしました。
多分、利用期限月の前月に解約申し込みしたので、できたのかもしれません。
「自動更新を解除される場合は、利用期限月の前月までに解除してください。
またサービスご解約をされる場合は管理画面(お名前.com Navi)よりお手続きを
お願いします。(自動更新解除後にお手続き可能です)」
というメールが更新日の前月に来ていました。
目次へ
使ってみる
コンソール
コンソールは2つありますが、シリアルコンソールを使ってます。
コンソールは不便ですが必ず、さわっておいたほうがいいです。
SSH接続は便利ですが、つなげなくなったときの手段としてコンソールが必要です。
シリアルコンソールのloginのrootパスワードの
数字はテンキー(キーボードの右)ではなく上にある数字キーで入力するとうまくいく。
シリアルコンソールは後で書いてますが、
最大表示しないとvimで文字をインサートしたとき変なところに文字が追加されます。
後、割り当てられてないキー入力をすると変な動作をしたりします。
使ってる環境によるかもしれませんが、くせがあるので慣れておいた方がいいです。
SSH
用意されている鍵でSSH接続してみます。
SSH Key Pair→ダウンロード
Windows11のPowerShellで
ssh root@IPアドレス -p 注1 -i ~\Downloads\vps********-001.pem
参考:https://www.karakaram.com/onamae-com-vps1-ssh/#ssh-key-login
-p 注1がないとport22につなげようとするが、
お名前.comのVPSのSSH接続はポート注1になっていた。
注1)ポート番号はVPS(KVM)サーバーコントロールパネルのルール名SSHのポート番号を見てください。(ルール名SSH 22 (TCP)の22番ではありません)
~\Downloads\vps********-001.pemの部分は、~と\がコピペすると環境によって文字が変わって
Warning: Identity file C:\Users\User/\Downloads\vps*******-001 not accessible: No such file or directory.と出る。
~はSSHコマンドを実行している場所です。
私はPowerShellでC:\Users\Userのディレクトリで、このsshコマンドを実行しているので
まずexploreでvps********-001.pemを右クリックして「パスのコピー」
Vsコードに貼り付けて今sshコマンドを実行しているC:\Users\Userの次の部分
\Downloads\vps********-001.pemの部分を貼り付けた。
ちなみにPowerShellでどうやってキー入力したら同じように打てるかやってみたら以下だった
~は、shift+キーボードの「へ」
ディレクトリの区切り「バックスラッシュ(\)」は、「\」
参考にしたサイトのコードをコピペすると以下に変わる。
ssh root@IPアドレス -i ~/Downloads/vpsXXXXXXXXX-001
「~」「/」はmac、Windows、メモ帳、ターミナルなど環境によって見た目が変わる文字です。
サイトのコードをコピペしたり、見た目が同じようにキー入力したとき
エラーになってよくはまるところなので
自分の環境で一度整理して確認しておいたほうがいいです。
SSH接続直後に今いるところを確認
pwd
/root
SSH接続の設定を見てみる
cat /etc/ssh/sshd_config
確認したのは以下
PermitRootLogin without-password( rootユーザのみパスワード認証を拒否する参考:https://qiita.com/ine1127/items/b50b9a8f831736cf14ea)
PasswordAuthentication no(パスワード認証を禁止)
PermitRootLoginはユーザーを追加した後でnoに変えました。
Powershellにてnmapで外部に開放されているポートを確認
(nmapはインストールする必要があります。)
nmap IPアドレス
Starting Nmap 7.94 ( https://nmap.org ) at 2024-03-09 06:58 東京 (標準時)
Nmap scan report for v***-***-***-***.myvps.jp (IPアドレス)
Host is up (0.0080s latency).
Not shown: 999 filtered tcp ports (no-response)
PORT STATE SERVICE
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 5.12 seconds
80番だけでした。
目次へ
ユーザー追加
参考:https://www.server-world.info/query?os=Ubuntu_21.04&p=initial_conf&f=1
をそのままやりました。
実行後、今いるところを確認
pwd
/home/追加したユーザー名
exitして、追加したユーザー名でSSH接続してみる
ssh 追加したユーザー名@IPアドレス -p SSHのポート番号 -i ~\Downloads\vps*******-001.pem
追加したユーザー名のパスワード入力で入れました。
目次へ
Windowsでカギを作ってSSH接続
Windowsでカギを作って、それでSSH接続するようにします。
主目的はVsコードを使えるようにするためです。
VPSのほうの鍵でもいいかもしれませんが
調べたVsコードを使うやり方がWindowsで鍵を作るやり方だったのでそうしてます。
さらにrootではなく新しく作ったユーザーでSSH接続します。
exitして
参考:Windowsから公開鍵認証でSSHログインする [Ubuntu 22.04 LTS]
を実行してみたけど、うまくいかない部分は自分なりに修正しました。
ssh-keygen -t ed25519 -f .\.ssh\id_ed25519_ubuntu -C ""
でエラーoption requires an argument -- Cが出たので -C ""を削除して
ssh-keygen -t ed25519 -f .\.ssh\id_ed25519_ubuntu
途中パスフレーズの設定があります。
カギが作られました。
cat .\.ssh\id_ed25519_ubuntu.pub | ssh <接続先ユーザー名>@<接続先ホスト名orIPアドレス> `
" `
mkdir -p ~/.ssh && chmod 700 ~/.ssh && `
cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys `
"
はうまくコマンドを貼れなかったので1個1個手動でやりました。
新しく作ったユーザーでSSH接続して
mkdir .ssh
cd .ssh
vim authorized_keys
これで空のauthorized_keysファイルができます。
中身はメモ帳でid_ed25519_ubuntu.pubを開いてコピー
貼り付け
ESCでvimのコマンドモードにして:wqでvimを保存終了
ssh -p SSHのポート番号 -i .\.ssh\id_ed25519_ubuntu <接続先ホスト名orIPアドレス>
パスフレーズ入力でSSH接続できました。
権限を変えておく
ls -a -lでパーミッション設定を確認すると
drwxrwxr-x 2 user user 4096 Mar 9 08:16 .ssh
chmod 700 .ssh
drwx------ 2 user user 4096 Mar 9 08:16 .ssh
cd .ssh
ls -a -l
-rw-rw-r-- 1 user user 93 Mar 9 08:16 authorized_keys
cd ..
chmod 600 .ssh/*
確認してみると
-rw------- 1 user user 93 Mar 9 08:16 authorized_keys
目次へ
Vsコードで接続
Vsコード接続に必要なものはこちら↓でインストールしてあるので
.ssh/configのファイルに以下追加で接続できました。
Host <接続先エイリアス名>
HostName <接続先ホスト名orIPアドレス>
User <接続先ユーザー名>
Port SSHのポート番号
IdentityFile ~/.ssh/id_ed25519_ubuntu
目次へ
SSH の設定変更
rootユーザーログイン禁止
新しいユーザーでSSH接続vim /etc/ssh/sshd_config
#PermitRootLogin without-password
PermitRootLogin no
1番最初にやったrootでSSH接続してもPermission denied (publickey).で接続できないことを確認しました。
Portの変更
失敗して復活するのが大変なのでコンソールの使い方をまず取得してください。
SSH接続のportの変更をしようとしてsshd_configを変えたはいいけど
その後、SSH接続できなくなってシリアルコンソールでvimでsshd_configを編集して、もとに戻そうとしたら1行ずれたところが変わっていた。多分、最大化表示でやらないとずれるのかも。
どうにか修正できたが一歩間違うと、どうにもならなくなります。
port変更
sudo vim /etc/ssh/sshd_config
vimの使い方は調べてください。
PORTの番号を変えます。
ESCして:wqで保存終了
sshdサービスを再起動する
sudo systemctl restart sshd
VPS(KVM)サーバーコントロールパネルで変更したポートを解放する。
IPセキュリティ→インバウンドルール(ポート)一覧→設定を追加
プロトコルTCP、ポート番号、ルール名を入力して追加する
セキュリティグループ一覧→設定を追加→グループ名(newSSHにした)入力して
インバウンドルールに今追加したルール名を選択→+→追加する
VPS(KVM)サーバーコントロールパネル
→サーバー一覧→詳細→IPセキュリティ欄の右側にある"変更"をクリック
→追加したい項目で今作ったセキュリティグループをクリック→+→変更する
参考:https://ameblo.jp/hbnizm31/entry-12716674759.html
この段階でufw statusで以下のように変更したポートがあるか確認しなかったけど
なくてつながらなければufwの設定が必要です。次項参照
SSHのポート番号 ALLOW Anywhere
PortをIPアドレスで制限する
ポートの制御がどうなっているか、(/etc/sysconfigが無い。/etc/network/interfacesがない。)
といろいろ調べていて結局ufwが動いていることが分かった。
su
rootにパスワード
でrootに切り替え(rootに切り替えなくてもコマンドの前にsudoつければいい)
ufw status
Status: active
To Action From
-- ------ ----
80 ALLOW Anywhere
SSHのポート番号 ALLOW Anywhere
80 (v6) ALLOW Anywhere (v6)
SSHのポート番号 (v6) ALLOW Anywhere (v6)
IPアドレスで制限する場合(私はこっち)
ufw allow from 自分のIPアドレス(パソコンで接続しているところ) to any port SSHのポート番号
IPアドレスで制限しない場合
ufw allow from SSHのポート番号
設定確認(削除できるように番号付きで一覧表示)
ufw status numbered
To Action From
-- ------ ----
[ 1] 80 ALLOW IN Anywhere
[ 2] SSHのポート番号 ALLOW IN Anywhere
[ 3] SSHのポート番号 ALLOW IN 自分のIPアドレス
[ 4] 80 (v6) ALLOW IN Anywhere (v6)
[ 5] SSHのポート番号 (v6) ALLOW IN Anywhere (v6)
いらないものを削除
ufw delete 2
[ 5] SSHのポート番号 (v6) も消した(上の命令後だと[ 5]→[ 4]になっているので消すのは4)
UFWを再起動
systemctl restart ufw.service
確認
ufw status
To Action From
-- ------ ----
80 ALLOW Anywhere
SSHのポート番号 ALLOW IN 自分のIPアドレス
80 (v6) ALLOW Anywhere (v6)
最初接続できなかったが、なぜかできるようになった。
本当にIP制限できているかの確認は、他のIPがないので確認できない。
ただ適当なIPで制限してSSH接続するとつながらないので多分機能してるだろう。
IPセキュリティ
IPセキュリティについては
https://ameblo.jp/hbnizm31/entry-12716674759.htmlを参考にさせてもらいました。
インバウンドルール(ポート)でプロトコルとポートを選んで名前を付ける。1個づつ。
セキュリティグループでインバウンドルール(ポート)をグループにして名前を付ける。
サーバー詳細のIPセキュリティで開放するセキュリティグループを選択するということみたいです。
サーバー詳細のIPセキュリティを見てみると
デフォルトのセキュリティグループはICMP、Standardが選択されている。
ICMPは、よく調べてないが残しておいた方がよさそう?
StandardはHTTPS=443、HTTP (TCP)=80、SSHなので
これは削除し、上で新たにSSHのポートを変更したセキュリティグループ(newSSH)にHTTPS=443、HTTP (TCP)=80を加えて、こちらを使うことにした。
この状態で開放されているIPアドレス:ポート番号でブラウザでアクセスしてみると
:80(80の場合は省略してもいい)Apache2 Ubuntu Default Pageと出る。ufwの設定を変えて表示するかしないかの実験に使えるなと思った。実際IPアドレス制限の実験が簡単にできた。
:443 https://IPアドレスに自動で変わるが、VPS側で、まだsslの対応を何もしてないので「このページに到達できません」になる。あと今、ufwで443開放されてないが(デフォルトでどうなっていたか忘れた)今後https使うので開放しといた。
:0 「このページに到達できません」になる。ICPMがport0になっていたので、やってみたがプロトコルがTCPではなくicpmなので調べ方が分からない。
:SSHに設定したport 「このページは現在機能していません」になる。
まとめ
portの解放設定が、どうもよく分からない。これでいいのか若干、不安。
HTTPの80、HTTPSの443、SSH接続のポートの3つしか使わないつもりなので、
このまま先に進みます。
目次へ
イチゲをOFUSEで応援する(御質問でもOKです)Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)
コメント