LINUX.ORG.RU
решено ФорумAdmin

Kerberos и дочерний домен.

 , ,


1

2

Вечер добрый господа. Не знал куда ещё обратиться решил отписаться тут,а столкнулся с такой проблемой. В сети есть домен mycompany.local с контролером домена dc1.mycompany.local и недавно появившемся дочерним доменом child.mycompany. Также стоит debian на котором стоит squid, авторизация в нём проходи средствами kerberos. То есть в ad есть несколько групп которые проверяет squid_ldap_group на наличие там пользователя который лезит в интернет. В случае с доменом родителем работает всё прекрасно, но с дочерним доменом бьюсь уже довольно долго. Пробовал из полезного: 1)Создать в основном домене универсальную группу users1 в которую добавил пользователей из дочернего домена 2)Пробовал создать на дочернем домене глобальную группу и добавить её в users1 на основном контролере. Из бесполезного: 1)много чего :(

На самом деле дело до авторизации кербероса даже не дошло, а ступор получился на проверки пользователя в группе запросом приведённым ниже.

/usr/lib/squid3/squid_ldap_group -R -d -b "dc=mycompany,dc=local"  -f  "(&(objectClass=user)(sAMAccountName=%v)(memberof=cn=%a,ou=lnternet,ou=Groups,dc=mycompani,dc=local))"  -D squid@mycompani.local -K -W /etc/squid3/aduser dc1.mycompani.nso.local

Собственно когда ищем пользователя из основного домена всё хорошо.

testdc1 user1
Connected OK
group filter '(&(objectClass=user)(sAMAccountName=testdc1)(memberof=cn=user1,ou=lnternet,ou=Groups,dc=mycompany,dc=local))', searchbase 'dc=mycompany,dc=local'
OK

А когда ищем в этой же группе пользователя из дочернего домена(который там есть) получаем это.

childtest user1
Connected OK
group filter '(&(objectClass=user)(sAMAccountName=childtest)(memberof=cn=user1,ou=lnternet,ou=Groups,dc=mycompany,dc=local))', searchbase 'dc=mycompany,dc=local'
ERR

Собственно, если проверять это с основного контролера то лдап запрос отрабатывает и находит пользователей из обоих доменов. Пользователь squid имеет права на чтение всего леса и права энтерпрайз админа. Если кто-нибудь с таким сталкивался подскажите в какую сторону смотреть. Заранее извиняюсь за стиль своего сообщения на форуме пишу первый раз) Конфиги предоставлю по надобности. Гугл весь перерыл толком не чего нету по этой теме, заранее спасибо.


Глобальный каталог в родительское домене содержит только ограниченную реплику объектов субдомена, в которой может не быть информации о группах. Поэтому запрашивай контроллер субдомена напрямую про его юзеров.

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Спасибо за ответ. Маленько теряюсь в догадках.Допустим я добавлю в krb5.conf дочерний домен, но что делать с keytabom ведь получается нужен второй кейтаб с дочернего домена.И как заставить krb5 и сквиду читать оба кейтаба и самое главное как объяснять сквиду, где каких пользователей искать.Или всё таки хватит одного кейтаба?

Namiz ()
Ответ на: комментарий от Namiz

Кейтаб, думаю, сойдёт один от родительского домена, а вот поиск в LDAP нужно делать и там и там через squid_ldap_group.

Кейтабы, если будет необходимость, можно объединять в один через ktutil:

# ktutil
  ktutil: read_kt kt1
  ktutil: read_kt kt2
  ktutil: read_kt kt3
  ktutil: write_kt kt123

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

