2021年12月27日月曜日

商用OSのEOSを調べてみた!2021年末版

私は年末に主要な商用OSのEnd of Support (EOS) を調査しており、本記事ではその結果を記載する

結論を先に言うと、2022年中に完全にサポート期限を迎える製品はvSphere 6.0のみとなる。それ以外は2022年はまだサポートが継続できる。

2022年にサポート期限を迎える製品については、太字で強調表示した。

なお、本記事で「EOS」と表現する場合は、製品として完全にすべてのサポートが終了する期限を指すことにする。例えば、通常サポートが終了しても延長サポートが存在するような場合は、EOSとは表現しない。

Windows (PC用)

Windows 10以降は新しいWindows OSはリリースされないと思われていたが、2021年はまさかのWindows 11がリリースされた年となった。

結果、現時点でサポートが残っているWindows OSは、Windows 8.1、Windows 10、Windows 11の3つとなる。

Windows 8.1

Windows 8.1は固定ライフサイクルポリシーであり、2023年1月まで延長サポートが継続される。

OS名 サポート状況 サポート期限
Windows 8.1 延長サポート 2023/01/10

Windows 10

Windows 10は、モダンライフサイクルポリシーが適用される。なお、今までの単純なメインストリームサポートと延長サポートの構成を「固定ライフサイクルポリシー」と呼ぶ。

モダンライフサイクルポリシーについて簡単に説明すると、Windows 10では3月と9月の年2回、機能更新プログラムのリリースが予定されており、この機能更新プログラムのリリースから18ヶ月 (EnterpriseとEducation Editonについては、9月更新は+1年された30ヶ月) が、その機能更新プログラムを適用したWindows 10のサポート期間となる。

機能更新プログラムは2020年4月まではYYMMの形式で表現されていたが、最新の2020年10月のアップデートからは20H2という名称になっている。2021年は21H1、21H2といった名称でリリースされることになる。

また、Windows 10, version 21H2以降は、今までの半期に1回の機能更新プログラムリリースから、年1回下期のリリースのみに変更された。

以下に現時点におけるサポート中のバージョンを以下に記載する。

OS名 サポート期限 (Home and Pro) サポート期限 (Enterprise and Education)
Windows 10, version 20H2 2022/05/10 2023/05/09
Windows 10, version 21H1 2022/12/13 2022/12/13
Windows 10, version 21H2 2023/06/13 2024/06/11

Windows 11

Windows 11もモダンライフサイクルポリシーが適用されるが、サポート期間がWindows10より6ヶ月延長され、24ヶ月 (EnterpriseとEducation Editonについては36ヶ月) となった。

OS名 サポート期限 (Home and Pro) サポート期限 (Enterprise and Education)
Windows 11 (Version 21H2) 2023/10/10 2024/10/08

Windows Server

2021年はWindows Server 2022がリリースされた。

Windows Serverは現時点で、Windows Server 2012、2012 R2、2016、2019、2022の5つのバージョンがサポートされる状況となっている。

Windows Server 2016のメインストリームサポートが2022年に終了するものの、完全にサポート終了する製品はないため、しばらくは平和に過ごすことができそうだ。

OS名 サポート状況 サポート期限
Windows Server 2012 延長サポート 2023/10/10
Windows Server 2012 R2 延長サポート 2023/10/10
Windows Server 2016 メインストリームサポート 2022/01/11
Windows Server 2016 延長サポート 2027/01/12
Windows Server 2019 メインストリームサポート 2024/01/09
Windows Server 2019 延長サポート 2029/01/09
Windows Server 2022 メインストリームサポート 2026/10/13
Windows Server 2022 延長サポート 2031/10/14

VMware vSphere

昨年の2020年にvSphere 7.0がリリースされた以降、大きな動きはないが、2022年3月でvSphere 6.0はTECHNICAL GUIDANCEが終了するので注意。vSphere 6.5とvSphere 6.7はGENERAL SUPPORTが終了する。

