Заметки сисадмина о интересных вещах из мира IT, инструкции и рецензии. Настраиваем Компьютеры/Сервера/1С/SIP-телефонию в Москве

Авторизация squid в домене Windows 2003 Server

2007-03-08 · Posted in FreeBSD

Авторизация squid в домене Windows 2003 Server

FreeBSD 5.4 + Squid-2.5.stable9 + авторизация в домене Windows 2003 Server

В данном руководстве предполагается, что прокси-сервер работает под
операционной системой FreeBSD версии 5.4, контроллер домена стоит на Windows
2003 Server Enterprise Edition. Эта статья рассчитана на совершенно
неподготовленного пользователя, поэтому просьба некоторым сильно
"продвинутым" товарищам воздержаться от комментариев в ее адрес, т.к. их
мнения нахрен не нужны никому. Способов авторизации, которые применяются в
Squid довольно много. Здесь будет рассмотрен только один. Все программное
обеспечение ставилось из портов.

1. Необходимое программное обеспечение

1.1 Операционная система FreeBSD-5.4
1.2 Клиент Kerberos производства HEIMDAL версии 0.6.3
1.3 Прокси-сервер Squid версии 2.5.STABLE9
1.4 Samba-3.0.12
1.5 Должна быть установлена коллекция портов

2. Необходимые настройки операционной системы

2.1 Разрешение имен

2.1.1 Если в сети есть DNS-сервер, c настроенными зонами прямого и обратного
просмотра, то в файле /etc/resolv.conf надо прописать следующее:

        domain <имя_домена>
        nameserver <IP-адрес DNS-сервера>

Пример:

        domain fuck-you.ru
        nameserver 192.168.0.101

2.1.2 Если в сети нет DNS-сервера, то необходимо изменить файлы hosts на
контроллере домена и на FreeBSD.

Для FreeBSD добавим следующие строчки в файл /etc/hosts

        <IP-адрес контроллера домена> <полное_имя> <псевдоним>
        <IP-адрес компа с FreeBSD> <полное_имя> <псевдоним>

Пример:

        192.168.0.101 srv.fuck-you.ru srv
        192.168.0.100 freebsd.fuck-you.ru freebsd

Для контроллера домена Windows 2003 Server в файл
\Windows\System32\drivers\etc\hosts пишем следующее:

        <IP-адрес сервера> <имя_хоста> <полное_имя>
        <IP-адрес компа с FreeBSD> <имя_хоста> <полное имя>

Пример:

        192.168.0.101 srv srv.fuck-you.ru
        192.168.0.100 freebsd freebsd.fuck-you.ru

Примечание: Операционная система Windows не обязательно ставится в папку
C:\Windows, поэтому файл hosts может быть найден так:
<имя_системного_диска>:\<имя_системной_папки>\System32\drivers\etc\hosts

2.2 Согласование времени

Между контроллером домена и системой FreeBSD системное время не должно
различаться более, чем на 5 минут, иначе сервер Керберос не выдаст билет,
необходимый для аутентификации и соответственно вся система не будет работать.

3 Установка программного обеспечения

3.1 Установка Керберос производства HEIMDAL

3.1.1 Переходим в каталог порта:

        cd /usr/ports/security/heimdal

3.1.2 Вводим команду:

        make install

Система полезет в интернет, чтобы закачать оттуда пакет heimdal-0.6.3.tar.gz.
Если закачать пакет по какой-то причине не удастся, то скачать его с помощью
другой машины и скопировать в /usr/ports/distfiles, после чего снова выполнить
пункты, начиная с 3.1.1.

3.1.3. Перейти в каталог:

        cd /usr/ports/security/heimdal/work/heimdal-0.6.3

и скопировать оттуда файл krb5.conf в каталог /etc/

        cp krb5.conf /etc/

3.2 Настройка клиента Керберос

3.2.1 Файл /etc/krb5.conf должен выглядеть примерно так:

        [libdefaults]
        default_realm = FUCK-YOU.RU
        clockskew = 300
        v4_instance_resolve = false
        v4_name_convert = {
        host = {
        rcmd = host
        ftp = ftp
        }
        plain = {
        something = something-else
        }
        }

        [realms]
        FUCK-YOU.RU = {
        kdc = srv.fuck-you.ru
        admin_server = srv.fuck-you.ru
        }

        [domain_realm]
        .fuck-you.ru = FUCK-YOU.RU

