183 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			183 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Samba-ad-dc-with-docker
 | |
| 
 | |
| ## 概要
 | |
| 
 | |
| Samba ad dcをDockerで気軽に利用する。
 | |
| 
 | |
| ## 構築方法
 | |
| 
 | |
| ### ダウンロード
 | |
| 
 | |
| このリポジトリからソースをダウンロードする。
 | |
| 
 | |
| ```
 | |
| git clone https://gitea.rohhie.net/rohhie/Samba-ad-dc-with-docker.git
 | |
| mv Samba-ad-dc-with-docker samba
 | |
| cd samba
 | |
| ```
 | |
| 
 | |
| 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イメージのベースとなるイメージを作成する。  
 | |
| スクリプトの修正等でコンテナを作り直す際に、最低限のダウンロードで済ませるため。
 | |
| 
 | |
| ```
 | |
| sudo baseimage/mkbaseimage.sh
 | |
| ```
 | |
| 
 | |
| ### 目的のdocker-compose.ymlを作成
 | |
| 
 | |
| プライマリーDC、セカンダリーDC、リストアドDCの3種類を用意しているので、いずれかをコピーする。  
 | |
| ここではプライマリーDCについて説明する。
 | |
| 
 | |
| ```
 | |
| cp docker-compose.yml.primary docker-compose.yml
 | |
| ```
 | |
| 
 | |
| ### ホストのIPアドレスを設定
 | |
| 
 | |
| .envにプライマリーDC、セカンダリーDC、リストアドDCのコンテナを動作させるホストのIPアドレスを設定する。  
 | |
| あわせて各DCのフォワード先IPアドレスを設定する。  
 | |
| 
 | |
| ダウンロードした.envにはホームラボのホストが指定してあるので、環境に合わせて変更する。  
 | |
| セカンダリーDC、リストアドDCを使わない場合は、未設定で問題はない。
 | |
| 
 | |
| ### 動作条件を設定
 | |
| 
 | |
| docker-compose.ymlで動作条件を設定する。
 | |
| 
 | |
| #### environment:
 | |
| | 変数名        | 設定内容                                                       |
 | |
| |---------------|----------------------------------------------------------------|
 | |
| | SMB_REALM     | 管理するレルムの名前                                           |
 | |
| | SMB_DOMAIN    | レルムのドメイン名                                             |
 | |
| | SMB_ADMINPASS | administratorのパスワード                                      |
 | |
| | SMB_HOSTIP    | コンテナを動作させるホストのIPアドレス                         |
 | |
| | SMB_FORWARD   | フォワード先となるDNSのIPアドレス                              |
 | |
| | SMB_RPC_PORTS | RPCで使用するポート範囲                                        |
 | |
| | SMB_WEB_PORTS | Apacheが使用するポート                                         |
 | |
| | SMB_PURPOSE   | "primary"として、プライマリーDCとする                          |
 | |
| | SMB_USEBIND9  | DNSの選択 "false":内蔵 "true":BIND9                            |
 | |
| | RSY_SECONDARY | セカンダリーのIPアドレス<br>SMB_PURPOSEが"primary"の場合に有効 |
 | |
| | RSY_PASS      | セカンダリーからrsyncする際のパスワード                        |
 | |
| 
 | |
| ※SMB_PURPOSEは、"secondary"と"restore"を指定可能だが、それぞれ別にymlを用意してあるので、それを使うこと。
 | |
| 
 | |
| ### 証明書類を準備
 | |
| 
 | |
| ドメインで使用する証明書類を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が使える。
 | |
| 
 | |
| ### ファイアウォールの設定
 | |
| 
 | |
| ファイアウォールを設定するスクリプトを実行する。
 | |
| 
 | |
| ```
 | |
| sudo ./setufw.sh
 | |
| ```
 | |
| 
 | |
| このスクリプトはどこから接続されても良い、という設定をしているので、接続元を限定したい場合には、
 | |
| 
 | |
| ```
 | |
| ufw $1 allow to any port   53 proto any from any comment "DNS"
 | |
| ```
 | |
| 
 | |
| の from のところに限定したい範囲を書いておく。
 | |
| 
 | |
| 何らかの理由で追加したファイアウォールの設定を解除するなら、以下を実行する。
 | |
| 
 | |
| ```
 | |
| sudo ./setufw.sh delete
 | |
| ```
 | |
| 
 | |
| 
 | |
| ### コンテナを起動
 | |
| 
 | |
| コンテナを構築して起動する。
 | |
| 
 | |
| ```
 | |
| sudo docker compose up -d --build
 | |
| ```
 | |
| 
 | |
| ### Apacheの設定(必須ではない)
 | |
| 
 | |
| phpLDAPadminとLDAP Account Managerのポート8081にリバースプロキシ設定する設定の例。  
 | |
| コンテナを動かすホストにApacheをインストールしている。  
 | |
| 証明書と秘密鍵は、環境にあったものを準備して設定。
 | |
| 
 | |
| /etc/apache2/sites-available/myservice.conf
 | |
| ```
 | |
| <VirtualHost *:443>
 | |
|     ServerAdmin webmaster@example.net
 | |
|     ServerName addc.example.net
 | |
|     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/example.net.crt
 | |
|     SSLCertificateKeyFile /etc/ssl/private/example.net.key
 | |
| </VirtualHost>
 | |
| ```
 | |
| 
 | |
| この設定を反映する。
 | |
| 
 | |
| ```
 | |
| sudo a2ensite myservice
 | |
| sudo a2enmod proxy_http ssl
 | |
| sudo systemctl restart apache2
 | |
| ```
 | |
| 
 | |
| なお、リバースプロキシ設定せずに、8081ポートに直接アクセスすることもできる。  
 | |
| この場合にはファイアウォールで8081/tcpを解放する。
 | |
| 
 | |
| 
 | |
| ## 使用方法
 | |
| 
 | |
| コンテナの中で自由にコマンドが実行できる。
 | |
| ```
 | |
| sudo docker exec -it samba bash --login
 | |
| ```
 | |
| 
 | |
| phpLDAPadminにはブラウザでアクセスできる。ドメイン部分は環境に合わせる。  
 | |
| https://addc.example.net/phpldapadmin
 | |
| 
 | |
| LDAP Account Managerも同様。  
 | |
| https://addc.example.net/lam
 | |
| 
 | |
| 
 | |
| ## その他
 | |
| 
 | |
| 細かな設定手順や使い方、セカンダリーDCやリストアドDCを動作させる手順は、メインサイト参照。  
 | |
| https://rohhie.net/samba-ad-dc-with-docker/
 | |
| 
 | |
| ## ライセンス
 | |
| MIT
 | |
| 
 |