Это старая версия документа!
Содержание
Вход в систему пользователем домена |
---|
Или, другими словами, аутентификация и дальнейшая авторизация в системе Slackware 14.0 с использованием логина и пароля взятого с Activ Directory (AD).
Начало
Для того, чтобы осуществить задуманное, нам необходимо:
- Собрать и установить РАМ;
- Собрать и установить samba с поддержкой PAM;
- Собрать и установить shadow с поддержкой РАМ;
- Всё это дело настроить.
Файл | Описание |
---|---|
pam-1.1.3-i486-1.txz | Собранный пакет РАМ |
shadow-4.1.5.1-i586-pam-1.tgz | Собранный пакет shadow с поддержкой РАМ |
samba-3.6.12-i486-1_slack14.0.txz | Собранный пакет samba с поддержкой РАМ |
samba_pam_slackbuild.tar.gz | SlackBuild для сборки samba с поддержкой РАМ |
pam.d.tar.gz | Каталог pam.d со всеми рабочими настройками |
confs_pam.tar.gz | Файлы конфигураций (krb5.conf, login.defs, nsswitch.conf, pam.conf, resolv.conf, smb.conf) |
Как собрать и где применить - ниже по статье.
Работать будем с контролером домена из ЭТОЙ СТАТЬИ.
Т.е.:
Домен | TRANSIT |
Контролер домена | DC1.TRANSIT.LOCAL |
IP контролера домена | 192.168.10.188 |
IP шлюза и сервера времени | 192.168.10.250 |
Тестовый компьютер со Slackware 14.0 | Slack-test |
IP тестового компьютер со Slackware 14.0 | 192.168.10.44 |
Администратор домена | Administrator |
Пользователь домена | v_pupkin |
В принципе, оно работает и с контролером домена на Windows 2003 (проверено).
«I think a better name for PAM might be SCAM, for Swiss Cheese Authentication Modules, and have never felt that the small amount of convenience it provides is worth the great loss of system security. We miss out on half a dozen security problems a year by not using PAM, but you can always install it yourself if you feel that you're missing out on the fun. (No, don't do that)»
Patrick.
Что на великом и могучем звучит, примерно, так:
«Я думаю, что лучшим названием для PAM может быть SCAM (Swiss Cheese Authentication Modules - Швейцарско сырный модуль аутентификации) и никогда не чувствовал, что небольшое количество удобств, которое он обеспечивает, стоит большой потери безопасности системы . Мы освободились от полдюжины проблем безопасности в год, не используя PAM, но вы всегда можете установить его самостоятельно, если чувствуете, что упускаете самое интересное. (Нет, не делайте этого)»
Патрик.
Собираем PAM
Начиная с версии 13.37, в дистрибутиве Slackware Linux в папке extra/source/pam, присутствует SlackBuild, который поможет нам собрать и в итоге получить готовый пакет pam-1.1.3-i486-1.txz.
Установим его:
# installpkg pam-1.1.3-i486-1.txz
и скопируем 2 библиотеки pam_smbpass.so и pam_winbind.so туда, где им положено быть.
# cp /etc/security/*.so /lib/security/
В принципе, у нас всё готово для сборки остальных пакетов. Соберем samba.
Собираем и настраиваем samba
Прежде чем начать собирать samba, нам необходимо собрать и установить керберос. Я тестировал с MIT Kerberos.
При помощи sbopkg правим слакбилд, info, собираем и устанавливаем последнюю версию MIT kerberos.
Для того, чтобы не искать программы от kerberos добавим их в /etc/profile:
..... ..... # Set the default system $PATH: PATH="/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/kerberos/bin:/usr/kerberos/sbin" ..... .....
Далее, для примера возьмем samba-3.6.12.
Скачаем SlackBuild samba_pam_slackbuild.tar.gz уже подправленный для сборки с РАМ или с http://mirror.yandex.ru/slackware/slackware-14.0/source/n/samba/, где нужно будет подправить SlackBuild в части ./configure.
Скачаем саму самбу samba-3.6.12.tar.gz и положим файл в каталог со SlackBuild'ом.
Если используете уже подправленный SlackBuid, то просто запустите его, если нет, то в части ./configure измените на нижеследующее:
./configure \ --prefix=/usr \ --libdir=/usr/lib${LIBDIRSUFFIX} \ --bindir=/usr/bin \ --sbindir=/usr/sbin \ --mandir=/usr/man \ --sysconfdir=/etc \ --with-configdir=/etc/samba \ --with-piddir=/var/run \ --with-privatedir=/etc/samba/private \ --localstatedir=/var \ --with-lockdir=/var/cache/samba \ --with-logfilebase=/var/log/samba \ --with-acl-support \ --with-automount \ --with-quotas \ --with-syslog \ --with-utmp \ --with-winbind \ --with-ldap \ --with-ads \ --with-sendfile-support \ --with-dnsupdate \ --with-profiling-data \ --with-fhs \ --with-swatdir=/usr/share/swat \ --with-pammodulesdir=/etc/security \ --with-krb5=/usr/kerberos \ --with-pam \ --with-pam_smbpass \ --enable-cups \ --enable-external-libtalloc=no \ --enable-static=no \ --enable-shared=yes \ --with-cifsmount \ --with-cifsumount \ --with-quotas \ --with-libsmbclient \ --build=$ARCH-slackware-linux
Для чистоты эксперимента я удалил установленную самбу и поставил вновь собранную.
Теперь необходимо её настроить для ввода в домен. Для этого правим нужные файлы.
В начале статьи есть файл confs_pam.tar.gz в котором уже собраны файлы с рабочими у меня настройками, но на всякий случай, я их дублирую прямо в статье. И так, по порядку:
/etc/krb5.conf
[logging] default = FILE10000:/var/log/krb5/krb5lib.log # default = FILE:/var/log/krb5/krb5libs.log kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log [libdefaults] default_realm = TRANSIT.LOCAL dns_lookup_realm = true dns_lookup_kdc = true ticket_lifetime = 24h forwardable = yes [realms] TRANSIT.LOCAL = { kdc = dc1.transit.local:88 admin_server = dc1.transit.local:750 default_domain = transit.local } [domain_realm] .transit.local = TRANSIT.LOCAL transit.local = TRANSIT.LOCAL [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
/etc/resolv.conf
search transit.local nameserver 192.168.10.188
/etc/nsswitch.conf
# passwd: files nis # shadow: files nis # group: files nis passwd: compat winbind group: compat winbind hosts: files dns networks: files services: files protocols: files rpc: files ethers: files netmasks: files netgroup: files bootparams: files automount: files aliases: files
/etc/smb.conf
[global] interfaces = eth0 lo hosts allow = 192.168.10. 127. netbios name = Slack-test server string = Slack_test security = ADS workgroup = TRANSIT realm = TRANSIT.LOCAL obey pam restrictions = yes allow trusted domains = No socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 name resolve order = hosts wins bcast lmhosts case sensitive = no dns proxy = no client use spnego = yes client signing = yes os level = 0 preferred master = No local master = No domain master = No dns proxy = No ldap ssl = no strict locking = No time server = no auth methods = winbind encrypt passwords = yes winbind enum users = Yes winbind enum groups = Yes winbind use default domain = yes winbind refresh tickets = yes template shell = /bin/bash template homedir = /home/%D/%U log file = /var/log/samba/log.%m max log size = 1024 log level = 3 display charset = koi8-r unix charset = koi8-r dos charset = cp866 nt acl support = yes printcap name = /etc/printcap
Пробуем получить билетик:
# kinit Administrator Password for Administrator@TRANSIT.LOCAL: # klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: Administrator@TRANSIT.LOCAL Valid starting Expires Service principal 11.03.2013 17:59:03 12.03.2013 03:59:03 krbtgt/TRANSIT.LOCAL@TRANSIT.LOCAL renew until 12.03.2013 18:01:50
Получили, теперь введем машину в домен:
# net ads join -U Administrator Enter Administrator's password: Using short domain name -- TRANSIT Joined 'SLACK-TEST' to dns domain 'transit.local'
Немного изменим файл /etc/rc.d/rc.samba добавив winbindd. В итоге он будет выглядеть так:
# # /etc/rc.d/rc.samba # # Start/stop/restart the Samba SMB file/print server. # # To make Samba start automatically at boot, make this # file executable: chmod 755 /etc/rc.d/rc.samba # samba_start() { if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf ]; then echo "Starting Samba: /usr/sbin/smbd -D" /usr/sbin/smbd -D echo " /usr/sbin/nmbd -D" /usr/sbin/nmbd -D echo " /usr/sbin/winbindd -D" /usr/sbin/winbindd -D fi } samba_stop() { killall smbd nmbd winbindd } samba_restart() { samba_stop sleep 2 samba_start } case "$1" in 'start') samba_start ;; 'stop') samba_stop ;; 'restart') samba_restart ;; *) # Default is "start", for backwards compatibility with previous # Slackware versions. This may change to a 'usage' error someday. samba_start esac
дадим ему права на запуск и запустим samba:
# chmod 755 /etc/rc.d/rc.samba # /etc/rc.d/rc.samba start Starting Samba: /usr/sbin/smbd -D /usr/sbin/nmbd -D /usr/sbin/winbindd -D
Проверим связь с контролером домена:
# wbinfo -t checking the trust secret for domain TRANSIT via RPC calls succeeded # wbinfo -u v_pupkin administrator dns-dc1 krbtgt guest # wbinfo -g ..... ..... domain admins domain guests schema admins domain users dnsadmins # wbinfo -a administrator Enter administrator's password: plaintext password authentication succeeded Enter administrator's password: challenge/response password authentication succeeded
А теперь нужно убедиться, что программа getent покажет нам локальных и доменных пользователей и группы одновременно:
# getent passwd root:x:0:0::/root:/bin/bash ..... ..... apache:x:80:80:User for Apache:/srv/httpd:/bin/false messagebus:x:81:81:User for D-BUS:/var/run/dbus:/bin/false haldaemon:x:82:82:User for HAL:/var/run/hald:/bin/false pop:x:90:90:POP:/:/bin/false nobody:x:99:99:nobody:/:/bin/false v_pupkin:*:10000:10000:Пупкин Василий Иванович:/home/TRANSIT/v_pupkin:/bin/bash administrator:*:10001:10000:Administrator:/home/TRANSIT/administrator:/bin/bash dns-dc1:*:10002:10000:dns-dc1:/home/TRANSIT/dns-dc1:/bin/bash krbtgt:*:10003:10000:krbtgt:/home/TRANSIT/krbtgt:/bin/bash guest:*:10004:10001:Guest:/home/TRANSIT/guest:/bin/bash # getent group root:x:0:root bin:x:1:root,bin daemon:x:2:root,bin,daemon ..... ..... domain admins:x:10013:administrator domain guests:x:10001: schema admins:x:10014:administrator domain users:x:10000: dnsadmins:x:10015:
Отлично! Всё необходимое мы проверили - работает! Теперь приступим к самлому серьёзному - установки shadow.
Собираем и устанавливаем shadow
Скачаем последнюю версию, на сегодня, shadow, соберем с поддержкой РАМ и установим в систему.
# wget http://pkg-shadow.alioth.debian.org/releases/shadow-4.1.5.tar.gz # tar xf shadow-4.1.5.tar.gz # cd shadow-4.1.5.1 # ./configure \ --prefix=/usr \ --sysconfdir=/etc \ --mandir=/usr/man \ --docdir=/usr/doc/shadow-4.1.5.1 \ --disable-shared \ --without-libcrack \ --with-libpam # make # make install DESTDIR=/tmp/shadow-4.1.5.1 # cd /tmp/shadow-4.1.5.1 # makepkg -l y -c n /tmp/shadow-4.1.5.1-i586-pam-1.tgz # upgradepkg --reinstall --install-new /tmp/shadow-4.1.5.1-i586-pam-1
Всё, shadow установлен, теперь нужно настроить РАМ и в соседней консоли проверить работоспособность.
Настройка и проверка работоспособности
Настройки РАМ находятся в каталоге /etc/pam.d. Изначально его нет, нужно создать.
В этом каталоге находятся текстовые файлы с политиками. И именуются эти файлы, соответственно сервису, к которому политики применяются.
Т.е. для программы login, это login и т.д.
Вначале статьи есть архив каталога pam.d с моими рабочими файлами, можете взять их для примера и настроить под себя, или просто создать свои.
/etc/pam.conf содержит все политики PAM для вашей системы
http://www.freebsd.org/doc/ru/articles/pam/ http://rus-linux.net/lib.php?name=/MyLDP/sec/pam.html http://citforum.ru/operating_systems/articles/pam.shtml