初学者のVPSサーバー構築手順書(3)

それではセキュリテー強化のために以下を実行していきます。

・ 一般ユーザの作成
・ 公開鍵認証の設定
・ sudo 設定
・ SSH 接続時、root でのログインを禁止
・ SSH 接続時、パスワード認証を禁止

#一般ユーザーの作成

一般ユーザの作成は「useradd」コマンドを使う。

```
$ ssh root@[IPアドレス]
root@[IPアドレス]'s password: 
Last failed login: Sat Oct 19 22:34:57 JST 2019 from 218.92.0.171 on ssh:notty
There were 621 failed login attempts since the last successful login.
Last login: Sat Oct 19 17:35:04 2019 from kd0000000000.ppp-bb.dion.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

[root@tk0-000-00000 ~]# useradd kaiji
[root@tk0-000-00000 ~]# passwd kaiji
ユーザー kaiji のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。

```
って感じで作成して

```
[root@tk0-000-00000 ~]# ssh kaiji@000.00.000.000
The authenticity of host '000.00.000.000 (000.00.000.000)' can't be established.
ECDSA key fingerprint is SHA256:00000000000000000000000000000000000000000000.
ECDSA key fingerprint is MD5:00:0f:00:0b:00:d0:d0:db:0c:0d:f0:0f:00:db:a0:d0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '000.00.000.000' (ECDSA) to the list of known hosts.
kaiji@000.00.000.000's password: 

SAKURA Internet [Virtual Private Server SERVICE]

[kaiji@tk0-000-00000 ~]$ 

```
となればログイン成功（passwordは入力しても表示されないので色々keyを押さないように)

ちなみにログアウト方法はexit。

```
[kaiji@tk0-000-00000 ~]$ exit
ログアウト
Connection to 000.00.000.000 closed.
[root@tk0-000-00000 ~]# exit
ログアウト
Connection to 000.00.000. closed.

kaiji@tongawasan-mac ~/
```
ちなみに再度すぐLogInしようとしたら
```
ssh: connect to host 000.00.000.00 port 22: Operation timed out
```
と出るので確認のためping。

```
$ ping 160.16.102.15
PING 160.16.102.15 (160.16.102.15): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
Request timeout for icmp_seq 4
Request timeout for icmp_seq 5
```

うーむとなりがちでしたが。。

```
ssh kaiji@tk0-000-00000.vs.sakura.ne.jp
The authenticity of host 'tk2-227-23146.vs.sakura.ne.jp (160.16.102.150)' can't be established.
ECDSA key fingerprint is SHA256:000000000000000000000000000000000000000000.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'tk0-000-00000.vs.sakura.ne.jp' (ECDSA) to the list of known hosts.
root@tk0-000-00000.vs.sakura.ne.jp's password: 
Last failed login: Sat Oct 19 23:45:47 JST 2019 from 103.30.40.152 on ssh:notty
There were 47 failed login attempts since the last successful login.
Last login: Sat Oct 19 22:51:24 2019 from kd000000000000.ppp-bb.dion.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

[kaiji@tk0-000-00000 ~]# 

```
そりゃそうだって事で。。

#公開鍵認証の設定

作成したユーザに対して、公開鍵認証の設定を行います。PC などのクライアント側で SSH 接続用の鍵ペア（秘密鍵 id_rsa と、公開鍵 id_rsa.pub の組み合わせ ）を作成します。作成後はパスワードではなく、クライアント側の秘密鍵を使ったログインができるように、設定を行う。

##鍵を作る

```
[kaiji@tk0-000-00000 ~]$ ssh-keygen -t rsa 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kaiji/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/kaiji/.ssh/id_rsa.
Your public key has been saved in /home/kaiji/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:0000000000000000000000000000 kaiji@tk0-000-00000.vs.sakura.ne.jp
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|                 |
|                 |
|           0 0   |
|        0000000  |
|       0000000000|
|          0000000|
|         00000000|
|          0000000|
+----[SHA256]-----+
```
このパスワードは、鍵ファイル自体にかけるパスワードです。
実行すると色々聞かれましたが、基本的にEnterを押してスキップして大丈夫みたいです。

```
[kaiji@tk0-000-00000 ~]$ ls -a //作成できてるか確認
[kaiji@tk0-000-00000 ~]$ cd ~/.ssh/　//フォルダ移動
[kaiji@tk0-000-00000 ~]$ cat id_rsa.pub >> authorized_keys
[kaiji@tk0-000-00000 ~]$ chmod 600 authorized_keys //アクセス権
[kaiji@tk0-000-00000 ~]$ chmod 700 ~/.ssh　//自分のみ
```

