Установка и настройка прокси-сервера Squid с kerberos авторизацией на ОС FreeBSD

Установка и настройка прокси-сервера Squid с kerberos авторизацией на ОС FreeBSD

Автор
Оцените материал
(4 голосов)

Для организации кеширования web-трафика необходимо использовать прокси сервер. В данной статье пойдет речь об установке и настройке ОС FreeBSD и прокси сервера Squid для работы в доменной среде Windows.

1. Устанавливаем на ПК (физический или виртуальный) ОС FreeBSD последней доступной версии. Номера версии программ не указываю намеренно, т.к. они постоянно обновляются. Процесс установки

ОС в данную статью не входит, т.к. он тривиально прост и доступен любому системному администратору (не сложнее установки Windows).

2. Из портов устанавливаем дополнительное ПО:

  1. Apache
  2. PHP со всеми доступными модулями
  3. Krb5
  4. Logrotate
  5. MySql клиент и сервер
  6. Openldap-sasl-client
  7. Samba
  8. Winbind
  9. Squid
  10. SquidGuard

Все связанные программы подтянутся автоматически во время установки. После этого приступаем к самой настройке работоспособности сервера.

Настраиваем DNS.

Для правильной настройки DNS правим файл /etc/resolv.conf Содержание файла:

domain ВАШ ЛОКАЛЬНЫЙ ДОМЕН
search ВАШ ЛОКАЛЬНЫЙ ДОМЕН
nameserver ВАШ ЛОКАЛЬНЫЙ DNS сервер
nameserver ВАШ ЛОКАЛЬНЫЙ DNS сервер

 

Настройка синхронизации времени.

Для корректной работы авторизации доменных пользователей необходимо синхронизировать сервер с временем контроллера домена. Настройки производятся в файле /etc/ntp.conf. По большому счету особых настроек производить не нужно. Достаточно вписать в раздел списка источников времени адрес контроллера домена (можно всех):

 server ВАШ КОНТРОЛЛЕР ДОМЕНА

 Остальные источники закомментировать.

 В файл /etc/rc.conf добавляем строку:

 ntpd_enable="YES"

 Запускаем сервер времени: /etc/rc.d/ntpd start

Настройка Samba.

  Переходим в каталог /usr/local/etc

  1. Нас интересует файл smb4.conf. Если такого файла нет, то создаем.
  2. Содержимое файла:
    [global]
    workgroup = ВАШ ДОМЕН
    server string = WebProxy
    security = ADS
    hosts allow = ВАШИ ВНУТРЕННИИ СЕТИ 127.
    log file = /var/log/samba4/log.%m
    max log size = 500
    password server = FGDN КОНТРОЛЛЕРА ДОМЕНА
    realm = ВАШ ДОМЕН
    kerberos method = secrets and keytab
    client signing = yes
    client use spnego = yes
    dns proxy = no
    unix charset = koi8-r
    dos charset = cp866
    winbind use default domain = yes
    winbind uid = 10000-15000
    winbind gid = 10000-15000
    winbind enum users = yes
    winbind enum groups = yes
    client NTLMv2 auth = yes
    winbind refresh tickets = yes
  3. В файл /etc/rc.conf добавляем строчку: samba_server_enable="Yes"
  4. Запускаем сервер командой: /usr/local/etc/rc.d/samba_server start