OS名 サポート状況 サポート期限
vSphere 6.0 TECHNICAL GUIDANCE 2022/03/12
vSphere 6.5 GENERAL SUPPORT 2022/10/15
vSphere 6.5 TECHNICAL GUIDANCE 2023/11/15
vSphere 6.7 GENERAL SUPPORT 2022/10/15
vSphere 6.7 TECHNICAL GUIDANCE 2023/11/15
vSphere 7.0 GENERAL SUPPORT 2025/04/02
vSphere 7.0 TECHNICAL GUIDANCE 2027/04/02

Red Hat Enterprise Linux

現在、RHEL 6は延長サポートフェーズのみとなっている。RHEL 7及び8の延長サポートフェーズ期限は昨年までは未発表となっていたが、日程が確定したようだ。

また、2022年にはRHEL 9のリリースが控えている。

OS名 サポート状況 サポート期限
Red Hat Enterprise Linux 6 Extended Life-cycle Support 2024/06/30
Red Hat Enterprise Linux 7 Maintenance Support 2024/06/30
Red Hat Enterprise Linux 7 Extended Life-cycle Support 2026/06/30
Red Hat Enterprise Linux 8 Maintenance Support 2029/05/31
Red Hat Enterprise Linux 8 Extended Life-cycle Support 2031/05/31

AIX

AIXはTL (Technology Level)毎にサポート期限が異なる。本記事では各メジャーバージョンの最新TLのEOSを記載する。なお、2021年12月にAIX 7.3 TL0がリリースされているが、AIX 7.1、7.2のサポート期限に変更はないようだ。

OS名 サポート状況 サポート期限
AIX 7.1 TL5 Service Pack Support 2023/04/30 (予想)
AIX 7.2 TL5 Service Pack Support 2023/11/30 (予想)
AIX 7.3 TL0 Service Pack Support 2024/12/30 (予想)

HP-UX

HP-UXはあまり頻繁なバージョンアップはなく、2007年4月に発表されたHP-UX 11i v3が未だに最新という状況となっている。2020年末に引き続き、HP-UX 11i v2のサポート期限がさらに1年延長したようだ。

OS名 サポート状況 サポート期限
HP-UX 11i v2 延長サポート(開発元支援なし) 2021/12月→2022/12月→ 2023/12月
HP-UX 11i v3 (HPE Integrity) 標準サポート 2025/12月

参考

2021年12月25日土曜日

PowerShellでMTUを計測する

先日WireGuardを使って、外部からインターネット回線経由で自宅にVPN接続できるよう構成した。

しかし、インターネット回線で接続する際に、ファイル共有やSSHによる接続は問題なくできるが、リモートデスクトップ接続が黒い画面で接続・切断を繰り返すという事象が発生し悩まされた。

結論としては、MTUの問題であった。自宅のv6プラスのインターネット回線 (ドコモ光) は最大MTUサイズが1460byteであり、WireGuardのヘッダーサイズを考慮して、MTUサイズを小さくしなければ、フラグメント禁止フラグ (DFフラグ; Don’t Fragmentフラグ) が設定されたパケットが通過できず通信が不安定になっていたのだ。

具体的にWireGuardで必要となるヘッダーサイズは以下の通り。

項目 ヘッダーサイズ (byte)
IPヘッダー 20 (IPv4の場合)、40 (IPv6の場合)
UDPヘッダー 8
WireGuardで必要なヘッダーサイズ 32
合計 60 (IPv4の場合)、80 (IPv6の場合)

上記の通りとなるため、回線の最大MTUサイズから60または80byteを引いた値をWireGuardのサーバ側のMTU設定にて指定する必要がある。

今回は、このような状況を想定して、通過可能なMTUサイズをPowerShellを使って測定するコマンドを記載する。

MTUを計測用PowerShellコマンド

1. PowerShellコマンド

MTUサイズを1500から1ずつ下げながら、DFフラグを付けたpingを実行し、成功した際のMTUサイズを表示するコマンドとなる。ping先はwww.yahoo.co.jpとさせてもらった。

for($mtu = 1500; $mtu -ge 1420; $mtu--){
  ping -f -l ${mtu} -n 1 www.yahoo.co.jp > $null
  if($? -eq $true){
    Write-Host "回線のMTUは"($mtu + 28)"です。"
    break
  }
}

実際の実行結果を以降に示す。

