dockerコンテナ使ってredhat9クローン(almalinux)からLDAPS認証してssh接続

IBMがredhatを含めちゃった数年前、なんか嫌~な感じがしてた。

やっぱりというか、centosの役割が変わってdockerhubからcentos8のイメージがなくなってた。

前に作ったldaps接続を、イメージからコンテナ作り直すことができない。

そこに、redhat9がリリースされてた。

業務ではほとんどがredhatとかamazonlinuxを使う。
今はたまたまredhatがほとんど。

十分なテスト環境をいつも使えるわけじゃないから、研究・検証・勉強のためにはdockerを使って環境作って知見を得る。

centosが使えないなら、redhatのクローン探しからやりなおしてldap認証やったろやんけ。

コンテナでldapsサーバ作る箇所はそのままで、接続元をredhat8/9のクローンOSで置き換えてみた。

redhatクローンOSの選択

いくつかある。
ただし、dockerイメージがないと自分には使えない。

ubuntu22にベースOSを変えたときusb3のディスクを高速なssdに変えたから、ディスクのI/O性能が数倍よくなって、めっちゃコンテナ作成速度も上がった。

結論

redhat8/9のイメージがdockerhubにあったけど、結局は使えなかった。

理由はパッケージの制限があってsssd/oddjobdがインストールできなかったから。

redhat面倒くさー。
やっぱりクローン使おう。

結局は、openldapのLDAPを使い、クライアント側はredhatクローンとしてalmalinuxの8.6/9.0を使い、OSへのログインをLDAP認証させた。

dockerの作業フォルダ

こんな感じ。

/docker
|--docker-compose.yml
|--nariDockerDat
|  |--cl_red8_Dockerfile
|  |--cl_red8 ★1
|  |  |--download
|  |  |--script
|  |--cl_red9_Dockerfile
|  |--cl_red9 ★2
|  |  |--download
|  |  |--script
|  |--sv_ldap
|  |  |--gvisExport.ldif
|--nariDockerSys ★3

★1と★2のcl_red8/cl_red9はクローンOSのための永続化領域。

それぞれscriptのフォルダにはdnfするときのスクリプトとか、crontabに登録したい内容が入ってる。

scriptフォルダとか

ちょっと脱線。

たとえば上記のフォルダ構造には「cl_ubu20」ってのも本当はあって、そこにもscriptフォルダはある。

どのscriptフォルダにも800_crontab.txtとか810_dnfUpdate.shと810_aptUpdate.shが存在し、「sh ./810」って入力してTABキーで入力補完するとOSの更新がされるようにしてる。

中身は、

dnf clean all
dnf update

だったり、

apt autoremove
apt clean
apt update
apt upgrade

だったりする。OSを複数使い分けてるとき、やりたいことを1つのスクリプトにまとめておいて、同じ番号で始まるようにしておくと即座に実行できる。

複数のlinux/unixを使ってても混乱せずにすむし、新しい役割のOSを使うとしても別のscriptフォルダをベースにして作れば、また同じように使える。

solaris->turbolinux->mac->redhat->centos->ubuntuって変遷。
solarisは2002年からなのでけっこう長いこと使ってる。
最初は物理マシンだったのが、途中でvmになっていき今はコンテナ使うけど内容は同じようなものが入ってる。

当時はaptとかyum/dnfはなかったけど、901_OSstop.shが一番古いスクリプトなんじゃないか。

chronyが今は使えるけど、rootのcrontabにはntpdateとかも入ってたっけ。

downloadフォルダとか

パッケージ作成にしたモジュールとか、壁紙とか鍵ファイルとかを置いとく。

ldapsでは.crtファイルをサーバからコピーするから、そのために使う。

sv_ldapには、以前に作ったldapのユーザ情報が入ってる。

dockerのイメージとかコンテナの置き場

★3はdockerのイメージが入ってる。
dockerそのものの起動でこう書いて使ってる。
–data-rootで★3のフォルダを指定する。

nariDockerSysのフォルダにはdockerのシステムデータが入ってる。

builder   containers    image    plugins   swarm  trust
buildkit  devicemapper  network  runtimes  tmp    volumes

この中身はあんまり知らないけど、知らん間にけっこう肥え太る。
特にimageのディレクトリは膨れる。