В этом файле обязательно должен быть соблюден регистр букв, то есть БОЛЬШИЕ
БУКВЫ должны быть БОЛЬШИМИ, а маленькие соответственно маленькими.
fuck-you.ru и FUCK-YOU.RU – имя домена, используемого в моей системе. У вас,
естественно оно будет другим.

kdc – это имя центра распределения ключей. Обычно оно совпадает с именем
виндовозного серванта, если он один.

3.2.2 Проверка соединения с сервером Kerberos

        kinit -p <имя_юзера_из_домена>@<имя_домена>

Пример:

        kinit -p Administrator@fuck-you.ru либо:
        kinit -p Administrator

Система в ответ должна написать:

        Administrator@FUCK-YOU.RU's password:

Вводим пароль админа, если вы, конечно админ, либо пароль юзера, имя которого
идет после команды kinit -p и нажимаем enter. Система должна ответить:

        kinit: NOTICE: ticket renewable lifetime is 1 week в случае правильного пароля

или

        kinit: krb5_get_init_creds: Preauthentication failed, если пароль неверный.

3.2.3 Проверим состояние соединения

        klist

Ответ системы должен быть примерно такой:

        Credentials cache: FILE:/tmp/krb5cc_0
        Principal: Administrator@FUCK-YOU.RU

          Issued    ExpiresPrincipal
        Aug 18 14:50:56   Aug 19 00:50:50    krbtgt/FUCK-YOU.RU@FUCK-YOU.RU

в благоприятном случае, то есть был получен билет от Kerberos.

 

3.3 Установка и настройка Samba-3.0.12

3.3.1 Переходим в каталог портов

        cd /usr/ports/net/samba3

3.3.2 Настраиваем конфигурацию Samba:

        make config

Должно появиться окно, где клавишей пробел устанавливаем либо снимаем крестик
с нужной опции. Для тех, кто в танке: если крестик установлен, то опция будет
установлена, а если крестик снят – сам не знаю, что будет.

В принципе, для работы создаваемой системы достаточно, чтобы были установлены

        [X] ADS
        [X] WINBIND

Приведу пример своих настроек:

        [X] LDAP  With LDAP support (с подержкой LDAP протокола)[может пригодиться]
        [X] ADS   With Active Directory support (обязательно)
        [X] CUPS  With CUPS printing support(печать на виндовые принтеры или наоборот)
        [X] WINBIND  With WinBIND support (обязательно)
        [X] ACL_SUPPORT With ACL support (хорошая вещь, также пригодится)
        [X] SYSLOG  With Syslog support (протоколирование событий)
        [X] QUOTAS  With Quota support
        [X] UTMP  With UTMP support (хрен знает, что такое)
        [X] MSDFS  With MSDFS support
        [ ] SAM_XML
        [X] SAM_MYSQL
        [X] SAM_PGSQL
        [ ] SAM_OLD_LDAP
        [X] PAM_SMBPASS (не помешает)
        [ ] EXP_MODULES (лучше не ставить)
        [X] POPT (тоже непонятная хрень)

Нажимаем ОК

        make install

Нужные пакеты закачиваются из интернета, конфигурируются и ставятся.

3.3.3 Редактирование файла smb.conf:
Копируем файл smb.conf.default в smb.conf

        cp /usr/ports/net/samba3/work/smb.conf.default /usr/local/etc/smb.conf

либо переименовываем файл /usr/local/etc/smb.conf.default в /usr/local/etc/smb.conf
Редактируем этот файл:

        ee /usr/local/etc/smb.conf

У меня он выглядит так:

        [global]
        workgroup = fuck-you
        server string = fuck you mazefakers
        netbios name =freebsd
        security = ads
        realm = fuck-you.ru
        password server = srv.fuck-you.ru
        encrypt passwords = yes
        winbind separator = +
        winbind use default domain = yes
        winbind uid = 10000-15000
        winbind gid = 10000-15000
        winbind enum users = yes
        winbind enum groups = yes

        host allow = 192.168.0 127.0.0.1 (только для моей сетки принимаются запросы)

        log file = /var/log/samba/log.%m
        max log size = 50

