1. Устанавливаем на ПК (физический или виртуальный) ОС FreeBSD последней доступной версии. Номера версии программ не указываю намеренно, т.к. они постоянно обновляются. Процесс установки
ОС в данную статью не входит, т.к. он тривиально прост и доступен любому системному администратору (не сложнее установки Windows).
2. Из портов устанавливаем дополнительное ПО:
- Apache
- PHP со всеми доступными модулями
- Krb5
- Logrotate
- MySql клиент и сервер
- Openldap-sasl-client
- Samba
- Winbind
- Squid
- 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
- Нас интересует файл smb4.conf. Если такого файла нет, то создаем.
- Содержимое файла:
[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 - В файл /etc/rc.conf добавляем строчку: samba_server_enable="Yes"
- Запускаем сервер командой: /usr/local/etc/rc.d/samba_server start
Настройка Kerberos.
- Открывакм файл /etc/krb5.conf Если такого файла нет, то создаем.
- Содержимое файла:
[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 - В домене создаем пользователя webproxyuser с паролем webproxysquid
- Заходим в консоль любого контроллера домена. Открываем сомандную строку с правами администратора. Создаем файл keytab с помощью команды: ktpass -princ HTTP/FGDN вашего прокси-сервера@ваш домен -mapuser webproxy@ваш домен -crypto rc4-hmac-nt -pass "webproxysquid" -ptype KRB5_NT_PRINCIPAL -out squid.keytab
- Копируем полученный файл в каталог /usr/local/etc/squid
- Задаем права доступа на скопированный файл: chown squid:squid /usr/local/etc/squid/squid.keytab
Настройка SQUID
Все настройки работы прокси-сервера Squid осуществляются в файле /usr/local/etc/squid/squid.conf.
Что требуется для доменной авторизации:
- Настраиваем методы авторизации на прокси-сервере:
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. - Активируем доступ доменным пользователем, описываем часы и дни рабочего времени:
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, режем видео и аудио потоки, рекламу и т.д. Описание этих действий будет входить в дальнейшие статьи.