Спасибо про объединение уже нашёл. А по поводу запросов через хелпер итуда и туда, думал по этому поводу, но это такой нехилый костыль получается хотел обойтись без этого( Спасибо за помощь.

Namiz ()
Ответ на: комментарий от Namiz

но это такой нехилый костыль получается

Ну почему же. Дефайнишь просто в сквиде второй набор ACLов на эти группы через второй домен и всё. Ничего особого костыльного не вижу.

Вот субдомен делать это да, bad practice.

blind_oracle ★★★★★ ()
Последнее исправление: blind_oracle (всего исправлений: 1 )
Ответ на: комментарий от blind_oracle

Правдо с таким костылём тоже возникла проблема, после добавления в конфиг сквида запрос до сервера дочернего ад,у пользователей родительского домена всё хорошо, как только в инет лезит пользователь дочернего домена сквид помирает.И лечится только ребутом, логи при этом не пишет.Не подскажете как правильно можно в сквид запихнуть ещё один фильтр?)

Namiz ()
Ответ на: комментарий от Namiz

У меня примерно так:

external_acl_type squid_ldap1 ttl=30 negative_ttl=30 children-max=100 children-startup=10 children-idle=5 %LOGIN /opt/squid/libexec/ext_ldap_group_acl -b "OU=Пользователи,DC=domain,DC=ru" -s sub -D CN=service_ldap_ro,CN=Users,DC=domain,D
C=ru -W /etc/squid/ldap.password -R -H ldap://10.1.16.10 -v 3 -S -K -f "(&(sAMAccountName=%u)(memberOf=%g))"

external_acl_type squid_ldap2 ttl=30 negative_ttl=30 children-max=100 children-startup=10 children-idle=5 %LOGIN /opt/squid/libexec/ext_ldap_group_acl -b "OU=Пользователи,DC=domain,DC=ru" -s sub -D CN=service_ldap_ro,CN=Users,DC=domain,D
C=ru -W /etc/squid/ldap.password -R -H ldap://10.1.16.11 -v 3 -S -K -f "(&(sAMAccountName=%u)(memberOf=%g))"

acl proxy_full_access external squid_ldap1 CN=proxy_full_access,OU=Proxy,OU=Groups,DC=domain,DC=ru

acl proxy_full_access external squid_ldap2 CN=proxy_full_access,OU=Proxy,OU=Groups,DC=domain,DC=ru

blind_oracle ★★★★★ ()
Ответ на: комментарий от blind_oracle

У меня сейчас это выглядит вот так уже. Уже пробовал по всякому пока результат один. Если увидете ошибку ткните носом:)


auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -s HTTP/proxy.mycompany.local@MYCOMPANY.LOCAL
auth_param negotiate children 20
auth_param negotiate keep_alive on

external_acl_type ldap_verify %LOGIN /usr/lib/squid3/squid_ldap_group -R \
-b "dc=mycompany,dc=local" -f  "(&(objectClass=user)(sAMAccountName=%v)(memberof=cn=%a,ou=lnternet,ou=Groups,dc=mycompany,dc=local))" \
-D squid@mycompany.local -K -W /etc/squid3/aduser dc1.mycompanyo.local.

#Описание групп доступа из AD
acl all_it external ldap_verify IT
acl all_student external ldap_verify Full
acl all_inet external ldap_verify InternetAll

external_acl_type ldap_verify %LOGIN /usr/lib/squid3/squid_ldap_group -R \
-b "dc=nsk2,dc=mycompany,dc=local"  -f  "(&(objectClass=user)(sAMAccountName=%v)(memberof=cn=%a,ou=Groups,dc=nsk2,dc=mycompany,dc=local))" \
-D squid@mycompany.local -K -W /etc/squid3/aduser nsk2-dc1.nsk2.mycompany.local.

acl all_itl external ldap_verify ITl
#acl auth proxy_auth REQUIRED
#Назначаем разрешения кому можно ходить в интернет
http_access allow all_it
http_access allow all_inet
http_access allow all_student
http_access allow auth
http_access allow all_itl


Namiz ()
Ответ на: комментарий от blind_oracle

Спасибо огромное, заработало. Тему думаю можно закрывать.

Namiz ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.