На самом деле файл намного длиннее, но все остальные настройки к системе дела
не имеют.

3.3.5 Пробуем войти в домен

        net ads join -U administrator%password

Пример:
       
        net ads join -U administrator%3214

При удачном исходе система должна написать примерно следующее:

        Joined 'FREEBSD' to realm 'FUCK-YOU.RU'

При появлении такого ответа можно и за пивком сбегать – в принципе полдела уже
сделано.

3.3.6 Настройка запуска SAMB'ы

Добавляем строку samba_enable="YES" в /etc/rc.conf
либо вместо этой строки несколько других строк для раздельного запуска:

        smbd_enable="YES"
        nmbd_enable="YES"
        winbindd_enable="YES"

Для нашей системы достаточно, чтобы в файле было либо smbd_enable, либо
winbindd_enable.

3.3.7 После перезагрузки Samba запустится автоматически, либо можно запустить
вручную:

        /usr/local/etc/rc.d/samba.sh

3.3.8 Проверка работоспособности winbind
Пишем команду:

        wbinfo -t

Должен появиться ответ:

        checking the trust secret via RPC calls succeeded.

Если такой ответ получен, значит доверительная учетная запись компьютера
создана.

3.3.9 Проверяем нормальную работу winbind

        wbinfo -u

Должен появиться список пользователей и компьютеров, для нашего компа должно
быть : freebsd$

        wbinfo -g

Должны увидеть список групп в контроллере домена

3.3.10 Проверяем аутентификацию в домене

        wbinfo -a <имя_юзера>%<пароль_юзера>

Пример:

        wbinfo -a irina%321

Ответ: 

        plaintext password authentification succeeded
        challenge/response password authentification succeeded

3.4 Настройка файла переключения служб /etc/nsswitch
Добавляем следующие строки:

        passwd: files winbind
        group:  files winbind

3.5 Проверка распознавания системой FreeBSD доменных пользователей:
Пример:
       
        id Administrator

Ответ:

        uid=10000(Administrator) gid=10005(пользователи домена)
        groups=10005(пользователи домена) , 10004(администраторы домена) и т.д

3.6 Установка и настройка прокси-сервера Squid-2.5.stable9
Заходим в /usr/ports/www/squid и забиваем команду:

        make install

Как и всегда все должно закачаться и поставиться автоматически.
Настраиваем конфигурационный файл /usr/local/etc/squid/squid.conf.
В нем должны присутствовать такие строки:

        auth_param ntlm program /usr/local/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp
        auth_param ntlm children 10
        auth_param ntlm max_challenge_reuses 0
        auth_param ntlm max_challenge_lifetime

        auth_param basic program /usr/local/bin/ntlm_auth –helper-protocol=squid-2.5-basic
        auth_param basic children 10
        auth_param basic realm Squid proxy-caching web server
        auth_param basic credentialsttl 2 hours
        auth_param basic casesensitive off

        acl all src 0.0.0.0/0.0.0.0
        acl squidusers proxy_auth REQUIRED(определяем группу юзеров)
        http_access allow squidusers(разрешаем им доступ)
        http_access deny all

3.7 Выставляем права доступа на каталог /var/db/samba/winbindd_priveleged
Они должны быть 750(rwx-r-x—). Группой владельца должна быть группа squid.

3.8 Перезапускаем SQUID и проверяем работу системы. В браузере выставляем, чтобы он ходил через прокси, указываем номер порта, указынный в конфиге сквида. В случае использования Internet Explorer сквидовское окно с запросом авторизации не должно высвечиваться, то есть все будет абсолютно прозрачно. В случае Оперы, Мозиллы и т.д все-таки придется вбивать логин и пароль.

Примечание: Если учетные записи из домена Windows имеют русское написание, то
хоть тресни – работать система не будет.

Васильченко Евгений <evg@sibmail.ru.>

Leave a Reply