Настройка Kerberos.

  1. Открывакм файл /etc/krb5.conf Если такого файла нет, то создаем.
  2. Содержимое файла:
    [libdefaults]
            default_realm = ВАШ ДОМЕН
            clockskew = 300
            dns_lookup_kdc = true
            dns_lookup_realm = true
            ticket_lifetime = 24h

            renew_lifetime = 7d
            forwardable = yes

            default_keytab_name = /usr/local/etc/squid/squid.keytab

    # for Windows 2008 with AES
        default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5


    [realms]
            ВАШ ДОМЕН = {
                    kdc = FQDN ПЕРВОГО КОНТРОЛЛЕРА ДОМЕНА
                    kdc = FQDN ВТОРОГО КОНТРОЛЛЕРА ДОМЕНА
                    admin_server = FQDN КОНТРОЛЛЕРА ДОМЕНА
                    kpasswd_server = FQDN КОНТРОЛЛЕРА ДОМЕНА
                    default_domain = ВАШ ДОМЕН
            }

    [domain_realm]
            .ваш домен = ВАШ ДОМЕН
            ваш домен = ВАШ ДОМЕН

    [logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmin.log

  3. В домене создаем пользователя webproxyuser с паролем webproxysquid
  4. Заходим в консоль любого контроллера домена. Открываем сомандную строку с правами администратора. Создаем файл keytab с помощью команды: ktpass -princ HTTP/FGDN вашего прокси-сервера@ваш домен -mapuser webproxy@ваш домен -crypto rc4-hmac-nt -pass "webproxysquid" -ptype KRB5_NT_PRINCIPAL -out squid.keytab
  5. Копируем полученный файл в каталог /usr/local/etc/squid
  6. Задаем права доступа на скопированный файл: chown squid:squid /usr/local/etc/squid/squid.keytab

Настройка SQUID

Все настройки работы прокси-сервера Squid осуществляются в файле /usr/local/etc/squid/squid.conf.

Что требуется для доменной авторизации:

  1. Настраиваем методы авторизации на прокси-сервере:
    auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -r -s HTTP/FQDN прокси-сервера@ВАШ.ДОМЕН
    auth_param negotiate children 100 startup=10 idle=5
    auth_param negotiate keep_alive on
    Эти три строчки относятся к "kerberos авторизации". Данный тип авторизации необходим доменным пользователям Windows для того, что бы пользователю не выдавалось окно авторизации при каждом открытии браузера. Т.е., так называемая, прозрачная авторизация.

    auth_param basic program /usr/local/libexec/squid/basic_ldap_auth -R -D adread@ваш.домен -W /usr/local/etc/squid/scrt -b "DC=ваш,DC=домен" -f "sAMAccountName=%$s" -h ИП АДРЕСС КД
    auth_param basic children 30 startup=5 idle=1
    auth_param basic realm Enter your password
    auth_param basic credentialsttl 12 hours
    auth_param basic casesensitive off
    Это, так называемая, "basic" авторизация. Необходима для работы на устройствах, не входящих в домен. При открытии браузера выдается окно, в котором необходимо ввести имя и пароль пользователя из домена, имеющего право доступа в интернет. Для функционирования необходимо в домене создать пользователя с логином adread. Этот пользователь необходим для того, что бы Squid смог сопоставить вводимое имя на соответствие с пользователем домена. Пароль данного пользователя записывается в файл /usr/local/etc/squid/scrt. На файл scrt назначаются права 640.
  2. Активируем доступ доменным пользователем, описываем часы и дни рабочего времени:
    acl DOMAIN_USERS proxy_auth REQUIRED
    acl WorkTime time MTWHF 09:00-18:00

    external_acl_type ldap_users ttl=1200 %LOGIN /usr/local/libexec/squid/ext_ldap_group_acl -R -b "DC=ваш,DC=домен" -f "(&(sAMAccountName=%v) (memberOf:1.2.840.113556.1.4.1941:=cn=%a,OU=WebProxy,DC=ваш,DC=домен))" -D adread@ваш.домен -W /usr/local/etc/squid/scrt -h FQDN КД

    Немного подробнее о последней строке. Здесь происходит проверка наличия пользователя АД в группах и подгруппах опреденного контейнера. В нашем случае в АД создан контейнер "WebProxy", в котором созданы группы с которыми оперирует Squid. Пришлось создать отдельный контейнер, т.к. возникла некая несовместимость с кириллическими названиями контейнеров АД.

 

Далее настраиваем ACL, режем видео и аудио потоки, рекламу и т.д. Описание этих действий будет входить в дальнейшие статьи.

Дополнительная информация

Прочитано 14413 раз Последнее изменение Понедельник, 08 января 2018 22:18
Другие материалы в этой категории: Bind 9 - разделение ДНС для разных сетей »
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Madwavenew
Top
Этот шаблон Joomla был скачан с сайта ДжуМикс.