気が向いたら全抹消して作り直す。
前はusb3のディスクにvmdkファイルを作ってvmにマウントしてたのを、最近usb3やめてssdのディスクにしたら、コンテナ操作の応答速度が上がった。

systemctlでdockerそのものの起動するときの/lib/systemd/system/docker.serviceには起動オプションが指定できるので書いてる。

ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock --data-root /docker/nariDockerSys

google cloudではディレクトリ構造が若干違うけど、dockerの起動はこう書いてる。

ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock --data-root /gvis/nari/nariDocs/Docker/nariDockerSys

dockerfileの内容

centos8のときのdockerfileを使って、ベースになるイメージ指定だけを変更する。

teraterm接続できるようにsshd入れて、日本語が使えるようにしてる。あとはman読みたいことがあるから入れとく。

1行目にあるFROM xxxx:xxの箇所をdockerhubにあるコンテナイメージのタグ名で書く。最終的にはFROM almalinux:9.0って書いた。

redhatクローンだったら、ストレートに動くはず。
これをベースにして、cl_red8_Dockerfile/cl_red9_Dockerfileってファイルを作る。

FROM xxxx:xx
MAINTAINER "nari"

# dnf update and clean
RUN dnf -y update && dnf clean all

# sshdをインストール
RUN dnf -y install openssh-server
EXPOSE 22

# 開発用ツールをまとめて入れる
RUN dnf -y group install 'Development Tools'

# git入れる
RUN dnf -y install git

# LDAP関連は後で入れる
## RUN dnf -y install openssl openldap-clients
## RUN dnf -y install sssd sssd-tools sssd-ldap
## RUN dnf -y install oddjob-mkhomedir

# passwdをインストール
RUN dnf -y install passwd

# 言語と日付を日本語に設定
RUN dnf -y install langpacks-ja \
 && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ENV LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

# 日本語を恒久化
RUN echo 'LANG="ja_JP.UTF-8"'   >> /etc/profile
RUN echo 'LANGUAGE="ja_JP:ja"'  >> /etc/profile
RUN echo 'LC_ALL="ja_JP.UTF-8"' >> /etc/profile

# manをインストール
RUN dnf -y install man

# dnfのクリーンアップ
RUN dnf clean all

# ユーザを追加(パスワード設定は"docker exec -it"を使ってbashから後で行う)
RUN useradd nari

RUN systemctl enable sshd.service

CMD ["/sbin/init"]

docker-composeに書き足す内容

mariadbとかdjangoも動かしてるけど、クライアントOSについて書き足す。
dockerコンテナとイメージを全部潰しても、こう書いておけばすぐ作り直してくれるし、/gvis/scriptとかは維持される

  cl_red8:
    image: redhat:8gvis
    privileged: true
    hostname: clred8
    build: 
      context: ./nariDockerDat
      dockerfile: cl_red8_Dockerfile
    ports:
      - "21022:22"
    volumes:
      - ./nariDockerDat/cl_red8:/gvis

  cl_red9:
    image: redhat:9gvis
    privileged: true
    hostname: clred9
    build: 
      context: ./nariDockerDat
      dockerfile: cl_red9_Dockerfile
    ports:
      - "22022:22"
    volumes:
      - ./nariDockerDat/cl_red9:/gvis

dockerhubで公開されてるか

dockerhubにはdockerで使うイメージがたくさん入ってる。

どっちかというと、OSのイメージというよりアプリケーションのイメージがたくさん置いてある気がする。

mariadbとかnginxとか、サービスを使うためのイメージがあって構築をスクリプト化することの楽しさを教えてくれる。

企業が自社の製品を公開していることもあって、oracle DATABASEを「勉強用ならどうぞ」って使わせてくれるのは最初驚いた。

スーパーの肉売り場で「A5ランクの神戸牛ですー、おひとつどうぞー」みたいな感じか。

A5ランクの神戸牛もoracleも濃すぎるから、どっちも苦手。

おいしい出汁で食べる明石焼きとか、pythonとか、もうちょっとシンプルでしなやかな味わいがええなぁ。

アプリケーションじゃなく純粋にOS使いたければ、そういうイメージも公開されてる。redhatも存在することに今さら気づいた。

redhatとそのクローン

redhatのプロフィールがdockerhubにある。
redhatは長く扱ってるけど、centos使ってる時期が長かったので最近気づいた。

ubi(universal base image)っていう名前で、ubi8-initとかubi8-minimalとかある。