2. ドコモ・AUをテザリングで使用した場合の測定結果

ドコモ・AUをテザリングで利用した際のMTUサイズは1500byteのようだ。

PS C:\> for($mtu = 1500; $mtu -ge 1420; $mtu--){
>>   ping -f -l ${mtu} -n 1 www.yahoo.co.jp > $null
>>   if($? -eq $true){
>>     Write-Host "回線のMTUは"($mtu + 28)"です。"
>>     break
>>   }
>> }
回線のMTUは 1500 です。

3. v6プラスのインターネット回線 (ドコモ光) の測定結果

v6プラスのインターネット回線 (ドコモ光) のMTUサイズは1460byteのようだ。

PS C:\> for($mtu = 1500; $mtu -ge 1420; $mtu--){
>>   ping -f -l ${mtu} -n 1 www.yahoo.co.jp > $null
>>   if($? -eq $true){
>>     Write-Host "回線のMTUは"($mtu + 28)"です。"
>>     break
>>   }
>> }
回線のMTUは 1460 です。

参考

2021年12月18日土曜日

VMware PowerCLIをLinuxにインストールする手順

VMware製品を操作できるPowerShellベースのCLIツールである「PowerCLI」は、PowerShellベースで動作するため、以前は必ずWindows環境から実行する必要があった。

しかし、以下記事で記載した通り、PowerShell 7.2はLinuxに対してもインストールすることができる

そのため、PowerCLIもモジュールをインポートすることでLinux環境で動作させることが可能となった。本記事では、PowerCLIをLinux環境で動かすための手順を記載する。なお、インターネット経由でオンラインでインストールする方法と、オフラインでインストールする2パターンの手順を記載する。

環境

導入環境は以下の通りとなる。RHELについては、7と8両方でインストール確認をしている。

  • RHEL 8.3
  • RHEL 7.6

RHELへPowerCLIをインストールする手順 (オンライン)

1. RHELへPowerShellをインストール

RHELへPowerShellをインストールする手順は、以下記事を参照いただきたい。

2. Install-ModuleにてPowerCLIをオンラインインストール

Install-Moduleを使うことで、インターネット経由でモジュールのインストールが可能となる。PowerShellにシェルを変更したのち、以下の通りインストールを実施する。

# pwsh
PowerShell 7.2.0
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS /root> Install-Module -Name VMware.PowerCLI

Untrusted repository
You are installing the modules from an untrusted repository. If you trust this
repository, change its InstallationPolicy value by running the Set-PSRepository
 cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "N"):y ←★"y"を選択
