VSI作成後の手順まとめ


[^1]: SELinuxは有効だがアクセス制御は行わず、禁止操作が行われた場合はログにだけ残す状態。

### はじめに
IBM Cloudで仮想サーバーを払い出した後、サーバー上で実施するべき基本操作についてまとめてみました。全ての操作が必須なわけではないので、一部省いて実施いただいても大丈夫です。

※rootユーザー用の秘密鍵の保存を含む、仮想サーバーの注文作業については本記事では扱いません。予めローカルに秘密鍵がダウンロードされた状態で始めてください。



### 1. サーバーに接続する

**ローカルPCから接続する場合、XX.XX.XXはサーバーの浮動IPアドレス**

まずサーバーへ接続が通るか確認する。
```
user1@AAA-PF3473C7:~$ ping XX.XX.XX.XX   
PING 10.244.0.5 (10.244.0.5) 56(84) bytes of data.
64 bytes from 10.244.0.5: icmp_seq=1 ttl=62 time=36.1 ms
^C
--- 10.244.0.5 ping statistics ---
7 packets transmitted, 7 received, 0% packet loss, time 6008ms
rtt min/avg/max/mdev = 29.848/33.315/38.754/3.124 ms
```
秘密鍵を使用して仮想サーバーへSSHで接続する。
```
user1@AAA-PF3473C7:~$ ssh -i <秘密鍵までのパス> root@XX.XX.XX.XX
The authenticity of host 'XX.XX.XX.XX (XX.XX.XX.XX)' can't be established.
ED25519 key fingerprint is SHA256:Gv5GpBrMgoKaWIzsl6xZAvydK3ZNn6F7gDAOeBva/wA.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
```
###   2. サーバーをアップデートする
```
[root@vsi ~]# yum repolist
Updating Subscription Management repositories.
repo id                                  repo name
ansible-2-for-rhel-8-x86_64-rpms         Red Hat Ansible Engine 2 for RHEL 8 x86_64 (RPMs)
rhel-8-for-x86_64-appstream-eus-rpms     Red Hat Enterprise Linux 8 for x86_64 - AppStream - Extended Update Support (RPMs)
rhel-8-for-x86_64-appstream-rpms         Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-baseos-eus-rpms        Red Hat Enterprise Linux 8 for x86_64 - BaseOS - Extended Update Support (RPMs)rhel-8-for-x86_64-baseos-rpms            Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-supplementary-eus-rpms Red Hat Enterprise Linux 8 for x86_64 - Supplementary - Extended Update Support (RPMs)
rhel-8-for-x86_64-supplementary-rpms     Red Hat Enterprise Linux 8 for x86_64 - Supplementary (RPMs)
[root@vsi-ft-ops ~]# yum update
Updating Subscription Management repositories.
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)                                 75 MB/s |  47 MB     00:00
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)                                   9.3 MB/s |  53 MB     00:05
・
・
・
```
### 3. サーバーのタイムゾーンを変更する
```
[root@vsi ~]# date
Thu Mar 30 20:28:09 EDT 2023
[root@vsi ~]# timedatectl set-timezone Asia/Tokyo
[root@vsi ~]# date
Fri Mar 31 09:29:27 JST 2023
```

### 4. SELinux のステータスをチェック

```
[root@vsi~]# getenforce
Permissive
```

`Enforce`だとサーバー使用時に考慮が必要になる。`Permissive`[^1]なら気にせず進んでOK。


https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-working_with_selinux-enabling_and_disabling_selinux

### 5. sudoが使えるグループを作成する
グループIDとして使える番号を確認した後、`sudo`というグループを作成する。
```
[root@vsi ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
・
・
・
vpcuser:x:1000:　　　　　　　　# 1000までグループIDが使われている

[root@vsi ~]# groupadd sudo -g 1001　    # グループIDとして1001を使用する
```
`visudo`を実行し、110行目のコメントアウトを外して`wheel`を`sudo`に変更する。