redhat8のubi

まずはredhat。

ldaps認証のテストに使えるのか試そうとすると、No match for argument: sssdってなって撃沈された。

コンパイルしてsssd/oddjobdとか入れる方法があるんかもしれんけど、ldaps使う検証が目的やから、そんな面倒なことやらん。

[root@clred8 script]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.6 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.6"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.6 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.6
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.6"
[root@clred8 script]# dnf install sssd
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 0:52:14 ago on Tue Jun 21 21:03:53 2022.
No match for argument: sssd
Error: Unable to find a match: sssd
[root@clred8 script]#

ダメ元でredhat9のもやったけど、sssdあらへんって同じ結果やった。

[root@clred9 script]# cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.0 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.0"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.0 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/9/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.0"
[root@clred9 script]#
[root@clred9 script]# dnf install sssd
Updating Subscription Management repositories.
Unable to read consumer identity
Subscription Manager is operating in container mode.

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 0:10:14 ago on Tue Jun 21 21:43:55 2022.
No match for argument: sssd
Error: Unable to find a match: sssd
[root@clred9 script]#

イマイチ使えんな。
redhat、はい消えた~。

rocky linux

centosなき後のredhatクローン選びを考察されてるサイトを読ませてもらうと、いくつか候補があったうちの1つにrocky linuxがあった。

本家のサイト見たら、8.6が最新やった。
dockerhubのタグ見たら8.5って書いてた。

8.5? 8.6? どっちなん?
よさそうかもって思ったら、来月にならな9が出てこんらしい。

Rocky Linux 9.0 will be ready for general release in the June - July 2022 timeframe after thorough testing and validation.

今すぐ8.6と9.0使いたいし。
rocky、はい消えた~。

ただし、後々dockerfileの1行目にFROM rockylinux:8.5とか書く候補にはなる。

ログ捨てたけど、dockerfileに書いてコンテナ起動してみたらssh接続してdnfできたし、なぜかタグに8.5って書いたのにos-releaseをcatしたら8.6って表示された。

まだできて期間短いみたい。
そのうち整備されるのかも。

alma linux

他にもalmaってのがあるそうな。

本家のサイト見たら、9.0が最新やった。8.6もある。

dockerhubのタグにも9.0と8.6があった。

いったんこれ使ってみる。

teratermで8.6へ接続

コンテナ起動させてtera termで8.6へ接続したらこんな感じ。
おお、行けるやん。

Last login: Fri Jun 24 06:08:37 2022 from 172.16.17.71
[nari@clred8 ~]$ su -
Password:
Last login: 金  6月 24 06:08:37 JST 2022 on pts/0
[root@clred8 ~]# systemctl status sshd | grep Active
   Active: active (running) since Fri 2022-06-24 03:35:38 JST; 2h 55min ago
           mq10242 grep --color=auto Active
[root@clred8 ~]# cd /gvis/script
[root@clred8 script]# df -h
Filesystem                                                                                         Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:16-20187064-10dc45437c678bc578797a875b555dc78f3d81500c6f63c3586dd276cae66bd8   45G  1.5G   44G   4% /
tmpfs                                                                                               64M     0   64M   0% /dev
shm                                                                                                 64M     0   64M   0% /dev/shm
/dev/sdb                                                                                           629G  106G  492G  18% /gvis
tmpfs                                                                                              7.8G  9.0M  7.8G   1% /run
[root@clred8 script]# cat /etc/redhat-release
AlmaLinux release 8.6 (Sky Tiger)
[root@clred8 script]#
teratermで9.0へ接続

9.0へ接続したらこんな感じ。
こっちも行けるやん。

Last login: Fri Jun 24 03:06:03 2022 from 172.16.17.71
[nari@clred9 ~]$ su -
Password:
Last login: 金  6月 24 03:06:03 JST 2022 on pts/0
[root@clred9 ~]# systemctl status sshd | grep Active
     Active: active (running) since Fri 2022-06-24 03:35:31 JST; 2h 55min ago
             mq8030 grep --color=auto Active
