Samba-ad-dc-with-docker/README.md

6.2 KiB

Samba-ad-dc-with-docker

概要

Samba ad dcをDockerで気軽に利用する。

構築方法

ダウンロード

このリポジトリからソースをダウンロードする。

git clone https://gitea.rohhie.net/rohhie/Samba-ad-dc-with-docker.git

phpLDAPadminを使用する場合は、バージョン1.2.3をダウンロードする。

wget https://github.com/leenooks/phpLDAPadmin/archive/refs/tags/1.2.3.tar.gz -O packages/phpLDAPadmin-1.2.3.tar.gz

ベースとなるイメージを作成する

Samba ad dcイメージのベースとなるイメージを作成する。
スクリプトの修正等でコンテナを作り直す際に、最低限のダウンロードで済ませるため。

./mkbaseimage

目的のdocker-compose.ymlを作成する

プライマリーDC、セカンダリーDC、リストアドDCの3種類を用意しているので、いずれかをコピーする。
ここではプライマリーDCについて説明する。

cp docker-compose.yml.primary docker-compose.yml

ホストのIPアドレスを設定する

.envにプライマリーDC、セカンダリーDC、リストアドDCのコンテナを動作させるホストのIPアドレスを設定する。
ホームラボのホストが指定してあるので、適宜変更する。
セカンダリーDC、リストアドDCを使わない場合は、未設定で問題はない。

動作条件を設定する

docker-compose.ymlで動作条件を設定する。

environment:

変数名 設定内容
SMB_REALM 管理するレルムの名前
SMB_DOMAIN レルムのドメイン名
SMB_ADMINPASS administratorのパスワード
SMB_HOSTIP コンテナを動作させるホストのIPアドレス
SMB_RPC_PORTS RPCで使用するポート範囲
SMB_PURPOSE "primary"として、プライマリーDCとする
SMB_USEBIND9 DNSの選択 "false":内蔵 "true":BIND9
RSY_SECONDARY セカンダリーのIPアドレス
SMB_PURPOSEが"true"の場合に有効
RSY_PASS セカンダリーからrsyncする際のパスワード

※SMB_PURPOSEは、"secondary"と"restore"を指定可能だが、それぞれ別にymlを用意してあるので、それを使うこと。

ports:

IPアドレスを指定してポートをマッピングしている。
ここには、コンテナを動作させるホストのIPアドレスを設定する。

dns:

Samba ad dcが名前解決でフォワードするDNSのIPアドレスを設定する。
ホームラボのDNSを指定してあるので、適宜変更する。

証明書類を準備する

ドメインで使用する証明書類をpackages/cert に配置する。
証明書の名前は以下の通り固定。変更する場合は、config-*.shを変更すること。

ファイル 内容
ca.crt 認証局の証明書。
server.crt Samba ad dcの証明書。ca.crtの認証局が署名したものを想定。
server.key Samba ad dcの秘密鍵。パスワードは外しておく。
ca.crl ca.crtの認証局が発行するcertificate revocation list(CRL)。

※ca.crlの設置は必須ではない。

これらのファイルを設置すれば、LDAPとLDAPSが使えるようになる。
なければ、LDAPが使える。

ファイアウォールの設定

コンテナからホストへのアクセスを許可する。

コンテナのIPアドレスはdocker-compose.ymlで指定したもの。
変更した場合には、fromのIPアドレスを書き換えること。
また、toはコンテナを動作させるホストのIPアドレスを指定する。

sudo ufw allow from 172.26.0.101 to 192.168.110.4 comment "From container"

コンテナを起動

コンテナを構築して起動する。

sudo docker compose up -d --build

Apacheの設定(必須ではない)

phpLDAPadminとLDAP Account Managerのポート8081にリバースプロキシ設定する設定の例。
コンテナを動かすホストにApacheをインストールしている。
証明書と秘密鍵は、環境にあったものを準備して設定。

/etc/apache2/sites-available/myservice.conf

<VirtualHost *:443>
    ServerAdmin webmaster@hogeserver.hogeddns.jp
    ServerName addc.hogeserver.hogeddns.jp
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyPass /phpldapadmin http://localhost:8081/phpldapadmin
    ProxyPassReverse /phpldapadmin http://localhost:8081/phpldapadmin
    ProxyPass /lam http://localhost:8081/lam
    ProxyPassReverse /lam http://localhost:8081/lam

    # SSL
    SSLEngine on
    SSLCertificateFile /etc/ssl/private/wild.hoge.crt
    SSLCertificateKeyFile /etc/ssl/private/wild.hoge.key
</VirtualHost>

この設定を反映する。

sudo a2ensite myservice
sudo a2enmod proxy_http ssl
sudo systemctl restart apache2

なお、リバースプロキシ設定せずに、8081ポートに直接アクセスすることもできる。

使用方法

コンテナの中で自由にコマンドが実行できる。

sudo docker exec -it samba bash --login

phpLDAPadminにはブラウザでアクセスできる。ドメイン部分は環境に合わせる。
https://addc.hogeserver.hogeddns.jp/phpldapadmin

LDAP Account Managerも同様。
https://addc.hogeserver.hogeddns.jp/lam

その他

細かな設定手順や使い方、セカンダリーDCやリストアドDCを動作させる手順は、メインサイト参照。
https://rohhie.net/samba-ad-dc-with-docker/

ライセンス

MIT