ギャバンITサービス
お菓子の家が作れるシステムエンジニアです

dockerコンテナのopenldapサーバへrhel10からLDAPS認証とssh接続

ldaps認証がrhel10でも使えるんかを試してく。 ldapサーバはdockerコンテナで作成して、sssdの設定をrhel10で試すのが主な作業。 rhelが一般向けソースコード非公開 みたいな記事が前に出てたから、rocky/almalinux/fedoraみたいなrhelクローンOSは検証に使えんって思った。 こういう方針になってまうと、いろんな開発者のええとこ取りができなくなって、1企業の開発に寄ってまうから、MS-windowsと同じ感じの品質になってくんとちゃうか。 接続元のrhel10は最近vmwareの中で作ったから、そこから設定してく。 rhel9からrhel10の相違点 にsssdのこと挙がってる。 1 2 3 4 5 6 SSSD は、DNS-over-TLS (DoT) を使用してすべての動的 DNS (dyndns) クエリーを実行することをサポートするようになりました。 :(中略) SSSD ファイルプロバイダーが削除される :(中略) nscd が systemd-resolved と sssd に置き換えられる :(中略) DNS-over-TLS (DoT) ってのはdnsの問い合わせと応答をTLSでラップするらしい。 telnetがssh、httpがhttps、ldapがldapsやからdnsもtlsでラップするって発想かいな。めんどくさ。 ファイルプロバイダは使ってへんから放置でええやろし、nscdはrhel7までに使ってた認証の仕組みの一部やから消えてくれてええ。 たぶんrhel9のときと同じ設定でldaps認証できるんとちゃうか。 結論 openldapをdokcerコンテナで稼働させておき、rhel10ホストにsssd(System Security Services Daemon)設定を入れてssh接続するとこうなる。 ldapサーバ側はphpldapadmin経由で、centos8のときに作ったldifデータを流し込んだ。 準備 フロントエンドで使うのはmacminiの中にutmで仮想化したmacos(sequoia)。 windowsホストの中で動いてる普段利用のubuntu24の中に、openldapコンテナを作る。 dockerあるとcompose.ymlを数行書くだけでサーバ作れるからめっちゃ楽。終わったらコンテナ潰したらええだけ。 ...

 ⭐️

dockerコンテナ使ってOpenLDAPでLDAPSを提供させ、centos8からssh接続

※2022年6月にcentos8のdockerコンテナ使えないことに気づいたのとauthselectについての記述が欠けてたので、centosではないredhatクローンを使う方法に 切り替えた。 前に一度作ったdockerコンテナでの環境を、普段使いのdocker環境に追記して最近やり直したのでメモ。 ldap版の 方法はここ 。これを足がかりにしてldapsにしてみる。 phpldapadminではldifファイルってのが扱えて、ou以下のグループとユーザIDをエクスポート・インポートできる。 ldap版で作ったouとかはldifにエクスポートしておき、ldaps版にインポートする。 コンテナ起動のための docker-compose.yml内容はここ。 openldapのコンテナ起動 docker-compose.ymlを用意して起動。 自分のルールとしては、練習じゃなくて常時稼働にするサーバにはコンテナ名の頭に"sv_“をつける。 ldapからldapsにするついでに、phpldapadminもhttpsにしてみる。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 sv_ldap-server: ←★sv_つける image: osixia/openldap:latest restart: always container_name: svldap-server ←★svつける environment: LDAP_ORGANISATION: "gvis" LDAP_DOMAIN: "intra-gavann-it.com" LDAP_ADMIN_PASSWORD: "hogehoge" LDAP_TLS_VERIFY_CLIENT: "never" ←★自己証明書使うから証明書チェックさせない ports: - "11389:389" - "11636:636" ### https://nafslinux.intra.gavann-it.com:11802/ ### cn=admin,dc=intra-gavann-it,dc=com ### hogehoge ### ### 参考URL https://github.com/osixia/docker-phpLDAPadmin ### ### httpsを使うときは、証明書が自動作成されているので取得してクライアント側に設定すること ### コンテナ内の保管先:/container/service/slapd/assets/certs ### ### 参考URL https://github.com/osixia/docker-openldap#use-your-own-certificate sv_ldap-admin: image: osixia/phpldapadmin:latest restart: always container_name: svldap-admin environment: PHPLDAPADMIN_LDAP_HOSTS: "ldap-host" ports: - "11801:80" - "11802:443" ←★https提供してもらうため depends_on: - "sv_ldap-server" links: - sv_ldap-server:ldap-host 起動した後のdocker psはこんな感じ。 ...