[root@clred9 ~]# cd /gvis/script
[root@clred9 script]# df -h
Filesystem                                                                                         Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:16-20187064-3a0d7c8b003a96d7b5784ff7b3799cff124f3023504d2355b38a8066576b60b3   45G  2.0G   44G   5% /
tmpfs                                                                                               64M     0   64M   0% /dev
shm                                                                                                 64M     0   64M   0% /dev/shm
/dev/sdb                                                                                           629G  106G  492G  18% /gvis
tmpfs                                                                                              3.2G  9.1M  3.2G   1% /run
[root@clred9 script]# cat /etc/redhat-release
AlmaLinux release 9.0 (Emerald Puma)
[root@clred9 script]#

redhatクローンの設定

dockerfileでイメージをビルドしてコンテナ起動させたら、直後にはrootと一般ユーザのパスワード設定しておく。それからtera termの接続スクリプトにも書いておく。

パスワード設定はこんな感じ。

nari@nafslinux-ubu22:/docker$ docker exec -it docker-cl_red8-1 bash
[root@clred8 /]# passwd root
Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@clred8 /]# passwd nari
Changing password for user nari.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@clred8 /]# exit
exit
nari@nafslinux-ubu22:/docker$

tera termのマクロはこう書いておく。
connectするときのホスト名の末尾にdocker-compose.ymlに書いたポート番号をつけて、passwdのパラメータにさっき設定したパスワードを書いとく。

connect 'naFSlinux.intra.gavann-it.com:21022 /ssh /auth=password /user=nari /passwd=xxxxxxxx /F=Y:\94_connect\connect\teraIni\blue.INI'

wait "]$"
sendln "su -"

wait "Password:"
sendln "xxxxxxxx"

wait "]#"
sendln "systemctl status sshd | grep Active"

wait "]#"
sendln "cd /gvis/script"

wait "]#"
sendln "df -h"

settitle '118_naFSlinux-SSH-DockerRedhat8'

openldapのコンテナ起動

前にやったのと同じ。
違うのはベースで動かしているOSが当時はubuntu20で、今はubuntu22っていうだけでdockerコンテナには何も影響ない。

電子証明書を発行しなおしたかったからdockerコンテナをいったん停止・削除したけど、ストレートに動く。

ldifファイルをインポートしたら、当時のposixユーザもそのまま使える。

openldap動かして電子証明書を取ってきたものを、永続化領域を通じてalmalinux8.6/9.0にそれぞれ置いた。

[root@clred8 download]# cp -p /gvis/download/ldap.crt /etc/openldap/certs/
[root@clred8 download]# cd /etc/openldap/certs
[root@clred8 certs]# ls -l
total 4
-rwxr--r-- 1 nari nari 1099  6月 23 07:21 ldap.crt
[root@clred8 certs]# chown root:root ./ldap.crt
[root@clred8 certs]# chmod 600 ./ldap.crt
[root@clred9 script]# cp -p /gvis/download/ldap.crt /etc/openldap/certs/
[root@clred9 script]# cd /etc/openldap/certs
[root@clred9 certs]# ls -l
total 4
-rwxr--r-- 1 nari nari 1099  6月 23 07:21 ldap.crt
[root@clred9 certs]# chown root:root ./ldap.crt
[root@clred9 certs]# chmod 600 ./ldap.crt

redhatクローンからの設定と接続

centos8のときと同じ。
同じやけど、8.6/9.0でどう変わるのかやってみた。

dnf結果のバージョンがほんの少し違うだけで、ほぼ変わらん。

dnfでインストールする

dnfでインストールする内容はこんな感じ。
最初authselect入れるの忘れてた。

# dnf install nmap
# dnf install openssl openldap-clients
# dnf install sssd sssd-tools sssd-ldap
# dnf install oddjob-mkhomedir
# dnf install authselect

8.6のdnf結果

インストールした結果8.6のクローンではこうなる。