PC側にも

```
$ logout //exitでも
$ scp kaiji@tk0-000-00000:~/.ssh/id_rsa ~/.ssh/
```

##秘密鍵をクライアントへ転送

やる事は一緒

```
$ cd ~/.ssh/
$ chmod 600 id_rsa
$ mv id_rsa kaiji //好きな名前でいいらしい
$ chmod 700 ~/.ssh
```

##鍵認証でサーバにアクセス

```
$ ssh –i ~/.ssh/kaiji/kaiji@tk0-000-00000.vs.sakura.ne.jp
Last login: Sun Oct 20 12:57:16 2019 from kd000000000000.ppp-bb.dion.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

[kaiji@tk0-000-00000 ~]$ 

```
となれば成功。

#sudo設定

一般ユーザで「sudo」コマンドが使えるように設定します。sudo とは、別のユーザとしてコマンドを実行するためのコマンドであり、設定ファイル /etc/sudoers を参照し、一般ユーザでも root と同じ権限で操作可能な状態にする。

##wheelグループに対するsudo設定の有効化

```
[kaiji@tk0-000-00000 ~]$ su
パスワード:
[root@tk0-000-00000 kaiji]# usermod -G wheel kaiji
[root@tk0-000-00000 kaiji]# exit
exit

```
CentOS7では、対象ユーザの次回ログイン以降、設定が有効になるらしいので一旦抜けます。

実行例（id コマンドを実行すると、root ユーザ権限だと分かります）：

```
$ ssh -i ~/.ssh/kaiji kaiji@tk0-000-00000.vs.sakura.ne.jp
Last login: Tue Oct 22 00:37:29 2019 from kd000000000000.ppp-bb.dion.ne.jp

SAKURA Internet [Virtual Private Server SERVICE]

[kaiji@tk0-000-00000 ~]$ sudo id

あなたはシステム管理者から通常の講習を受けたはずです。
これは通常、以下の3点に要約されます:

    #1) 他人のプライバシーを尊重すること。
    #2) タイプする前に考えること。
    #3) 大いなる力には大いなる責任が伴うこと。

[sudo] kaiji のパスワード:
uid=0(root) gid=0(root) groups=0(root)
```
って出れば有効化成功!

#SSH接続時、rootでのログイン、パスワード認証を禁止

設定を変更するには、まず、設定ファイル「/etc/ssh/sshd_config」を編集します。その前に、バックアップ用のファイルを作成しておきます（もしも設定変更後に sshd サーバが起動できなくなっても、元の sshd_config に戻せば復旧できるからです）。

次に「sudo vi /etc/ssh/sshd_config」などで設定ファイルを開いたら、ファイル中の２ヵ所を変更します。

```
#PermitRootLogin yes         # root でのログインを許可するかどうか
PermitRootLogin no           # yes を「no」（許可しない）に
```

下にスクロールして・・

```
#PasswordAuthentication yes  # パスワード認証を許可するかどうか
PasswordAuthentication no 
```

ファイルを保存後、sshd を再起動して設定を有効化。

```
$ sudo systemctl restart sshd 
```

正常に稼働しているかどうかは、次のようにコマンドを実行し、sshd が「Active: active (running)」なのを確認。

```
$ sudo systemctl status sshd
* sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-10-15 13:27:39 JST; 14s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
  Process: 4955 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 5057 (sshd)
   CGroup: /system.slice/sshd.service
           `-5057 /usr/sbin/sshd -D
```

もし「dead」（停止中）となっている場合は、正常に起動していません。原因を調べるためにはログの参照が必要です。ログは「journalctl -xe」コマンドで確認できます。多くの場合は sshd_config の記述ミスに関するエラーが表示されているでしょう。さくらの VPS の場合、もしログインができなくなっても、コントロールパネル上の「コンソール」機能を通して操作可能だとの事。

動作確認では、今のSS 画面はそのままにし、別のログイン画面を立ち上げての動作確認をお勧めらしいです。

あとは、root でログインを試みてもエラーとなり、パスワード認証もできなければ設定完了です

って事で以上で完了です。

ゼェ・・・ゼェ・・・次はLAMPのインストールにいよいよ移ります。