dockerコンテナ使ってOpenLDAPへcentos8からssh接続する

※2022年6月にcentos8のdockerコンテナ使えないことに気づいたので、centosではないredhatクローンを使う方法に 切り替えた。 とっかかりは業務での運用。 作ったことなかったので、dockerでOpenLDAPサーバを作っておき、centos8で接続できる方法を探し当てて検証し、同じ方法で業務のredhat8からも接続できた。 業務でdocker使えたらこんなまわりくどいことしないのに・・・。 redhat6/7ではnslcd使えてたらしいが、redhat8ではsssd接続のみに変更になってしまったので、sssd.confの書き方を見つけるために作った。 これがなかなかうまくいかず、rhel8のサポートも使わせてくれなかったので、自分で試しながら設定内容を探り当てた。 sssdはredhat7でも使えてて、8になってからnslcd使わなくなったらしい。 ここではopenldapのコンテナと、それを管理させるためのphpldapadminのコンテナを作っておき、コンテナのcentos8から認証接続させるまでの経緯。 前に一度作ったのを、普段使いの環境に追記して最近やり直したのでメモ。 コンテナ起動のための docker-compose.yml内容はここ。 openldapのコンテナ起動 docker使ってldapするにはopenldap使うらしい。 hub.docker.com githubに詳細がある。slapdっていうデーモン使うらしい。 GitHub - osixia/docker-openldap: OpenLDAP container image 🐳🌴 github.com slapdの最新は今見たら2.5.7。 www.openldap.org githubにあるosixiaは1.5で、dockerコンテナ内で使ってるopenldapを見てみたら2.4.57。openldapが最新ではないけど、コンテナ定期的に作り直すし、まぁいいか。 1 2 3 4 root@0e1af753333d:/# slapd -V @(#) $OpenLDAP: slapd 2.4.57+dfsg-1~bpo10+1 (Jan 30 2021 06:59:51) $ Debian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org> root@0e1af753333d:/# docker-compose.ymlを少し書いて用意する。ちょろい。1分もかからない。 以下、このときのdocker-composeの抜粋。 1 2 3 4 5 6 7 8 9 10 11 12 nari@nafslinux-intra-gavann-it-com:/docker$ docker-compose up ldap-server Pulling ldap-server (osixia/openldap:latest)... latest: Pulling from osixia/openldap 45b42c59be33: Already exists ae7fb8f59730: Pull complete 55443d9da5d5: Pull complete :(中略) ldap-host | 614e0e11 @(#) $OpenLDAP: slapd 2.4.57+dfsg-1~bpo10+1 (Jan 30 2021 06:59:51) $ ldap-host | Debian OpenLDAP Maintainers <pkg-openldap-devel@lists.alioth.debian.org> ldap-host | 614e0e11 slapd starting phpldapadminのコンテナ起動 docker-compose.ymlを少し書いて用意する。これも1分以内で終わる。 ...

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の作業フォルダ こんな感じ。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /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のための永続化領域。 ...

Dockerコンテナ内の処理を定期的に起動

unix/linuxで定期的に処理を動かしたいときはcrontab使う。 たとえばcrontab.txtとか適当なファイルを作っておく。 左から、「分」「時」「日」「月」「曜日」「コマンド」を書く。 1 2 3 4 5 #daily rm 00 7 * * * /bin/find /gvis/ -name ".*DS_Store" -print -exec rm {} ";" 01 7 * * * /bin/find /gvis/ -name "Thumbs.db" -print -exec rm {} ";" 02 7 * * * /bin/find /nari/ -name ".*DS_Store" -print -exec rm {} ";" 03 7 * * * /bin/find /nari/ -name "Thumbs.db" -print -exec rm {} ";" この定義使うと、Thumbs.db(windowsが勝手に作るファイルね)とDS_Store(macが勝手に作るファイルね)を/nariのディレクトリ以下から探し出して抹消してくれる。 ...