2022-10-08 12:41:00 +09:00
|
|
|
# Samba-ad-dc-with-docker
|
|
|
|
|
2022-10-08 13:34:28 +09:00
|
|
|
## 概要
|
|
|
|
|
|
|
|
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イメージのベースとなるイメージを作成する。
|
|
|
|
スクリプトの修正等でコンテナを作り直す際に、最低限のダウンロードで済ませるため。
|
|
|
|
|
|
|
|
```
|
|
|
|
cd samba
|
|
|
|
./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アドレス<br>SMB_PURPOSEが"true"の場合に有効 |
|
|
|
|
| RSY_PASS | セカンダリーからrsyncする際のパスワード |
|
|
|
|
|
|
|
|
※SMB_PURPOSEは、"secondary"と"restore"を指定可能だが、それぞれ別にymlを用意してあるので、それを使うこと。
|
|
|
|
|
|
|
|
#### ports:
|
|
|
|
|
|
|
|
IPアドレスを指定してポートをマッピングしている。
|
|
|
|
ここには、コンテナを動作させるホストのIPアドレスを設定する。
|
|
|
|
|
|
|
|
#### dns:
|
|
|
|
|
|
|
|
Samba ad dcが名前解決でフォワードするDNSのIPアドレスを設定する。
|
|
|
|
ホームラボのDNSを指定してあるので、適宜変更する。
|
|
|
|
|
|
|
|
### 証明書類を準備する
|
|
|
|
|
|
|
|
ドメインで使用する証明書類をsamba/packages/cert に配置する。
|
|
|
|
証明書の名前は以下の通り固定。変更する場合は、config-primary.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
|
|
|
|
|