Installing package 'VMware.PowerCLI' [Installing dependent package 'VMware.V…]
  Installing package 'VMware.VimAutomation… [Downloaded 13.36 MB out of 14.8…]
↑★オンラインでモジュールがインストールされる

Get-Moduleコマンドでインストール後の確認を行うと、VMwareから始まる各種モジュールがインストールされていることが確認できる。今回はPowerCLIのバージョン12.4.1がインストールされていることがわかる。

PS /root> Get-Module -ListAvailable | where { $_.Name -like "VMware*" }

    Directory: /root/.local/share/powershell/Modules

ModuleType Version    PreRelease Name                                PSEdition
---------- -------    ---------- ----                                ---------
Script     12.4.0.18…            VMware.CloudServices                Desk
Script     7.0.2.178…            VMware.DeployAutomation             Desk
Script     7.0.2.178…            VMware.ImageBuilder                 Desk
Manifest   12.4.1.18…            VMware.PowerCLI                     Desk

~(中略)~

Script     12.2.0.17…            VMware.VimAutomation.vROps          Desk
Script     12.4.0.18…            VMware.VimAutomation.WorkloadManag… Desk
Script     12.1.0.16…            VMware.VumAutomation                Desk

3. vCenter Serverへ接続確認

それでは実際にPowerCLIのConnect-VIServerを使ってvCenter Serverに接続してみよう。

PS /root> Connect-VIServer 192.168.11.160 -Force

Specify Credential
Please specify server credential
User: administrator@vsphere.local
Password for user administrator@vsphere.local: ************


Name                           Port  User
----                           ----  ----
192.168.11.160                 443   VSPHERE.LOCAL\Administrator

問題なくvCenter Serverに接続できたので、Get-VMで仮想マシン一覧を確認してみよう。以下の通り、問題なく仮想マシンの情報を取得することができた。

PS /root> Get-VM

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
t1164vsrm            PoweredOn  2        8.000
testvm-02            PoweredOn  2        4.000
testvm               PoweredOn  2        4.000
t1160vcsa            PoweredOn  2        12.000
vCLS (2)             PoweredOn  1        0.125

以上でRHELへPowerCLIをオンラインでインストールする手順は完了となる。

RHELへPowerCLIをインストールする手順 (オフライン)

1. PowerCLIのファイルを入手

PowerCLIのモジュール一式は、以下サイトからzip形式でダウンロードできる。

今回はバージョン12.4.1をダウンロードした。

ダウンロードしたファイルは、インストール対象のLinuxへアップロードしておこう。

2. RHELへPowerShellをインストール

RHELへPowerShellをインストールする手順は、以下記事を参照いただきたい。

3. PowerCLIをオフラインインストール

PowerShellインストール後、一度pwshにてPowerShellのシェルに変更したのち抜けておく。これにより、PowerShellのモジュールをインストールするディレクトリがホームディレクトリ配下に作成される。

# pwsh
PowerShell 7.2.0
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS /root> exit

モジュールをインストールするディレクトリは、ホームディレクトリ配下の~/.local/share/powershell/Modules/となる

# ls -ld ~/.local/share/powershell/Modules/
drwxr-xr-x 2 root root 6 11月 21 10:59 .local/share/powershell/Modules/

本ディレクトリにダウンロードしたPowerCLIのzipファイルを配置し解凍する。これだけでインストールは完了となる。

# cp VMware-PowerCLI-12.4.1-18769701.zip ~/.local/share/powershell/Modules/
# cd ~/.local/share/powershell/Modules/
# unzip VMware-PowerCLI-12.4.1-18769701.zip
# ls -l
合計 79676
-rw-r--r-- 1 root root 81582404 11月 21 11:05 VMware-PowerCLI-12.4.1-18769701.zip
drwxr-xr-x 4 root root      154 11月 21 11:08 VMware.CloudServices
drwxr-xr-x 3 root root      142 11月 21 11:08 VMware.DeployAutomation

~(中略)~

drwxr-xr-x 4 root root      243 11月 21 11:08 VMware.VimAutomation.WorkloadManagement
drwxr-xr-x 4 root root      172 11月 21 11:08 VMware.VimAutomation.vROps
drwxr-xr-x 3 root root      117 11月 21 11:08 VMware.VumAutomation
# rm VMware-PowerCLI-12.4.1-18769701.zip

インストールが問題なくできていることをPowerShellからも確認しておこう。Get-Moduleコマンドにて確認すると、VMwareから始まる各種モジュールがインストールされていることが確認できる。

PS /root> Get-Module -ListAvailable | where { $_.Name -like "VMware*" }

    Directory: /root/.local/share/powershell/Modules

ModuleType Version    PreRelease Name                                PSEdition
---------- -------    ---------- ----                                ---------
Script     12.4.0.18…            VMware.CloudServices                Desk
Script     7.0.2.178…            VMware.DeployAutomation             Desk
Script     7.0.2.178…            VMware.ImageBuilder                 Desk
Manifest   12.4.1.18…            VMware.PowerCLI                     Desk

~(中略)~

Script     12.2.0.17…            VMware.VimAutomation.vROps          Desk
Script     12.4.0.18…            VMware.VimAutomation.WorkloadManag… Desk
Script     12.1.0.16…            VMware.VumAutomation                Desk

4. vCenter Serverへ接続確認

それでは実際にPowerCLIのConnect-VIServerを使ってvCenter Serverに接続してみよう。

PS /root> Connect-VIServer 192.168.11.160 -Force

Specify Credential
Please specify server credential
User: administrator@vsphere.local
Password for user administrator@vsphere.local: ************


Name                           Port  User
----                           ----  ----
192.168.11.160                 443   VSPHERE.LOCAL\Administrator

問題なくvCenter Serverに接続できたので、Get-VMで仮想マシン一覧を確認してみよう。以下の通り、問題なく仮想マシンの情報を取得することができた。

PS /root> Get-VM

Name                 PowerState Num CPUs MemoryGB
----                 ---------- -------- --------
t1164vsrm            PoweredOn  2        8.000
testvm-02            PoweredOn  2        4.000
testvm               PoweredOn  2        4.000
t1160vcsa            PoweredOn  2        12.000
vCLS (2)             PoweredOn  1        0.125

以上でRHELへPowerCLIをオフラインでインストールする手順は完了となる。

2021年12月11日土曜日

PowerShell 7.2をWindowsとLinuxにインストールする手順

PowerShell 7.2が2021/11/8にリリースされた。

PowerShell 7.2はWindowsだけでなく各種Linuxディストリビューションにおいても利用できるようなので、早速インストールしてみることにした。

本記事では、PowerShell 7.2をWindows ServerとLinux (RHEL) にインストールする手順を記載する。

環境

導入環境は以下の通りとなる。RHELについては、7と8両方でインストール確認をしている。

  • Windows Server 2019
  • RHEL 8.3
  • RHEL 7.6

Windowsへのインストール

1. MSIのインストーラをダウンロード

以下公式のGitHubからrpmをダウンロードする。ダウンロード対象のファイルはPowerShell-7.2.0-win-x64.msiとなる。

2. インストーラを起動しインストールを実施

ダウンロードしたMSIファイルをダブルクリックするとインストールウィザードが起動する。インストールウィザードでは、以下のようなPowerShellをモチーフにしたヒーローが表示される。

インストールウィザードではデフォルトの設定を選択すれば問題ないだろう。デフォルトの設定を選択することで、Windows Update時にPowerShell 7.2のアップデートの確認ができるようになる。

なお、インストールウィザードに表示されるPowerShellヒーローの活躍は、Microsoftより公開されている「Nanoman - Server of realm」というアメコミで確認できる。ぜひ読んでおこう!

3. PowerShell 7.2のコンソールを起動

PowerShell 7.2は通常のOSにインストールされているコンソールとは別に用意がされている。プログラムメニューでは「PowerShell 7」という名前となっているで、そちらを選択しコンソールを起動してみよう。

コンソールを起動すると、いつもの青い画面ではなく黒い画面のコンソールが起動する。試しに$PSVersionTableにてバージョンを確認してみると以下の通り7.2となっていることがわかる。

なお、通常のPowerShell (Windows Server 2019の場合は、バージョン5.1) は、引き続き利用することができる。

以上でWindows環境へのPowerShell 7.2の導入は完了となる。

RHELへのインストール

1. rpmをダウンロード

以下公式のGitHubからrpmをダウンロードする。ダウンロード対象のファイルはpowershell-lts-7.2.0-1.rh.x86_64.rpmとなる。

図14

2. rpmをインストール

PowerShellは特に依存関係なくインストールすることができる。

# rpm -ivh powershell-lts-7.2.0-1.rh.x86_64.rpm
警告: powershell-lts-7.2.0-1.rh.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID be1229cf: NOKEY
Verifying...                          ################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:powershell-lts-7.2.0-1.rh        ################################# [100%]

3. PowerShellにシェルを変更

PowerShellへのシェル変更はpwshコマンドにて行う。試しに$PSVersionTableにてバージョンを確認してみると以下の通り7.2となっていることがわかる。

# pwsh
PowerShell 7.2.0
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.

PS /root> $PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.2.0
PSEdition                      Core
GitCommitId                    7.2.0
OS                             Linux 3.10.0-957.48.1.el7.x86_64 #1 SMP Fri Mar 6 14:14:26 EST 2020
Platform                       Unix
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

シェルを変更せず、直接コマンドを実行する場合は-cオプションを用いる。

# pwsh -c "Get-Date"

2021年11月21日日曜日 15:29:19

.ps1ファイルを読み込ませて実行させる場合は、-fオプションを用いる。

# cat test.ps1
Get-Date
# pwsh -f test.ps1

2021年11月21日日曜日 15:31:37

以上でRHEL環境へのPowerShell 7.2の導入は完了となる。

参考

2021年12月4日土曜日

OpenLDAP入門③ (LinuxのSSSDを使ってOpenLDAPと認証連携する) 

前回及び前々回の記事において、OpenLDAPによるLDAPサーバ構築とLDAPS有効化を実現できた。今回は、実際にOpenLDAPサーバーに対してLDAPクライアントから認証を行うことにする。

RHELではLDAPクライアントとして、SSSD (System Security Services Daemon) と呼ばれるソフトウェアを利用できる。SSSDを使うことで、OpenLDAPにて登録したユーザを用いてOSへのログインを行うことができる。

本記事では、LinuxのSSSDを使ってOpenLDAPサーバと認証連携する手順を記載する。

環境

RHEL 7にてOpenLDAPサーバ (LDAPS有効化済み) を構築済みの環境において、同じくRHEL 7にてSSSDの設定を行い認証連携を行う。なお、RHEL 8においても一部手順が異なるだけで、ほぼ本記事に記載の手順でSSSDの設定は可能となる (手順が異なる箇所については本記事でも言及する)。

  • LDAPクライアントOS : Red Hat Enterprise Linux 7.7
  • OpenLDAPサーバOS : Red Hat Enterprise Linux 7.7
  • OpenLDAP : 2.4.44

OpenLDAPのドメイン等の情報は以下とする。

設定項目 設定値
ドメイン dc=example,dc=com
RootDN cn=Manager,dc=example,dc=com
OU ou=group,dc=example,dc=com
グループ cn=ldapgrp,ou=group,dc=example,dc=com
ユーザ1 uid=user01,ou=group,dc=example,dc=com
ユーザ2 uid=user01,ou=group,dc=example,dc=com

SSSD設定手順

1. SSSDをインストール

yumを用いてSSSDをインストールする。openldap-clientsはLDAP通信が問題なくできることの確認のためにインストールしておく。oddjob-mkhomedirはLDAP認証したユーザのホームディレクトリを自動生成するサービスとなる。

# yum install openldap-clients sssd sssd-ldap oddjob-mkhomedir -y

2. OpenLDAPサーバのサーバ証明書をコピー

LDAPSを使用する場合は、OpenLDAPサーバのサーバ証明書を登録しておく必要がある。前回記事で作成したldaps.crtを以下の通りコピーして配置する。

# cp ldaps.crt /etc/openldap/certs/core-dirsrv.ca.pem

3. OpenLDAPクライアントから認証情報を取得できることを確認

SSSDの設定を行う前に、ldapsearchコマンドでOpenLDAPサーバと問題なく通信できることを確認する。

OpenLDAPのクライアントの設定を行う前にldapsearchコマンドを実行すると、Can't contact LDAP serverのように通信に失敗することがわかる。

# ldapsearch -x -D "uid=user01,ou=group,dc=example,dc=com" -w password -b "dc=example,dc=com" -H "ldaps://192.168.11.117/"
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

以下の通りOpenLDAPのクライアントの設定を追加する。

# cat << EOF >> /etc/openldap/ldap.conf
URI ldap://192.168.11.117/
BASE ou=group,dc=example,dc=com
TLS_CACERT /etc/openldap/certs/core-dirsrv.ca.pem
EOF

再度ldapsearchコマンドを実行し、以下の通り登録されているグループやユーザの情報が出力されればOKとなる。

# ldapsearch -x -D "uid=user01,ou=group,dc=example,dc=com" -w password -b "dc=example,dc=com" -H "ldaps://192.168.11.117/"
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.com
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: example
o: Example Inc.

# group, example.com
dn: ou=group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group

~(以下略)~

4. SSSDを設定

それではSSSDの設定を行う。SSSDの設定ファイルはsssd.confとなるが、このファイルはデフォルトで存在しないため、以下の通り一から作成する。

# cat << EOF >> /etc/sssd/sssd.conf
[domain/default]
id_provider = ldap
autofs_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://192.168.11.117/
ldap_search_base = ou=group,dc=example,dc=com
ldap_id_use_start_tls = True
cache_credentials = True
ldap_tls_cacertdir = /etc/openldap/certs
ldap_tls_cacert = /etc/openldap/certs/core-dirsrv.ca.pem
ldap_tls_reqcert = hard

[sssd]
services = nss, pam, autofs
domains = default

[nss]
homedir_substring = /home
EOF

この設定ファイルは以下の通りパーミッションを設定することがセオリーのようなので、以下コマンドで設定しておこう。

# chmod 600 /etc/sssd/sssd.conf
# chown root:root /etc/sssd/sssd.conf

5. SSSDの有効化

SSSDの設定ファイルを作成したら、認証プロバイダーとしてSSSDを使用できるようにする。今回はRHEL 7がクライアントとなるため、authconfigコマンドにて設定する。RHEL 8の場合はauthselectコマンドを利用するため注意すること。

以下、RHEL 7とRHEL 8の設定コマンドを記載する。

RHEL 7の場合

# authconfig --update --enablesssd --enablesssdauth --enablemkhomedir

↓★確認コマンド。pam_sssとpam_mkhomedirがenableになっていることを確認
# authconfig --test | egrep 'pam_sss|pam_mkhomedir'
pam_sss is enabled by default
pam_mkhomedir or pam_oddjob_mkhomedir is enabled (umask=0077)

RHEL 8の場合

# authselect select sssd with-mkhomedir --force
プロファイル "sssd" が設定されました。
以下の nsswitch マップはプロファイルで上書きされます:
- passwd
- group
- netgroup
- automount
- services

Make sure that SSSD service is configured and enabled. See SSSD documentation for more information.

- with-mkhomedir is selected, make sure pam_oddjob_mkhomedir module
  is present and oddjobd service is enabled
  - systemctl enable oddjobd.service
  - systemctl start oddjobd.service

6. SSSDを再起動

ここで一度SSSDを再起動して、各種設定を反映させる。

# systemctl restart sssd oddjobd
# systemctl enable sssd oddjobd

今回の手順では問題は発生しないはずだが、SSSD再起動時に、以下のようなstatus=4/NOPERMISSIONのエラーが発生することがある。

# systemctl restart sssd oddjobd
Job for sssd.service failed because the control process exited with error code. See "systemctl status sssd.service" and "journalctl -xe" for details.
# systemctl status sssd -l

~(中略)~

10月 24 06:26:21 localhost.localdomain systemd[1]: Starting System Security Services Daemon...
10月 24 06:26:22 localhost.localdomain systemd[1]: sssd.service: main process exited, code=exited, status=4/NOPERMISSION
10月 24 06:26:22 localhost.localdomain systemd[1]: Failed to start System Security Services Daemon.
10月 24 06:26:22 localhost.localdomain systemd[1]: Unit sssd.service entered failed state.
10月 24 06:26:22 localhost.localdomain systemd[1]: sssd.service failed.

このエラーの原因はsssd.confが正しく記載されていないことが原因となる。authconfigコマンドにて、他オプションを指定して実行した場合は、sssd.confの一部設定が消えることがあるようなので、再度記載に問題がないか確認したうえで、サービス再起動をすること。私の遭遇した事象ではdomainsの設定が本来defaultであるところが空白になっており、サービス再起動に失敗していた。

[sssd]
services = nss, pam, autofs
domains =  ←★本来ここがdefaultになっている必要あり

7. LDAP登録ユーザにてログイン確認

最後に実際にSSHを用いてLDAP登録ユーザでログインできることを確認する。

Tera Termを用いてLDAPに登録されているuser01でログインする。なお、ドメイン名 (本環境ではexample.com) は不要となる。

特に設定に問題がなければ、以下の通りホームディレクトリが自動作成され、ログインに成功する。UIDやGIDを確認するとOpenLDAPサーバにて登録された番号となっていることも確認できる。

Creating home directory for user01.
Last login: Sat Oct 23 20:41:07 2021 from t1081w219.intrat.local
[user01@localhost ~]$ pwd
/home/user01
[user01@localhost ~]$ id
uid=10001(user01) gid=10000(ldapgrp) groups=10000(ldapgrp) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

以上で、SSSDを用いてにてOpenLDAPサーバと認証連携する手順は完了となる。

人気の投稿