ConoHaのVPSでサーバーを動かす

2021年5月23日

前回はVALUE SERVERというレンタル共有サーバーから、ConoHaのVPSに引っ越した話をしました。

今回以降はしばらくそのとき行った設定などのメモをしておきます。

VPSの構成

項目
台数1
プランメモリ 1GB/CPU 2Core
OSUbuntu 20.04
VPSの構成

CPUを調べてみると…

$ lscpu 
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   46 bits physical, 48 bits virtual
CPU(s):                          2
On-line CPU(s) list:             0,1
Thread(s) per core:              1
Core(s) per socket:              1
Socket(s):                       2
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           79
Model name:                      Intel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHz
Stepping:                        1
CPU MHz:                         2397.222
BogoMIPS:                        4794.44
Hypervisor vendor:               KVM
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        8 MiB
L3 cache:                        32 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Vulnerable
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Mitigation; Speculative Store Bypass disabled via prctl and seccomp
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, IBPB conditional, IBRS_FW, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown
Flags:                           fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon 
                                 rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdran
                                 d hypervisor lahf_lm abm 3dnowprefetch cpuid_fault invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdse
                                 ed adx smap xsaveopt arat umip
$ 

こんな感じでした。VPS=Virtual Private Serverなわけで、仮想化されたマシンだからCPUのコア数とかは実機から割り当てられた分だけだと思いますけどね。ただし、Model nameのIntel(R) Xeon(R) CPU E5-2640 v4 @ 2.40GHzというのは通常実機と同じなので、実機だと10個のコアを持っているCPUです。同一スペックだとすると、5台分(HTまで入れてインチキしてたら10台分)くらいの仮想マシンが動いてるのでしょう。1コア当たりの性能的には最新CPUの1/3~1/2くらいのようです(https://www.cpu-monkey.com/ja/cpu-intel_xeon_e5_2640_v4-642)。

ただCPUの性能よりも、「メモリが1GBしかない」というの点が格安ノートでも4GBな昨今において、極めて貧相であり、ここに適切な対応をすることが鍵になるようです。

起動後に行ったこと

VPSを起動してWebのコンソールからrootログインしたら、まずは…

一般ユーザーの追加

をしました。

# adduser ユーザー名

聞かれたことに答えてユーザーが出来たら、そのユーザーでログインできることを確かめました。

sudoの設定

一般ユーザーでもsudoを使えないと困るので、visudoで上のユーザーがsudoで管理者権限を使用できるようにしました。rootと同じ権限を使うなら、

...
ユーザー名    ALL=(ALL:ALL) ALL
...

みたいな感じ。出来たらsudo su -みたいなコマンドで確認。これでrootのパスワードは保護できるようになるけど、逆に言えばこのユーザーのパスワードさえ分かればrootと同じ権限が得られるということなので、一長一短。とりあえず時間内であればパスワードを再度聞かれない利便性が得られる。

追加したユーザーを公開鍵認証でssh使用可能に

クライアント側で生成した公開鍵を~/.ssh/authorized_keysに追加し、クライアント側から

$ ssh ユーザー名@IPアドレス

とすることで、公開鍵認証によるssh接続を行った。

サーバーのグローバルIPはWeb画面のVPS設定にある。接続できたらWebコンソールから離れられる。

sshdのセキュリティ保護

一旦公開鍵認証による接続の確認が出来たので、/etc/ssh/sshd_configを以下のように変更し、パスワード認証を禁止した(公開鍵認証よりセキュリティが弱いので)。

...
#PasswordAuthentication yes
PasswordAuthentication no
...

同時にユーザー名が良く知られているrootでのssh接続を禁止した。

...
#PermitRootLogin yes
PermitRootLogin no
...

firewall

sshdは全ての操作が出来てしまう=非常にリスクが高いので、念には念を入れて、クライアントIPによるfirewallも入れておいた。firewallはkernel由来のiptables系でも、ユーザーランドのtcpwrapperでも構築できるが、制限がなく高速なのはiptables系なので、ubuntuのiptables操作コマンドufwを使用して、設定してみました。

目標

  • 自宅IPのみ全ポートincoming通信許可
  • httpsのみ全アドレスincoming通信許可
  • (incomingのdefaultはdenyである前提(デフォルトです))
  • ロギングしない(エラーが多いので)

操作

$ sudo ufw allow from 自宅IP
$ sudo ufw allow https
$ sudo ufw logging off
$ sudo ufw enable
$ sudo ufw status verbose
Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
443/tcp                    ALLOW IN    Anywhere                  
Anywhere                   ALLOW IN    (自宅IP)             
443/tcp (v6)               ALLOW IN    Anywhere (v6)

$

これでsshdに挑戦してくる通信が自宅IP以外弾かれます(https(443)以外は何も入ってこれない)。
自宅からは一切の制限がなくどのポートにも繋がります。
一度設定した内容は再起動しても残ります。

確認にはhttps://www.cman.jp/network/support/port.htmlなどが使用できます。
例えばsshのポート22などが弾かれる確認などをしました。
なお、自宅のIPアドレスがちょくちょく変わる人は変わる度に設定し直さないとならず、この方法は現実的ではありません。

まとめ

自宅からVPSに直IPでssh接続できるようになりました。
それだけです。

次回はドメインを設定してみます。

未分類ConoHa,ssh,ubuntu

Posted by first_user