※行番号を表示する場合は、ノーマルモードで`:set number`と入力する。
```
[root@vsi ~]# visudo  
```

### 6. 作業ユーザーを追加する
ユーザーIDとして使える番号を確認した後、`sudoグループ`に属する`hoge1`というユーザーを作成する。

```
[root@vsi ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
・
・
・
vpcuser:x:1000:1000:VPC Cloud User:/home/vpcuser:/bin/bash　　# 1000までユーザーIDが使われている

[root@vsi ~]# useradd -g sudo hoge1　# sudoグループにユーザーを追加

[root@vsis ~]# ls /home
hoge1  vpcuser　　　　# ホームに作成したユーザーのディレクトリができていることを確認
```

`hoge1`で`sudo`を使用するとroot権限に切り替わることを確認。
```
[root@vsi ~]# su hoge1
[hoge1@vsi ~]$ sudo whoami
root
[hoge1@vsi-ft-ops ~]$ whoami
hoge1
```

`hoge1`を`developerグループ`に追加。`-aG`で他のグループから削除されることなくGで指定された補助グループに追加できる。
```
[hoge1@vsi ~]$ groupadd developer -g 1002
[hoge1@vsi ~]$ sudo usermod -aG developer hoge1
```

### 7. 作業ユーザーでSSH接続できるようにする

作業ユーザー用の秘密鍵を発行し、公開鍵の名前を`authorized_keys`に変更する。
```
[hoge1@vsi root]$ ssh-keygen　　　# 作業ユーザー用の秘密鍵を発行
Generating public/private rsa key pair.
Enter file in which to save the key (/home/hoge1/.ssh/id_rsa):
Created directory '/home/hoge1/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/hoge1/.ssh/id_rsa.
Your public key has been saved in /home/hoge11/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:25xf9wyWl2XeoSAdilyYtonhMdpnB8pR/cwawzKWWIE hoge1@vsi
The key's randomart image is:
+---[RSA 3072]----+
|      .oo        |
|     E..o.       |
|     =o=o.+.     |
|    =.X=*+o+.    |
|   . *.BS++o   .o|
|      o .=... .+=|
|        . +  .=.=|
|           . o =.|
|            .   o|
+----[SHA256]-----+

[hoge1@vsi root]$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
```
秘密鍵の中身を表示し、ローカルに保存する。

```
[hoge1@vsi root]$ cat ~/.ssh/id_rsa　
-----BEGIN OPENSSH PRIVATE KEY-----
・
・
・
-----END OPENSSH PRIVATE KEY-----
```

### 8. 作業ユーザーでSSH接続をする

秘密鍵のパーミッションによってエラーが出て接続できない場合は、パーミッションを`600`に変更する。
```
user1@AAA-PF3473C7:~$ ssh -i <7で保存した秘密鍵のパス>  hoge1@XX.XX.XX.XX
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '<7で保存した秘密鍵のパス>' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/<7で保存した秘密鍵のパス>": bad permissions
hoge1@XX.XX.XX.XX: Permission denied (publickey).

# 鍵ファイルの権限を0600に変更する
user1@AAA-PF3473C7:~$ ls -l <7で保存した秘密鍵のパス>
-rwxr-xr-x 1 user1 user1 2638 Mar 31 10:33 <7で保存した秘密鍵>
user1@AAA-PF3473C7:~$ chmod 0600 <7で保存した秘密鍵>
user1@AAA-PF3473C7:~$ ls -l <7で保存した秘密鍵>
-rw------- 1 user1 user1 2638 Mar 31 10:33 <7で保存した秘密鍵>

# SSH接続する
user1@AAA-PF3473C7:~$ ssh -i <7で保存した秘密鍵のパス> hoge1@XX.XX.XX.XX
Activate the web console with: systemctl enable --now cockpit.socket

Register this system with Red Hat Insights: insights-client --register
Create an account or view all your systems at https://red.ht/insights-dashboard
Last login: Tue Oct 10 08:21:40 2023 from YY.YY.YY.YY
```