[root@clred8 script]# dnf list installed | egrep 'openssl|openldap-clients|sssd|sssd-tools|sssd-ldap|oddjob-mkhomedir|authselect'
authselect.x86_64                           1.2.2-3.el8                             @baseos
authselect-libs.x86_64                      1.2.2-3.el8                             @baseos
oddjob-mkhomedir.x86_64                     0.34.7-1.el8                            @appstream
openldap-clients.x86_64                     2.4.46-18.el8                           @baseos
openssl.x86_64                              1:1.1.1k-6.el8_5                        @baseos
openssl-libs.x86_64                         1:1.1.1k-6.el8_5                        @System
python3-sssdconfig.noarch                   2.6.2-4.el8_6                           @baseos
sssd.x86_64                                 2.6.2-4.el8_6                           @baseos
sssd-ad.x86_64                              2.6.2-4.el8_6                           @baseos
sssd-client.x86_64                          2.6.2-4.el8_6                           @baseos
sssd-common.x86_64                          2.6.2-4.el8_6                           @baseos
sssd-common-pac.x86_64                      2.6.2-4.el8_6                           @baseos
sssd-dbus.x86_64                            2.6.2-4.el8_6                           @baseos
sssd-ipa.x86_64                             2.6.2-4.el8_6                           @baseos
sssd-krb5.x86_64                            2.6.2-4.el8_6                           @baseos
sssd-krb5-common.x86_64                     2.6.2-4.el8_6                           @baseos
sssd-ldap.x86_64                            2.6.2-4.el8_6                           @baseos
sssd-nfs-idmap.x86_64                       2.6.2-4.el8_6                           @baseos
sssd-proxy.x86_64                           2.6.2-4.el8_6                           @baseos
sssd-tools.x86_64                           2.6.2-4.el8_6                           @baseos
[root@clred8 script]#

9.0のdnf結果

9.0のクローンではこうなる。

[root@clred9 script]# dnf list installed | egrep 'openssl|openldap-clients|sssd|sssd-tools|sssd-ldap|oddjob-mkhomedir|authselect'
authselect.x86_64                           1.2.3-7.el9                      @baseos
authselect-libs.x86_64                      1.2.3-7.el9                      @baseos
oddjob-mkhomedir.x86_64                     0.34.7-5.el9                     @appstream
openldap-clients.x86_64                     2.4.59-4.el9_0                   @baseos
openssl.x86_64                              1:3.0.1-23.el9_0                 @BaseOS
openssl-libs.x86_64                         1:3.0.1-23.el9_0                 @BaseOS
python3-sssdconfig.noarch                   2.6.2-4.el9_0                    @baseos
sssd.x86_64                                 2.6.2-4.el9_0                    @baseos
sssd-ad.x86_64                              2.6.2-4.el9_0                    @baseos
sssd-client.x86_64                          2.6.2-4.el9_0                    @baseos
sssd-common.x86_64                          2.6.2-4.el9_0                    @baseos
sssd-common-pac.x86_64                      2.6.2-4.el9_0                    @baseos
sssd-dbus.x86_64                            2.6.2-4.el9_0                    @baseos
sssd-ipa.x86_64                             2.6.2-4.el9_0                    @baseos
sssd-krb5.x86_64                            2.6.2-4.el9_0                    @baseos
sssd-krb5-common.x86_64                     2.6.2-4.el9_0                    @baseos
sssd-ldap.x86_64                            2.6.2-4.el9_0                    @baseos
sssd-proxy.x86_64                           2.6.2-4.el9_0                    @baseos
sssd-tools.x86_64                           2.6.2-4.el9_0                    @baseos
[root@clred9 script]#

ldapsのポート使えるか確認

普通に使える。

8.6のnmap結果

