Есть желание разработать рабочую схему аудентификации рабочих станций под ос windows xp на unix сервере.
Предположительная схема работы выглядит следущим образом:
На рабочих станциях меняются библиотеки отвечающие за аудентификацию пользователя.
Для этих целей будет использоваться следующий проект
http://www.pgina.org/ Со стороны сервера возможно использование самых различных вариантов аудентификации.
В данном случае я буду использовать ldap аудентификацию.
Ресурсы, програмное обеспечение, куда копать и что делать первоначальный набросок.
Подготовка лаборатории:
Имеется персональный компьютер следующей конфигурации:
Процесор AMD Athlon(tm) 64 X2 Dual Core Processor 5200
ОЗУ - 2 Gb
ОС gentoo
Ядро самосборное, параметры системы, и механизм настройки лаборатории указывать не буду.
Укажу лишь основные пункты. В качестве системы виртуализации используется kvm, соответственно должны быть подгружены следующие модули:
kvm, kvm_amd для использования аппаратной виртуализации(естественно в биосе функции апаратной виртуализации должны быть включены).
tun, bridge модули требуются для настройки сети.
При желании данные модули могут быть вкомпилированны в ядро.
Для дальнейшей работы мне потребуется 2 виртуальных машины,
для сервера:
os linux, ради простоты экперимента будет использоваться debian etch
место хранения пользовательских бюджетов - openldap
способ редактирования пользовательских данных - для начала ручками формирую ldif файлы, а далее возможно написание скриптов, либо управление через какую либо вебморду.
для рабочей станции:
os windows xp,
пакет pgina.
Чтобы особо не мудрить с выделением ресурсов остановлюсь на следующих параметрах для обеих машинок:
отрезаю два диска по 5 Gb жесткий диск (в моем случае это lvm
http://gazette.linux.ru.net/rus/articles/taleLinuxLVM.html ),
500 Mb озу
Запуск выглядит следующим образом:
для windows
kvm -drive file=/dev/lvm_disk/windows,if=ide,media=disk -drive file=/dev/hdb,if=ide,media=cdrom -m 512 -net nic,macaddr=52:54:00:12:34:57 -net tapдалее устанавливаем саму операционку.
для linux поступаем аналогичным образом.
Проблема:
После установки debian etch на виртуальный компьютер обнаружилась слдующая трабла:
Ядро которое встало по умолчанию отказывалось загружаться.
Небольшие поиски в инете навели на
http://sourceforge.net/tracker/index.php?func=detail&aid=1906272&group_id=180599&atid=893831После добавления параметра -no-kvm в строку запуска виртуальной машины загрузка прошла без проблем.
В дальнейшем было добавленно другое ядро (
aptitude install kernel-image-2.6-amd64-generic), и полет продолжился в правильном направлении.
По окончании подготовки тестовой лаборатории оскрипт запуска выглядит следующим образом:
#!/bin/bash
# laba for pgina - ldap
# start laba
case $1 in
start)
echo "start laba"
# load modules
modprobe kvm
modprobe kvm-amd
modprobe bridge
modprobe tun
# add bridge, make nat for windows and linux
brctl addbr switch
ifconfig switch 192.168.10.1
iptables -t nat -A POSTROUTING -s 192.168.10.10 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.5 -j MASQUERADE
# start windows
kvm -drive file=/dev/lvm_disk/test,if=ide,media=disk -drive file=/dev/hdb,if=ide,media=cdrom -m 256 -net nic,macaddr=52:54:00:12:34:57 -net tap -name WindowsXP &
# start linux
kvm -drive file=/dev/lvm_disk/fedora,if=ide,index=0,media=disk -cdrom /home/chemist/Downloads/iso/debian-40r3-i386-DVD-1.iso -m 512 -net nic -net tap -name Debian &
;;
stop)
echo "stop laba"
brctl delbr switch
iptables -t nat -D POSTROUTING -s 192.168.10.10 -j MASQUERADE
iptables -t nat -D POSTROUTING -s 192.168.10.5 -j MASQUERADE
rmmod tun
rmmod bridge
rmmod kvm-amd
rmmod kvm
;;
*)
echo "try laba start|stop"
;;
esac
По идее в скрипте необходимы строчки для завершения работы виртуальных машин, но для меня это не актуально.
Итого в итоге имеем два виртуальных компьютера.
Далее требуется настроить сеть между ними, и лаборатория готова к дальнейшему использованию.
За сим первый шаг в подготовке закончен, и можно переходить непосредственно к решению первоначальной задачи.
Ну чтож следующим шагом будет установка и настройка openldap.
aptitude install ldap-server
aptitude install ldap-clientПри желании можно добавить вебинтерфейс
aptitude install phpldapadminДалее производим первоначальную настройку:
/etc/ldap/slapd.confПривожу то что я правил
loglevel 256
database bdb
suffix "dc=laba"
rootdn "cn=admin,dc=laba"
rootpw мегапароль
directory "/var/lib/ldap"и ограничения по безопастности
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=laba" write
by * auth
by * none
access to *
by self write
by anonymous read
by * noneВообщемто для тех целей что мне интересны, этого более чем достаточно.
В случае применения на боевой инфраструктуре этим параметрам стои уделить куда больше внимания.
/etc/ldap/ldap.conf - параметры для ldap-client
BASE dc=laba
URI ldap://debian - так зовется мой виртуальный linux
Теперь можно остановить ldap, и подготовить почву для новой базы данных.
/etc/init.d/slapd stopудалим имеющуюся базу ldap
rm /var/lib/ldap/*стартуем сервис заного
/etc/init.d/slapd start проверяем успешный старт.
tail -f /var/log/syslog
netstat -ltwПробуем подцепиться клиентом
ldapsearch -D "cn=admin,dc=laba" -W -xв итоге должны получить следующее сообщение:
Enter LDAP Password:
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# search result
search: 2
result: 32 No such object
# numResponses: 1Если все так, готовим минимальный ldif файл.
У меня он выглядит следующим образом:
cat pgina.ldif
dn: dc=laba
objectClass: dcObject
objectClass: organization
objectClass: top
dc: laba
o: home
dn: ou=Users,dc=laba
ou: Users
objectClass: organizationalUnit
objectClass: top
dn: ou=Groups,dc=laba
ou: Groups
objectClass: organizationalUnit
objectClass: top
dn: cn=chemist,ou=Users,dc=laba
givenName: Alexej
sn: Smirnov
cn: chemist
uid: chemist
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/chemist
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
dn: cn=test,ou=Users,dc=laba
givenName: test
sn: test
cn: test
uid: test
uidNumber: 1001
gidNumber: 1000
homeDirectory: /home/test
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
dn: cn=Users,ou=Groups,dc=laba
cn: users
gidNumber: 1000
objectClass: posixGroup
objectClass: top
memberUid: chemist
memberUid: test
далее заливаем данные на ldap сервер
ldapadd -D "cn=admin,dc=laba" -W -x -f pgina.ldif
Enter LDAP Password:
adding new entry "dc=laba"
adding new entry "ou=Users,dc=laba"
adding new entry "ou=Groups,dc=laba"
adding new entry "cn=chemist,ou=Users,dc=laba"
adding new entry "cn=test,ou=Users,dc=laba"
adding new entry "cn=Users,ou=Groups,dc=laba"Теперь необходимо установить пароли для заведенных пользователей
ldappasswd -S -x -D "cn=admin,dc=laba" -W "cn=chemist,ou=users,dc=laba"
New password:
Re-enter new password:
Enter LDAP Password:
Result: Success (0)
ldappasswd -S -x -D "cn=admin,dc=laba" -W "cn=test,ou=users,dc=laba"
New password:
Re-enter new password:
Enter LDAP Password:
Result: Success (0)
Пробуем подсоединиться пользователем
ldapsearch -x -D "cn=chemist,ou=users,dc=laba" -W
Enter LDAP Password:
результат который должен получиться:
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# chemist, Users, laba
dn: cn=chemist,ou=Users,dc=laba
givenName: Alexej
sn: Smirnov
cn: chemist
uid: chemist
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/chemist
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: top
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Если нет желания писать ldif файл можно воспользоваться phpldapadmin.
Если все прошло удачно, можно переходить к настройке WindowsXP
Требуется выкачать следующие пакеты:
http://sourceforge.net/project/showfiles.php?group_id=53525pGina 1.8.8
Plugin Bundle 12-30-2006Далее разархивируем и устанавливаем pgina и ldapauth.
Запускаем
пуск/все программы/pGina/Configuration Tools
Вкладка
PluginBrowse - выбираем интересующий плугин, в моем случае
c:\pGina\plugins\ldapauth\ldapauth_plus.dllПока оставляем там все как есть.
Advanced - т.к. я цепляюсь к windows через rdp ставлю галочку
Enable TerminalServices and Remout Desktop supportздесь пока все, жмем ок.
Запускаем
Plugin TesterBrowse - выбираем ldapauth_plus.dll как и ранее.
configure - непосредственно настройка
я выставил следующие параметры:
LDAP Configuration
LDAP Method: Map Mode - аудентификация на рабочей станции проходит pgina успешно аудентифицируется на ldap сервере
LDAP Server: 192.168.10.5
Port: 389
PrePend: cn=
Append: ou=users,dc=labaПоследние 2 строки получаю следующим образом:
ldapsearch -x uid=chemist dn dn: cn=chemist,ou=Users,dc=laba - тут PrePend все что до имени пользователя, Append все что после.
Жмем
OKВводим
Test DataUsername: chemist
Password: мегапарольжмем
LoginЕсли получаем
Successful Test то все ок
Жмем
ОК и
ExitТеперь выходим из системы, и пробуем подцепиться с бюджетом хранящимся в ldap каталоге.
Эксперимент удался.
Если кому интересно выложу видео запись последней части эксперимента.
Выкладываю