Hinemos(監視ツール)を構築するまで② ~RHEL8 初期設定~

#はじめに
以下記事の続きです。
[Hinemos(監視ツール)を構築するまで① ~RHEL8 インストール~](https://qiita.com/railgun19772/items/492564c50902518cff62　"Hinemos(監視ツール)を構築するまで① ~RHEL8 インストール~")

今回は、以下の作業をしていきます。

1.SSH有効化
2.ライセンス登録 (RHEL Developer Subscription)
3.システムアップデート
4.ADドメイン参加
5.SSH 接続許可ADグループ指定 & rootログイン無効化

（もしかしたら、作業追加するかも・・・）

#RHEL8 初期設定
###0.コンソールログイン
前回インストールして、以下の画面まで表示されているので
rootアカウントでログインします。

```
login:root
Password:<インストール時に設定したrootパスワード>
```

![1.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1943845/a703fd7a-7b72-3ec3-63d6-50f3212e7d14.png)

###1.SSH有効化
以下のコマンドを実行して、SSH設定ファイルを編集モードにします。

```
# vi /etc/ssh/sshd.config
```

編集モード移行後、17行目のコメントを削除します。

```
#Port 22
↓
Port 22
```

設定ファイルを保存後、インストール時に設定したIPアドレスにSSH接続し
rootアカウントで認証することで、SSH接続が可能になります。

自分はADドメイン参加させるためにローカルアカウントを別には作成していないので
この時点ではrootログインNGの設定はしません。

###2.ライセンス登録 (RHEL Developer Subscription)
RHELはサブスクリプション登録しないと機能に制限がかかるので、初めに実施しておきます。

登録作業は、2段階に分けて実施します。
2.1.システムをポータルへ登録
2.2.サブスクリプションを登録
####2.1.システムをポータルへ登録
以下のコマンドを実行して、作成したVMをポータルに登録します。

```
# subscription-manager register --username <ユーザ名>
登録中: subscription.rhsm.redhat.com:443/subscription
パスワード:<パスワード>
　↓ 出力結果

このシステムは、次の ID で登録されました: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX893e
登録したシステム名: PRC-Hinemos11
```

ちなみに、ユーザ名はメールアドレスではないです。
（過去にメールアドレスだと思って失敗し続けました・・・）

####2.2.サブスクリプションを登録
まずは、以下のコマンドを実行して、自身のプールIDを確認します。

```
# subscription-manager list --available

　↓ 出力結果

+-------------------------------------------+
    利用可能なサブスクリプション
+-------------------------------------------+
サブスクリプション名:       Red Hat Developer Subscription for Individuals
提供:                     Red Hat Developer Tools (for RHEL Server for ARM)
                          ～～～～～なんかたくさん出てくる～～～～～
                         Red Hat OpenShift Enterprise JBoss EAP add-on Beta
SKU:                     RH99999
契約:
プール ID:                XXXXXXXXXXXXXXXXXXXXXXXXXXXX5296
管理の提供:               いいえ
数量:                    15
推奨:                    1
サービスタイプ:
ロール:                   Red Hat Enterprise Linux Server
                         Red Hat Enterprise Linux Workstation
                         Red Hat Enterprise Linux Compute Node
サービスレベル:            Self-Support
使用方法:                 Development/Test
アドオン:
サブスクリプションタイプ: Standard
開始:                     2021年08月04日
終了:                     2022年08月04日
エンタイトルメントタイプ: 物理
```

出力結果のプールIDを元に、以下のコマンドを実行してサブスクリプションを登録します。

```
# subscription-manager attach --pool=XXXXXXXXXXXXXXXXXXXXXXXXXXXX5296

　↓ 出力結果

サブスクリプションが正しく割り当てられました: Red Hat Developer Subscription for Individuals
```

サブスクリプションが正しく割り当てられましたと出力されれば、作業完了です。

###3.システムアップデート
~~インストール直後なので、セキュリティパッチの適用とパッケージアップデートをしていきます。~~
こちらは必要ありませんでした。（この次のコマンドで、合わせてアップデートされます）

```
# dnf update --security -y
～～～～～出力結果は長いので省略～～～～～
```

ちなみに、yumとdnfは何が違うんでしょ？と気になったので調べたところ
yumはpython2系、dnfはpython3系で、最終的にyumは消えゆく存在らしい・・・（ざっくり）
ちなみに、RHELの公式サイトはyumのままですね。（混在しているっぽい）
[セキュリティー更新のインストール] (https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/managing_and_monitoring_security_updates/installing-security-updates_managing-and-monitoring-security-updates "セキュリティー更新のインストール")

この後、パッケージアップデートをするために以下のコマンドを実行

```
# dnf update -y
～～～～～出力結果は長いので省略～～～～～
```

また、たくさん更新が入りましたが、これは最初から下のコマンドを実行するだけでも良い？
いまいち、違いが分かっていないです。（よろしければどなたかご教示ください）

両方更新が完了したら、一応再起動しておきます。

```
# reboot now
```

###4.ADドメイン参加
我が家ではWindows ServerによるActive Directoryサーバが稼働しているので
ドメインユーザでログイン出来るようにします。（別にRadius認証でも良いんですけど・・・）

####4.1.必要なパッケージの追加
ドメイン参加するには、以下のパッケージが必要見たいです。

+ realmd
+ sssd
+ oddjob
+ oddjob-mkhomedir
+ adcli
+ samba-common-tools
+ krb5-workstation

今回インストールした構成だと、samba-common-toolsとkrb5-workstationが不足してたので
追加でインストールするために以下のコマンドを実行します。

```
# dnf install -y samba-common-tools krb5-workstation 
～～～～～出力結果は長いので省略～～～～～
```

追加パッケージのインストールが完了出来たら、設定をしていきます。

####4.2.DNS向き先設定
まずは、DNSサーバがADサーバに向いていることを確認するために、以下のコマンドを実行します。
（出力結果は例です）

```
# nmcli device show ens192 | grep DNS

　↓ 出力結果

IP4.DNS[1]:                             1.1.1.1
IP4.DNS[2]:                             2.2.2.2
```
インストール時に設定しているので、問題なく反映されています。

ADサーバ以外を向いている場合は以下のコマンドを実行して、DNSサーバを設定します。

```
# nmcli connection modify ens192 ipv4.dns 1.1.1.1,2.2.2.2
```

設定が出来たら、NICの設定内容をリロードして、設定を反映させるために以下のコマンドを実行します。

```
# nmcli connection reload ens192
```
設定内容をリロードしたらSSH接続は切断されるので、再接続してください。

####4.3.ドメイン参加
続いて、ドメインを確認するために、以下のコマンドを実行します。

```
# realm discover CONTOSO.COM

　↓ 出力結果

contoso.com
  type: kerberos
  realm-name: CONTOSO.COM
  domain-name: contoso.com
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: oddjob
  required-package: oddjob-mkhomedir
  required-package: sssd
  required-package: adcli
  required-package: samba-common-tools
```

続いて、ドメインに参加させていくために以下のコマンドを実行します。
デフォルトではAdministratorアカウントが使用されますが
我が家では無効化しているので、-Uオプションで認証ユーザを指定します。
コマンド実行後パスワードを求められるので、パスワードを入力します。

```
# realm join contoso.com -U <Domain Adminsのユーザ>
<Domain Adminsのユーザ> に対するパスワード:
```

正常にドメイン参加が完了した場合は、何も表示されないので
以下のコマンドを実行して、ドメインユーザが参照可能かを確認します。

```
# id <Domain User>

　↓ 出力結果（見やすいように改行してますが、実際は1行で表示されます）

uid=0000000004(<Domain User>@contoso.com)
gid=0000000013(domain users@contoso.com)
groups=0000000013(domain users@contoso.com),
       0000000012(domain admins@contoso.com)
```

####4.4.ドメインアカウント認証時のドメイン入力省略設定
最後に、ドメイン入力の省略設定をしていきます。（@consto.com の入力を不要にする）
これは設定しなくても良いのですが、私はローカルにアカウントを作成しないのと
少しでも楽をしたいので必須の設定です・・・

以下のコマンドを実行して、設定ファイルを編集モードにします。

```
# vi /etc/sssd/sssd.conf
```

編集モード移行後、16行目の設定をtrueからfalseに変更します。

```
use_fully_qualified_names = True
　↓
use_fully_qualified_names = False
```

設定ファイルを保存後、以下のコマンドを実行してsssdのサービスを再起動します。

```
# systemctl restart sssd
```

sssdサービスの再起動が完了したら、ドメインアカウントを使用してSSH接続し
正常に接続出来ることを確認出来ればOKです。

###5.SSH 接続許可ADグループ指定 & rootログイン無効化
####5.1.SSH 接続許可ADグループ指定
今の状態では、ドメインに所属する全ユーザがSSH接続出来てしまうため
接続を許可するグループを指定するために、以下のコマンドを実行します。

```
# realm permit -g 'domain admins'
```

試しに、domain adminsに所属しないアカウントでログインしたところ
アカウント認証後に即切断されました。（上記コマンド実行前は、きちんとSSH接続出来ました）

####5.2.SSH rootログイン無効化
さて、ドメインユーザでの接続も設定完了したので、rootで直接SSHは接続出来ないようにします。
以下のコマンドを実行し、SSH設定ファイルを編集モードにします。

```
# vi /etc/ssh/sshd_config
```
編集モード移行後、43行目の設定をyesからnoに変更します。

```
PermitRootLogin yes
　↓
PermitRootLogin no
```

設定ファイルを保存後、以下のコマンドを実行してSSHサービスを再起動します。

```
# systemctl status sshd
```

サービス再起動後は、無事rootログインが出来なくなりました。

###最後に
とりあえず、普段している（はずの）設定までは実施しました。
有識者の方々からすると、他にもこういう設定した方が良いよなどあるかもしれません。
その際は、コメントにてご教示頂けますと幸いです。

次回は、いよいよHinemosをインストールしていきます。
（インストールしてないのに、Hinemosタグつけるのもどうなんだか・・・）