[root@clred8 ~]# nmap -p636 -Pn svldap-server
Starting Nmap 7.70 ( https://nmap.org ) at 2022-06-24 03:39 JST
Nmap scan report for svldap-server (172.18.0.5)
Host is up (0.00013s latency).
rDNS record for 172.18.0.5: svldap-server.docker_default

PORT    STATE SERVICE
636/tcp open  ldapssl
MAC Address: 02:42:AC:12:00:05 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.68 seconds
[root@clred8 ~]#

9.0のnmap結果

[root@clred9 ~]# nmap -p636 -Pn svldap-server
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times will be slower.
Starting Nmap 7.91 ( https://nmap.org ) at 2022-06-24 03:39 JST
Nmap scan report for svldap-server (172.18.0.5)
Host is up (0.000099s latency).
rDNS record for 172.18.0.5: svldap-server.docker_default

PORT    STATE SERVICE
636/tcp open  ldapssl
MAC Address: 02:42:AC:12:00:05 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
[root@clred9 ~]#

設定ファイルいじる

これも前にやったのと同じ。

8.6/9.0どっちも同じ設定を入れた。

/etc/openldap/ldap.confの設定

このファイルは存在するから追記。

TLS_CACERT      /etc/openldap/certs/ldap.crt    ←★さっきの証明書ファイル
URI             ldaps://svldap-server           ←★dockerコンテナのldapsサーバ
BASE            dc=intra-gavann-it,dc=com

/etc/sssd/sssd.confの設定

このファイルはないから作成。

[sssd]
debug_level = 4
services = nss, pam, ifp, sudo
domains = gvis

[nss]
homedir_substring = /home 
filter_groups = root 
filter_users = root

[pam]

[sudo]

[domain/gvis]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
sudo_provider = ldap
autofs_provider = ldap
cache_credentials = True
case_sensitive = False
ldap_uri = ldaps://svldap-server                            ←★ldaps指定
ldap_search_base = ou=gvis, dc=intra-gavann-it,dc=com
ldap_default_bind_dn = cn=admin, dc=intra-gavann-it,dc=com
ldap_tls_cacert = /etc/openldap/certs/ldap.crt              ←★設置した証明書を指定
ldap_id_use_start_tls = True                                ←★ldapsのための設定
ldap_tls_reqcert = never                                    ←★自己証明書のための設定
ldap_default_authtok_type = obfuscated_password
ldap_default_authtok = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

最後の2行はコマンドラインで追記し、上記のリストになるように不要な行を削除する。

[root@clred9 certs]# sss_obfuscate -d gvis
Enter password:
Re-enter password:
[root@clred9 certs]#

さらにパーミッションいじってsssdとoddjobdのサービス再起動する。
8.6でもだいたい同じで、以下9.0でやったとき。

[root@clred9 sssd]# chmod 600 sssd.conf
[root@clred9 sssd]# systemctl restart sssd.service
[root@clred9 sssd]#  systemctl status sssd.service
● sssd.service - System Security Services Daemon
     Loaded: loaded (/usr/lib/systemd/system/sssd.service; enabled; vendor preset: enable>
     Active: active (running) since Fri 2022-06-24 03:22:41 JST; 10s ago
   Main PID: 7838 (sssd)
      Tasks: 6 (limit: 15261)
     Memory: 40.3M
        CPU: 392ms
     CGroup: /system.slice/sssd.service
             tq7838 /usr/sbin/sssd -i --logger=files
             tq7839 /usr/libexec/sssd/sssd_be --domain gvis --uid 0 --gid 0 --logger=files
             tq7840 /usr/libexec/sssd/sssd_nss --uid 0 --gid 0 --logger=files
             tq7841 /usr/libexec/sssd/sssd_pam --uid 0 --gid 0 --logger=files
             tq7842 /usr/libexec/sssd/sssd_ifp --uid 0 --gid 0 --logger=files
             mq7843 /usr/libexec/sssd/sssd_sudo --uid 0 --gid 0 --logger=files

 6月 24 03:22:41 clred9 systemd[1]: Starting System Security Services Daemon...
 6月 24 03:22:41 clred9 sssd[7838]: Starting up
 6月 24 03:22:41 clred9 sssd_be[7839]: Starting up
 6月 24 03:22:41 clred9 sssd_sudo[7843]: Starting up
 6月 24 03:22:41 clred9 sssd_ifp[7842]: Starting up
 6月 24 03:22:41 clred9 sssd_nss[7840]: Starting up
 6月 24 03:22:41 clred9 sssd_pam[7841]: Starting up
 6月 24 03:22:41 clred9 systemd[1]: Started System Security Services Daemon.
[root@clred9 sssd]# systemctl enable oddjobd
Created symlink /etc/systemd/system/multi-user.target.wants/oddjobd.service → /usr/lib/systemd/system/oddjobd.service.
[root@clred9 sssd]# systemctl status oddjobd
○ oddjobd.service - privileged operations for unprivileged applications
     Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; vendor preset: dis>
     Active: inactive (dead)
[root@clred9 sssd]# systemctl start oddjobd
[root@clred9 sssd]# systemctl status oddjobd
● oddjobd.service - privileged operations for unprivileged applications
     Loaded: loaded (/usr/lib/systemd/system/oddjobd.service; enabled; vendor preset: dis>
     Active: active (running) since Fri 2022-06-24 03:25:10 JST; 4s ago
   Main PID: 7864 (oddjobd)
      Tasks: 1 (limit: 15261)
     Memory: 688.0K
        CPU: 4ms
     CGroup: /system.slice/oddjobd.service
             mq7864 /usr/sbin/oddjobd -n -p /run/oddjobd.pid -t 300

 6月 24 03:25:10 clred9 systemd[1]: Started privileged operations for unprivileged applic>
[root@clred9 sssd]#

システムIDと認証ソースを設定

ここまで書いて、やるの忘れてた。
これやらないとssh接続拒否される。
以下、8.6でやったとき。9.0もほぼ同じエコーバックやったから割愛。

[root@clred8 sssd]# authselect select sssd with-sudo with-mkhomedir --force
Backup stored at /var/lib/authselect/backups/2022-06-23-19-02-21.hBLr3k
Profile "sssd" was selected.
The following nsswitch maps are overwritten by the profile:
- passwd
- group
- netgroup
- automount
- services
- sudoers

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 and active
  - systemctl enable --now oddjobd.service

[root@clred8 sssd]#

/etc/ssh/sshd_configの設定

sshdにも接続許可設定があるので追記する。

AllowUsers *

sshdのサービス再起動やっとく。

[root@clred9 sssd]# systemctl restart sshd
[root@clred9 sssd]# systemctl status sshd
● sshd.service - OpenSSH server daemon
     Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enable>
     Active: active (running) since Fri 2022-06-24 03:35:31 JST; 19s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 7884 (sshd)
      Tasks: 8 (limit: 15261)
     Memory: 207.0M
        CPU: 27ms
     CGroup: /system.slice/sshd.service
             tq  90 "sshd: nari [priv]"
             tq  94 "sshd: nari@pts/0"
             tq  95 -bash
             tq 109 su -
             tq 110 -bash
             tq7884 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
             tq7885 systemctl status sshd
             mq7886 less

 6月 24 03:35:31 clred9 systemd[1]: Starting OpenSSH server daemon...
 6月 24 03:35:31 clred9 sshd[7884]: Server listening on 0.0.0.0 port 22.
 6月 24 03:35:31 clred9 sshd[7884]: Server listening on :: port 22.
 6月 24 03:35:31 clred9 systemd[1]: Started OpenSSH server daemon.
[root@clred9 sssd]#

レガシー設定とldapsのオンライン確認

ldapのときはlegacyってなるように変更してからエコーバックを確認するけど、ldapsを使うのでレガシー設定はデフォルト設定から変更しなくていいはずで、DEFAULTになってることを確認。

以下9.0でやったとき。8.6も同じようなエコーバックやったから割愛。

[root@clred9 sssd]# update-crypto-policies --show
DEFAULT
[root@clred9 sssd]#

接続確認

sssdからldapsへのオンライン確認と認証情報取得できるかの確認。

以下9.0でやったとき、Onlineって返ってきてgetentで情報取れてるやん!!

[root@clred9 sssd]# sssctl domain-status gvis
Online status: Online

Active servers:
LDAP: svldap-server

Discovered LDAP servers:
- svldap-server

[root@clred9 sssd]#
[root@clred9 sssd]# getent passwd gavann-it
gavann-it:*:2000:7502:gavann it:/home/gavann-it:/bin/bash
[root@clred9 sssd]#

接続

さぁ、つないでみる~。

8.6の接続結果

[root@clred8 sssd]# ssh gavann-it@localhost
gavann-it@localhost's password:
Creating home directory for gavann-it.
Last failed login: Fri Jun 24 03:50:24 JST 2022 from 127.0.0.1 on ssh:notty
There were 14 failed login attempts since the last successful login.
[gavann-it@clred8 ~]$ whoami
gavann-it
[gavann-it@clred8 ~]$

9.0の接続結果

[root@clred9 sssd]# ssh gavann-it@localhost
gavann-it@localhost's password:
Creating home directory for gavann-it.
Last failed login: Fri Jun 24 03:49:36 JST 2022 from 127.0.0.1 on ssh:notty
There were 6 failed login attempts since the last successful login.
[gavann-it@clred9 ~]$ whoami
gavann-it
[gavann-it@clred9 ~]$

nslcdからsssdに変わったときはかなり悩んだけど、redhatが9になってもsssdはそのまま使うみたいやから、ssh接続でldaps認証はスンナリできた。

もしかしたら・・・

2022年6月はalmalinux使った。

何があるかわからない世の中やから、dnfで更新してったらldaps接続が突然できなくなることがあるかもしれん。

そのときはまた追記するかな。

コメント

タイトルとURLをコピーしました