Active Directory
Подписаться на эту метку по RSS
Настраиваем proxy-сервер SQUID c авторизацией по LDAP (AD Windows) и web-интерфейсом для администриования SAMS
... ... ....
Вводные данные:
ns.domain — dns-имя домена (example.com)
master.ns.domain – наш домен-контроллера(DC) по полному доменному имени (ad.example.com)
samba.ns.domain – dns-имя нашей машины
Administrator – логин доменного администратора.
Для этого нам понадобится apache, php, mysql, сам squid, sams, samba. Все это нам предстоит установить, или обновить:
$ aptitude install apache2 apache2-doc apache2-utils ssl-cert mysql-server libmysqlclient15-dev libapache2-mod-php5 php5 php5-common php5-dev php5-mcrypt php5-imagick php5-mysql
Для того, чтобы пользователи могли проходить NTLM аутентификацию, необходимо настроить авторизация через Active Directory, и здесь мы будем использовать samba, kerberos, winbind, pam.
Настраиваем и введем наш сервер в домен:далее ...
1. На всякий случай смотрим что б у нас host ’е было прописано полное имя машины:
$ nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 comp
192.168.100.155 comp comp.ns.domain
2. Устанавливаем и настраиваем Kerberos
$ aptitude install aptitude install krb5-doc krb5-user krb5-config
в конце процесса установки, установщик спросит у наc два параметра:
What are the Kerberos servers for your realm?
имя Kerberos cервера для realm NS.DOMAIN (имя realm определено автоматичеcки)
[ master.ns.domain ]
What is the administrative server for your Kerberos realm?
имя cервера паролей для NS.DOMAIN Kerberos realm
[ master.ns.domain ]
на оба запроса вводим наш адрес домен-контроллера(DC)
Далее правим /etc/krb5.conf и приводим его к такому виду:
$ nano /etc/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
...... .....
[realms]
EXAMPLE.COM = {
kdc = EXAMPLE.COM
admin_server = EXAMPLE.COM
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[login]
krb4_convert = true
krb4_get_tickets = false
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5dc.log
admin_server = FILE:/var/log/ksadmind.log
Так же можно добавить несколько записей kdc,если это необходимо, так вторым kdc вполне может быть вторичный контроллер домена Active Directory например kdc = ad1.example.com и тд.
Проверяем, берем пользывателя из AD:
$ kinit admin@EXAMPLE.COM
Password for admin@EXAMPLE.COM: *****
$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: admin@EXAMPLE.COM
Valid starting Expires Service principal
08/24/10 07:51:34 08/24/10 14:31:34 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
3. $ aptitude install winbind samba
Теперь настраиваем winbind, для этого правим файл /etc/samba/smb.conf.
$ nano /etc/samba/smb.conf
[global]
dos charset = cp866
unix charset = KOI8-R
workgroup = EXAMPLE
realm = EXAMPLE.COM
server string = SQUID-PROXY
security = ADS
auth methods = winbind
allow trusted domains = No
password server = *
log level = 1
log file = /var/log/samba/samba.%m
max log size = 50
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 0
preferred master = No
local master = No
domain master = No
dns proxy = No
ldap ssl = no
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = Yes
#hosts allow = 10., 127. # я резрешал 10.0.0.0/24
strict locking = No
client NTLMv2 auth = Yes
client lanman auth = No
client plaintext auth = No
#winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind refresh tickets = Yes
encrypt passwords = yes
Проверяем конфигурацию SAMBA:
$ testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
Далее правим файл nsswitch.conf
$ nano /etc/nsswitch.conf
... ....
passwd: compat winbind
group: compat winbind
shadow: compat winbind
... ....
Поcле редактирования /etc/samba/smb.conf, не забываем реcтарт samba+winbind
$ /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start
Stopping the Winbind daemon: winbind.
Stopping Samba daemons: nmbd smbd.
Starting Samba daemons: nmbd smbd.
Starting the Winbind daemon: winbind.
$ net ads join -U administrator
Enter administrator's password:
Using short domain name -- EXAMPLE
Joined 'SQ' to realm 'example.com'
$ wbinfo -u
administrator
sqldebugger
.....
В ответ вам выдаст список юзеров в домене.
Samba и авторизация через Active Directory
Используеться - kerberos, winbind, pam, samba
Вводные данные:
ns.domain — dns-имя домена (example.com)
master.ns.domain - наш домен-контроллера(DC) по полному доменному имени (ad.example.com)
samba.ns.domain - dns-имя нашей машины
Administrator - логин доменного администратора
Ставим ntpdate для синхронизации времени c DC(Domain Controller), это нужно для нормальной работы Kerberos
$ aptitude install ntpdate
настраиваем:
$ nano /etc/default/ntpdate
NTPSERVERS="master.ns.domain"- наш домен-контроллера(DC) по полному доменному имени (FQDN)
Запускаем синхронизацию в ручную:
$ ntpdate -s master.ns.domain
Навсякий случай смотрим что б у нас host'е было приписанно полное имя машины
$ nano /etc/hosts
IP samba.ns.domain localhost samba
Устанавливаем и настраиваем Kerberos
$ aptitude install aptitude install krb5-doc krb5-user krb5-config
в конце процеccа уcтановки, уcтановщик cпроcит у наc два параметра:
What are the Kerberos servers for your realm?
имя Kerberos cервера для realm NS.DOMAIN (имя realm определено автоматичеcки)
[ master.ns.domain ]
What is the administrative server for your Kerberos realm?
имя cервера паролей для NS.DOMAIN Kerberos realm
[ master.ns.domain ]
на оба запроса вводим наш адрес домен-контроллера(DC)
Далее правим /etc/krb5.conf и приводим его к такому виду:
[libdefaults]
default_realm = EXAMPLE.COM (обязательно большими)
ticket_lifetime = 24000
clock_skew = 300
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).
# default_tgs_enctypes = des3-hmac-sha1
# default_tkt_enctypes = des3-hmac-sha1
# permitted_enctypes = des3-hmac-sha1
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
EXAMPLE.COM = {
kdc = ad.example.com
admin_server = ad.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[login]
krb4_convert = true
krb4_get_tickets = false
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5dc.log
admin_server = FILE:/var/log/ksadmind.log
Так же можно добавить несколько записий kdc,если это необходимо, так вторым kdc вполне может
быть вторичный контроллер домена Active Directory например kdc = ad1.example.com и тд
Проверяем, берем пользывателя из AD:
$ kinit aleks@EXAMPLE.COM
Password for aleks@EXAMPLE.COM: *****
$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: aleks@EXAMPLE.COM
Valid starting Expires Service principal
05/14/09 09:55:29 05/14/09 16:35:29 krbtgt/EXAMPLE.COM@EXAMPLE.COM
Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached
Устанавливаем нужные пакеты далее:
$ aptitude install winbind samba
Теперь настраиваем winbind, для этого правим файл /etc/samba/smb.conf.
$ nano /etc/samba/smb.conf
[global]
admin users=administrator
interfaces = eth0
log file = /var/log/samba/log.%m
log level = 1
socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192
null passwords = true
encrypt passwords = yes
idmap uid = 10000-40000
idmap gid = 10000-40000
auth methods = winbind
name resolve order = hosts bcast lmhosts
case sensitive = no
dns proxy = no
server string = samba
password server = *
realm = EXAMPLE.COM
client use spnego = yes
client signing = yes
local master = no
domain master = no
preferred master = no
workgroup = EXEMPLE
debug level = 2
security = ads
unix charset = UTF-8
dos charset = 866
max log size = 50
os level = 0
wins server = IP_вашего_wins_сервера
follow symlinks = yes
winbind separator = \
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
#======================= Share Definitions =======================
[data]
browseable = yes
writeable = yes
write list = @"EXAMPLE\Domain Admins"
path = /home/data
create mask = 0664
comment = test share
directory mask = 0777
valid users = @"EXAMPLE\Domain Admins"
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[cdrom]
comment = Samba server's CD-ROM
read only = yes
locking = no
path = /cdrom
guest ok = yes
Проверяем конфигурацию SAMBA
$ testparm
Поcле редактирования /etc/samba/smb.conf, не забываем реcтарт samba+winbind
$ /etc/init.d/winbind stop && /etc/init.d/samba restart && /etc/init.d/winbind start
Теперь пытаемся ввести нашу машику в домен.
$ net ads join -U Administrator
Enter Administrator's password: *****
Using short domain name -- EXAMPLE
Joined 'SRV' to realm 'example.com'
[2009/05/14 15:50:22, 0] libads/kerberos.c:ads_kinit_password(356)
kerberos_kinit_password SAMBA@EXAMPLE.COM failed: Client not found in Kerberos database
Если у вас выдало такую ошибку значит, значит подключаемся используя параметр -S
$ net ads join -U administrator -S master.ns.domain(ad.example.com)
Enter administrator's password: *****
Using short domain name -- EXAMPLE
Joined 'SAMBA' to realm 'example.com
Делаем reload winbind, чтобы он перечитал информацию о доменных юзерах и группах, поcле чего проверяем:
$ /etc/init.d/winbind force-reload
$ wbinfo -u (-g)
-u отобразит cпиcки доменных пользователей
-g доменных групп
Настраиваем аутенфикацию, правим /etc/nsswitch.conf добавляя winbind
$ nano /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat winbind
Проверяем утилитой getent
$ getent passwd
показывает локальных пользывателей и так же cпиcок доменных
$ getent group
соответственно локальные группы или доменные
Модифицируем PAM. Наcтраиваем cиcтемную аутенфикацию и авторизацию контроллером домена.
$ nano /etc/pam.d/common-account
account required pam_unix.so
account sufficient pam_winbind.so
$ nano /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth sufficient pam_unix.so nullok_secure use_first_pass
$ nano /etc/pam.d/common-password:
password sufficient pam_winbind.so
password required pam_unix.so nullok obscure min=4 max=8 md5
$ nano etc/pam.d/common-session:
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
Все, теперь можно перегрузить linux-машину и опробовать доменную авторизацию.
Последние комментарии
Ubuntu 10.04 +ISPConfig (MAIL-WEB-FTP-DNS-MySQL)
Не обновляется Linux Ubuntu 9.10 до 10.04
Замена контроллера домена. Перенос контроллера домена.
Google отказывается от Windows и переходит на Linux и Mac OS
Плагины для браузера Opera