これまでにやったこと
apt-get install slapd ldap-utils
を使用してOpenLDAPをインストールしました390,637
をブロックしているため、slapdポートを389,636
に変更しましたlibnss-ldapd
をインストールしました(getent passwd
はLDAPユーザーを正しく出力します)smbpasswd -w xxx
)問題
Windows 7クライアントをドメインに参加させ、smbldap-useradd
で作成されたユーザーにログインしようとしました。 Windowsから間違ったパスワードメッセージを受け取りましたが、sambaからのエラー/警告は絶対にありません。私のテストユーザーは実際にLDAPに存在しているため(phpldapadmin
でチェック)、sambaがldapと正しく通信していないと思います。私はこの時点で立ち往生していて、助けが必要です!
私が気づいたこと
testparm
の出力に表示されないpassdb backend = ldapsam:ldap://testsrv.alfr.local:390/
を設定しました(以下を参照)。
私が使用しているソフトウェア
構成と出力
testsrv
alfr.local
192.168.25.1
(サーバーは25.50から25.254の範囲のこのネットワークのDHCPとして機能します)testparm
の出力
root@testsrv:~# testparm
Load smb config files from /usr/local/samba/etc/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[profiles]"
Processing section "[netlogon]"
Processing section "[sysvol]"
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_ACTIVE_DIRECTORY_DC
Press enter to see a dump of your service definitions
[global]
workgroup = ALFR
realm = alfr.local
server role = Active Directory domain controller
passdb backend = samba_dsdb
add user script = /usr/sbin/smbldap-useradd -m '%u' -t 1
rename user script = /usr/sbin/smbldap-usermod -r '%unew' '%uold'
delete user script = /usr/sbin/smbldap-userdel '%u'
add group script = /usr/sbin/smbldap-groupadd -p '%g'
delete group script = /usr/sbin/smbldap-groupdel '%g'
add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
add machine script = /usr/sbin/smbldap-useradd -w '%u' -t 1
domain logons = Yes
os level = 10
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
ldap admin dn = cn=admin,dc=alfr,dc=local
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap machine suffix = ou=Computers
ldap suffix = dc=alfr,dc=local
ldap ssl = no
ldap user suffix = ou=Users
server services = rpc, nbt, wrepl, cldap, ldap, kdc, drepl, winbind, ntp_signd, kcc, dnsupdate, smb
dcerpc endpoint servers = epmapper, wkssvc, rpcecho, samr, netlogon, lsarpc, spoolss, drsuapi, dssetup, unixinfo, browser, eventlog6, backupkey, dnsserver, winreg, srvsvc
rpc_server:tcpip = no
rpc_daemon:spoolssd = embedded
rpc_server:spoolss = embedded
rpc_server:winreg = embedded
rpc_server:ntsvcs = embedded
rpc_server:eventlog = embedded
rpc_server:srvsvc = embedded
rpc_server:svcctl = embedded
rpc_server:default = external
idmap config * : backend = tdb
map archive = No
map readonly = no
store dos attributes = Yes
vfs objects = dfs_samba4, acl_xattr
[profiles]
path = /srv/samba/profiles
read only = No
create mask = 0611
directory mask = 0700
profile acls = Yes
map hidden = Yes
map system = Yes
browseable = No
csc policy = disable
[netlogon]
path = /usr/local/samba/var/locks/sysvol/alfr.local/scripts
read only = No
[sysvol]
path = /usr/local/samba/var/locks/sysvol
read only = No
[homes]
comment = Eigener Ordner
path = /srv/samba/homes/%S
read only = No
create mask = 0611
directory mask = 0711
browseable = No
vfs objects = acl_xattr, full_audit
full_audit:failure = connect opendir disconnect unlink mkdir rmdir open rename
full_audit:success = connect opendir disconnect unlink mkdir rmdir open rename
ps aux
の出力(重要でないものを切り取る)
root@testsrv:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 699 0.0 0.0 7272 608 ? Ss 08:08 0:00 dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth
bind 827 0.0 2.8 502280 58392 ? Ssl 08:08 0:01 /usr/sbin/named -u bind
dhcpd 833 0.0 0.2 14552 4476 ? Ss 08:08 0:00 /usr/sbin/dhcpd -f -q -4 -pf /run/dhcp-server/dhcpd.pid -cf /etc/ltsp/dhcpd.conf
openldap 1024 0.0 0.3 722000 6524 ? Ssl 08:08 0:00 /usr/sbin/slapd -h ldap://127.0.0.1:390/ ldaps://127.0.0.1:637/ ldapi://%2fvar%2frun%2fslapd%2fldapi/??
root 1051 0.0 0.0 693092 1172 ? Ssl 08:08 0:00 /usr/sbin/nscd
nslcd 1075 0.0 0.0 443600 1376 ? Ssl 08:08 0:00 /usr/sbin/nslcd
ntp 1279 0.0 0.0 25960 1836 ? Ss 08:08 0:00 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 107:114
root 1595 0.0 2.2 534364 46152 ? Ss 09:52 0:00 samba start
root 1597 0.0 1.8 538976 38532 ? S 09:52 0:00 samba start
root 1598 0.0 1.7 539772 35624 ? S 09:52 0:00 samba start
root 1599 0.0 1.6 536876 33716 ? S 09:52 0:00 samba start
root 1600 0.0 1.6 534364 34568 ? S 09:52 0:00 samba start
root 1601 0.0 1.8 534804 37568 ? S 09:52 0:00 samba start
root 1602 0.0 1.8 538516 37212 ? S 09:52 0:00 samba start
root 1603 0.0 1.6 534364 34328 ? S 09:52 0:00 samba start
root 1604 0.0 1.6 537192 33928 ? S 09:52 0:00 samba start
root 1605 0.0 1.5 534364 32716 ? S 09:52 0:00 samba start
root 1606 0.0 2.0 534364 41264 ? S 09:52 0:00 samba start
root 1607 0.0 1.6 534364 33884 ? S 09:52 0:00 samba start
root 1608 0.0 1.6 534364 33360 ? S 09:52 0:00 samba start
/etc/nsswitch.conf
root@testsrv:~# cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
# pre_auth-client-config # passwd: compat
passwd: files ldap
# pre_auth-client-config # group: compat
group: files ldap
# pre_auth-client-config # shadow: compat
shadow: files ldap
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
# pre_auth-client-config # netgroup: nis
netgroup: nis
設定ファイルにセキュリティディレクティブがありません。 security = adが必要だと思います。私は先月、まったく同じことをしようとして過ごしました。ユーザーログイン情報のメインデータベースとしてOpenLDAPを使用してください。
私はいくつかのアプローチをテストしました:
Samba 4 ADは現時点では信頼できないため(Sambaチームは執筆時点でSamba 4.2をまもなく公開する予定です)、信頼メカニズムを使用できません。
私の知る限り、ADのSamba 4は、Active Directoryに必要なスキーマがないため、OpenLDAPに基づくことはできません。
基本的にADとOpenLDAPの間でユーザーとグループを同期できるLSCと呼ばれるソフトウェアを使用するのにうんざりしています。ここでも運がない。 LSCのドキュメントと例は古く、現在のリリースと互換性がありません。私はついにユーザー同期を機能させることができましたが、OpenLDAPでパスワードを更新すると、LSCがそれをキャッチしないというバグがいくつかあります(少なくとも私が疲れたLSC v2.0では)。パスワードを機能させるには、パスワードをプレーンテキストで保存する必要があります。
今のところ、バックエンドとしてOpenLDAPを備えたSambaADコントローラーはありません。 Sambaが信頼をサポートするようになり次第、従来のNTドメインコントローラーを使用する予定です。次に、一方向の信頼(samba4 NT DCからSamba4AD))を委任し、ADドメインコントローラーで使用します。 OpenLDAPにあるユーザー情報。
誰かがここで間違いを見つけることができれば、私はそれを聞いてうれしいです。 ;-)
[〜#〜] update [〜#〜]:Samba4.3のFrancescoMalvezziの情報によると、信頼がサポートされるようになりました。
https://www.samba.org/samba/history/samba-4.3.0.html
信頼されたドメインのサポートの改善(AD DCとして)
信頼できるドメイン/フォレストのサポートが大幅に改善されました。
samba-tool
は、信頼を管理するための「ドメイン信頼」サブコマンドを取得しました。
create
-ドメインまたはフォレストの信頼を作成します。
delete
-ドメインの信頼を削除します。
list
-ドメインの信頼を一覧表示します。
namespaces
-フォレストの信頼の名前空間を管理します。
show
-信頼できるドメインの詳細を表示します。
validate
-ドメインの信頼を検証します。個々のドメイン間の外部信頼は、両方の方法(インバウンドとアウトバウンド)で機能します。同じことがフォレストトラストのルートドメインにも当てはまります。他のフォレストへの推移的なルーティングは、Kerberosでは完全に機能しますが、NTLMSSPではまだサポートされていません。
多くのことが正常に機能していますが、現在、いくつかの制限があります。
- 信頼の両側はお互いを完全に信頼する必要があります!
- SIDフィルタリングルールはまったく適用されません!
- これは、ドメインAのDCがドメインBのドメイン管理者権限を付与できることを意味します。
- 信頼できるドメインのユーザー/グループをドメイングループに追加することはできません。
構成例: https://www.samba.org/samba/history/samba-4.3.0.html
信頼関係が作成され、winbindを使用して確認できます。
wbinfo -u
->ローカルユーザーリストを取得
wbinfo -u --domain=trusted.domain.tld
->信頼できるドメインのユーザーリストを取得します(短いドメインも使用できます)
--local-dc-username
および--local-dc-password
スイッチを使用して検証することもできます。
samba-tool domain trust validate trusted.domain.tld \ --local-dc-password=trustedAdminPass \ --local-dc-username=administrator \ -U administrator at trusted.domain.tld
Sambaの内部DNSを使用すると、DNSクエリの転送が透過的になります(確認しようとしているいくつかのツールを使用)。
B.domain.tldのユーザーを使用してmachine.A.domain.tldに接続できるようにするには、RDP許可された人々に特別なグループを「認証されたユーザー」にする必要があります。
ただし、ディストリビューション(debian 8-9)の公式チャンネルで利用できるようになるまでまだ待っています。