Возможно кому-то будет интересен мой опыт настройки прокси-сервера Squid 3.1.16 с кучей плюшек и фенечек =)
Итак, задача: поднять прокси-сервер, который будет авторизовывать пользователей по нескольким схемам (Kerberos, NTLM, BASIC через LDAP-запрос в AD), раздавать права на возможность скачивания определённых файлов и ограничения по скорости согласно группам безопасности из домена Windows 2003 Active Directory и проверять скачиваемые файлы антивирусом ClamAV, снимать онлайн-статистику через Sq_stat и генерировать отчёты через LightSquid.
В общей сложности, надо поставить (в скобках нужные USE-флаги):
net-proxy/squid (caps ecap epoll icap-client kerberos kernel_linux ldap logrotate pam samba sasl ssl)
net-proxy/c-icap
app-antivirus/clamav (bzip2 iconv)
net-proxy/squidclamav
app-crypt/mit-krb5 (keyutils pkinit threads)
net-fs/samba (acl ads aio avahi caps client cups ldap netapi pam readline server smbclient smbtav2 winbind)
Итак, приводим конфиг Squid к чему-то подобному:
## Общие настройки
http_port myhostname:3128
http_port 127.0.0.1:3128
visible_hostname myvisiblehostname
maximum_object_size 16 MB
maximum_object_size_in_memory 1 MB
# столько отдадим оперативки под кэш
cache_mem 512 MB
cache_dir aufs /mnt/squid/cache 19000 24 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
# Выключим ведение лога менеджера кэша
cache_store_log none
cache_mgr mymail@mydomain
# Время ожидания при выключении
shutdown_lifetime 5 seconds
# Говорим использовать русские язык на страницах ошибок
error_directory /etc/squid/errors/ru
# Форсируем кэширование определённых типов файлов и протоколов
refresh_pattern -i \.gif$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.png$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.jpg$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.jpeg$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.zip$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern ^ftp: 720 20% 10080
refresh_pattern . 1440 50% 86400
# пароль для менеджера кэша, используется sq_stat'ом
cachemgr_passwd megapass all
# Так как у нас нет других сквидов для обмена кэшами - заблокируем такой обмен
icp_access deny all
## Параметры авторизации
# Попытка №1
# Аутентифицируем по Kerberos-тикету залогоненного юзвера в домене AD
# используется файл ключей /etc/krb5.keytab и принципал "http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM" из него
auth_param negotiate program /usr/libexec/squid/squid_kerb_auth \
-s http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM \
# -d
auth_param negotiate children 10
auth_param negotiate keep_alive on
# Попытка №2
# Аутентифицируем через NTLM/SSP-запрос с помощью Samba и winbind
auth_param ntlm program /usr/bin/ntlm_auth \
--domain=MY-LOCALREALM \
--helper-protocol=squid-2.5-ntlmssp \
--use-cached-creds \
# --diagnostics
auth_param ntlm children 10
auth_param ntlm keep_alive on
# Попытка №3
# Аутентифицируем простым запросом имени и пароля с проверкой через LDAP-запрос в домене AD
auth_param basic program /usr/libexec/squid/squid_ldap_auth -R \
-D MY-LDAP-QUERY-USER@MY-LOCALREALM -W /etc/squid/ldap_pass \
-b "dc=MY-LOCALREALM" \
-f "sAMAccountname=%s" \
MY-FQDN-PDC
auth_param basic children 5
auth_param basic realm MegaProxy MegaAuthentication =)
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
auth_param basic utf8 on
# Правило проверки принадлежности аутентифицированного пользователя к определённой группе в AD
# Это и есть авторизация =)
external_acl_type AD_users %LOGIN /usr/libexec/squid/squid_ldap_group -K -R \
-b "DC=MY-LOCALREALM" \
-f "(&(sAMAccountname=%v)(memberOf=CN=%a,OU=MY-AD-SQUID-OU,DC=MY-LOCALREALM))" \
-D MY-LDAP-QUERY-USER@MY-LOCALREALM -W /etc/squid/ldap_pass \
MY-FQDN-PDC
## Политики разграничения доступа
# Требование к пользователю, чтобы тот однозначно авторизовался
acl auth_user proxy_auth REQUIRED
# Внешние группы для офисных пользователей, берутся проверкой из AD
# полная скорость
acl group_inet-max_speed external AD_users SQUID_max_speed
acl group_inet-slow_speed external AD_users SQUID_slow_speed
acl group_inet-no_download external AD_users SQUID_deny_download_files
## Группы адресов
# сервера
acl servers_net src 10.1.1.0/24 10.1.11.0/24
# офисная сеть
acl office_net src 10.1.16.0/24
acl local_dst dst 10.0.0.0/8 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24
acl loopback_src src 127.0.0.1
acl loopback_dst dst 127.0.0.1
acl all_src src all
acl all_dst dst all
# Список внешних важных адресов, куда пускаем напрямую всех
acl whitelist_ips dst "/etc/squid/lists/whitelist_ips"
acl whitelist_urls url_regex "/etc/squid/lists/whitelist_urls"
# Ограничение по "чёрному" списку доменов с привязкой по времени. Во внерабочее время список не действует
acl blacklist_urls url_regex "/etc/squid/lists/blacklist_urls"
acl worktime_1 time MTWHF 09:00-12:30
acl worktime_2 time MTWH 13:20-18:00
acl worktime_3 time F 13:20-17:00
# Типы файлов
acl filetype_video urlpath_regex -i \.mp3$ \.mpeg$ \.avi$ \.flv$ \.mov$ \.mpg$ \.wmv$
acl filetype_exe urlpath_regex -i \.exe$ \.bat$ \.cmd$ \.dll$ \.vbs$ \.cab$ \.scr$ \.pif$ \.jar$ \.com$ \.class$ \.ocx$ \.flv$ \.iflv$ \.mp3$
acl filetype_ole urlpath_regex -i \.dll$ \.js$ \.vbs$ \.doc$ \.xls$ \.msp$ \.swf$
acl filetype_archive urlpath_regex -i \.zip$ \.arj$ \.rar$ \.7z$
acl proto_ftp proto FTP
# Для ручного удаления объекта из кэша
acl purge_method method PURGE
# Менеджер управления кэшем
acl cache_manager proto cache_object
# Типы портов
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563
# Специальный метод туннелирования через наш прокси. Юзается для SSL и других специальных типов соединений
# В частности, ICQ/Skype могут использовать его для связи если идут через наш прокси
acl connect_method method CONNECT
## Расределение трафика
# предполагается, что у нас канал обеспечивающий 500 kbytes/s up/down
# 2 очереди
delay_pools 2
# Inet_full_speed
# 400kb общий лимит, временный разгон до 500kb. На каждого по 100kb, временный разгон до 300kb
delay_class 1 2
delay_parameters 1 400000/500000 100000/300000
delay_access 1 allow group_inet-max_speed
delay_access 1 allow servers_net
delay_access 1 allow whitelist_ips
delay_access 1 allow whitelist_urls
delay_access 1 deny all
# Inet_slow_speed
# 100kb общий лимит, временный разгон до 200kb. На каждого по 32kb, временный разгон до 64kb
# пускаем сюда всех, кто не прошёл по первой очереди
delay_class 2 2
delay_parameters 2 100000/200000 32768/65536
delay_access 2 deny group_inet-max_speed
delay_access 2 deny servers_net
delay_access 2 deny whitelist_ips
delay_access 2 deny whitelist_urls
delay_access 2 allow all
## Применение политик доступа
# важен порядок следования правил !!!
# ручное удаление объектов из кэша доступно только на самом сервере
http_access allow purge_method loopback_src
http_access deny purge_method
# доступ самого сквида
http_access allow cache_manager loopback_src
http_access deny cache_manager
# чёрный список сайтов в рабочее время
http_access deny blacklist_urls worktime_1
http_access deny blacklist_urls worktime_2
http_access deny blacklist_urls worktime_3
# пропускаем к важным внешним серверам (whitelist)
http_access allow whitelist_ips
http_access allow whitelist_urls
# пропускаем сервера
http_access allow servers_net
# пропускаем к локальным ресурсам (если вдруг)
http_access allow local_dst
# только разрешённые порты, туннель только для SSL (исключая локальные передачи)
http_access deny !Safe_ports !local_dst
http_access deny connect_method !SSL_ports !local_dst
# запрещаем ftp
http_access deny proto_ftp
# блокируем скачивание видео-файлов
http_access deny filetype_video group_inet-no_download
http_access deny filetype_exe group_inet-no_download
http_access deny filetype_archive group_inet-no_download
# пропускаем max_speed
http_access allow group_inet-max_speed auth_user
# пропускаем slow_speed
http_access allow group_inet-slow_speed auth_user
http_access deny all
# Ответы разрешаем получать всем, т.к. мы фильтруем только запросы
http_reply_access allow all
## Специальные указания на пропуск кэширования
always_direct allow whitelist_ips
always_direct allow whitelist_urls
always_direct allow local_dst
cache deny whitelist_ips
cache deny whitelist_urls
cache deny local_dst
cache deny loopback_dst
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
## Проверка антивирусом
# Проверяем транзитные файлы антивирусом Clamav используя посредника c-icap и его модуль squidclamav
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_service antivirus respmod_precache bypass=0 icap://localhost:1344/clamav
# Запрещаем использовать антивирус при локальной передаче
adaptation_access antivirus deny local_dst
# Запрещаем для доверенных сайтов (whitelist)
adaptation_access antivirus deny whitelist_ips
adaptation_access antivirus deny whitelist_urls
# Всем остальным включаем
adaptation_access antivirus allow all
Небольшие пояснения:
MY-LOCALDOMAIN-FQDN - полное DNS-имя нашего прокси в локальной сети (шото типа proxy.local)
MY-LOCALREALM - название домена Windows (вроде MEGAFIRMA.LOCAL). Его ОБЯЗАТЕЛЬНО надо писать заглавными буквами!
MY-LDAP-QUERY-USER - имя пользователя в домене, от имени которого Squid будет делать поиск в LDAP-дереве AD
MY-FQDN-PDC - полное DNS-имя (можно просто ip-адрес) контроллера домена (вроде server.megafirma.local)
MY-AD-SQUID-OU - название подразделения (Organizational unit) в дереве AD, где будут лежать группы безопасности для Squid'а). На самом деле, пофиг где будет лежать, главное правильно потом написать DN (distinguished name) - в данном случае, DN= OU=MY-AD-SQUID-OU,DC=MY-LOCALREALM
SQUID_max_speed, SQUID_slow_speed, SQUID_deny_download_files - группы безопасности в домене (должны лежать в MY-AD-SQUID-OU). Пользователи, которые будут принадлежать первой будут иметь максимальную скорость, ко второй - поменьше, в третьей - которым будет запрещено скачивать файлы с определёнными расширениями.
Далее, нам надо завести 2 пользователя в домене - MY-LDAP-QUERY-USER и MY-SQUID-KERBEROS-USER с правами "Гость домена", обоим убрать истечение срока действия пароля и запретить его смену. Пользователю MY-LDAP-QUERY-USER задать какой-нибудь пароль и сохранить его в текстовый файл в папке со Squid'ом под именем /etc/squid/ldap_pass (сохранение в текстовик необязательно, просто иначе этот пароль будет светиться в списке процессов ps).
Далее, заходим на наш контроллер домена и выполняем следующую комманду:
ktpass -princ http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM -mapuser MY-SQUID-KERBEROS-USER -crypto rc4-hmac-nt-pass <пароль пользователя MY-SQUID-KERBEROS-USER> -ptype KRB5_NT_SRV_HST -out pdc.keytab
Собственно, эта команда создаст файл с KERBEROS-ключом для пользователя MY-SQUID-KERBEROS-USER. Этот файл надо перенести на машину со Squid'ом в файл krb5.keytab
Далее, открываем наш конфиг Kerberos /etc/krb5.conf и приводим к такому виду:
[libdefaults]
default_realm = MY-LOCALREALM
clockskew = 300
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
default_keytab_name = /etc/krb5.keytab
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]
MY-LOCALREALM = {
kdc = MY-FQDN-PDC
admin_server = MY-FQDN-PDC
default_domain = MY-FQDN-PDC
kpasswd_server = MY-FQDN-PDC
}
[domain_realm]
.MY-LOCALREALM = MY-LOCALREALM
MY-LOCALREALM = MY-LOCALREALM
Итак, задача: поднять прокси-сервер, который будет авторизовывать пользователей по нескольким схемам (Kerberos, NTLM, BASIC через LDAP-запрос в AD), раздавать права на возможность скачивания определённых файлов и ограничения по скорости согласно группам безопасности из домена Windows 2003 Active Directory и проверять скачиваемые файлы антивирусом ClamAV, снимать онлайн-статистику через Sq_stat и генерировать отчёты через LightSquid.
В общей сложности, надо поставить (в скобках нужные USE-флаги):
net-proxy/squid (caps ecap epoll icap-client kerberos kernel_linux ldap logrotate pam samba sasl ssl)
net-proxy/c-icap
app-antivirus/clamav (bzip2 iconv)
net-proxy/squidclamav
app-crypt/mit-krb5 (keyutils pkinit threads)
net-fs/samba (acl ads aio avahi caps client cups ldap netapi pam readline server smbclient smbtav2 winbind)
Итак, приводим конфиг Squid к чему-то подобному:
## Общие настройки
http_port myhostname:3128
http_port 127.0.0.1:3128
visible_hostname myvisiblehostname
maximum_object_size 16 MB
maximum_object_size_in_memory 1 MB
# столько отдадим оперативки под кэш
cache_mem 512 MB
cache_dir aufs /mnt/squid/cache 19000 24 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
# Выключим ведение лога менеджера кэша
cache_store_log none
cache_mgr mymail@mydomain
# Время ожидания при выключении
shutdown_lifetime 5 seconds
# Говорим использовать русские язык на страницах ошибок
error_directory /etc/squid/errors/ru
# Форсируем кэширование определённых типов файлов и протоколов
refresh_pattern -i \.gif$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.png$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.jpg$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.jpeg$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern -i \.zip$ 43200 90% 86400 override-lastmod override-expire
refresh_pattern ^ftp: 720 20% 10080
refresh_pattern . 1440 50% 86400
# пароль для менеджера кэша, используется sq_stat'ом
cachemgr_passwd megapass all
# Так как у нас нет других сквидов для обмена кэшами - заблокируем такой обмен
icp_access deny all
## Параметры авторизации
# Попытка №1
# Аутентифицируем по Kerberos-тикету залогоненного юзвера в домене AD
# используется файл ключей /etc/krb5.keytab и принципал "http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM" из него
auth_param negotiate program /usr/libexec/squid/squid_kerb_auth \
-s http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM \
# -d
auth_param negotiate children 10
auth_param negotiate keep_alive on
# Попытка №2
# Аутентифицируем через NTLM/SSP-запрос с помощью Samba и winbind
auth_param ntlm program /usr/bin/ntlm_auth \
--domain=MY-LOCALREALM \
--helper-protocol=squid-2.5-ntlmssp \
--use-cached-creds \
# --diagnostics
auth_param ntlm children 10
auth_param ntlm keep_alive on
# Попытка №3
# Аутентифицируем простым запросом имени и пароля с проверкой через LDAP-запрос в домене AD
auth_param basic program /usr/libexec/squid/squid_ldap_auth -R \
-D MY-LDAP-QUERY-USER@MY-LOCALREALM -W /etc/squid/ldap_pass \
-b "dc=MY-LOCALREALM" \
-f "sAMAccountname=%s" \
MY-FQDN-PDC
auth_param basic children 5
auth_param basic realm MegaProxy MegaAuthentication =)
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
auth_param basic utf8 on
# Правило проверки принадлежности аутентифицированного пользователя к определённой группе в AD
# Это и есть авторизация =)
external_acl_type AD_users %LOGIN /usr/libexec/squid/squid_ldap_group -K -R \
-b "DC=MY-LOCALREALM" \
-f "(&(sAMAccountname=%v)(memberOf=CN=%a,OU=MY-AD-SQUID-OU,DC=MY-LOCALREALM))" \
-D MY-LDAP-QUERY-USER@MY-LOCALREALM -W /etc/squid/ldap_pass \
MY-FQDN-PDC
## Политики разграничения доступа
# Требование к пользователю, чтобы тот однозначно авторизовался
acl auth_user proxy_auth REQUIRED
# Внешние группы для офисных пользователей, берутся проверкой из AD
# полная скорость
acl group_inet-max_speed external AD_users SQUID_max_speed
acl group_inet-slow_speed external AD_users SQUID_slow_speed
acl group_inet-no_download external AD_users SQUID_deny_download_files
## Группы адресов
# сервера
acl servers_net src 10.1.1.0/24 10.1.11.0/24
# офисная сеть
acl office_net src 10.1.16.0/24
acl local_dst dst 10.0.0.0/8 192.168.1.0/24 192.168.2.0/24 192.168.3.0/24
acl loopback_src src 127.0.0.1
acl loopback_dst dst 127.0.0.1
acl all_src src all
acl all_dst dst all
# Список внешних важных адресов, куда пускаем напрямую всех
acl whitelist_ips dst "/etc/squid/lists/whitelist_ips"
acl whitelist_urls url_regex "/etc/squid/lists/whitelist_urls"
# Ограничение по "чёрному" списку доменов с привязкой по времени. Во внерабочее время список не действует
acl blacklist_urls url_regex "/etc/squid/lists/blacklist_urls"
acl worktime_1 time MTWHF 09:00-12:30
acl worktime_2 time MTWH 13:20-18:00
acl worktime_3 time F 13:20-17:00
# Типы файлов
acl filetype_video urlpath_regex -i \.mp3$ \.mpeg$ \.avi$ \.flv$ \.mov$ \.mpg$ \.wmv$
acl filetype_exe urlpath_regex -i \.exe$ \.bat$ \.cmd$ \.dll$ \.vbs$ \.cab$ \.scr$ \.pif$ \.jar$ \.com$ \.class$ \.ocx$ \.flv$ \.iflv$ \.mp3$
acl filetype_ole urlpath_regex -i \.dll$ \.js$ \.vbs$ \.doc$ \.xls$ \.msp$ \.swf$
acl filetype_archive urlpath_regex -i \.zip$ \.arj$ \.rar$ \.7z$
acl proto_ftp proto FTP
# Для ручного удаления объекта из кэша
acl purge_method method PURGE
# Менеджер управления кэшем
acl cache_manager proto cache_object
# Типы портов
acl SSL_ports port 443 563
acl Safe_ports port 21 80 443 563
# Специальный метод туннелирования через наш прокси. Юзается для SSL и других специальных типов соединений
# В частности, ICQ/Skype могут использовать его для связи если идут через наш прокси
acl connect_method method CONNECT
## Расределение трафика
# предполагается, что у нас канал обеспечивающий 500 kbytes/s up/down
# 2 очереди
delay_pools 2
# Inet_full_speed
# 400kb общий лимит, временный разгон до 500kb. На каждого по 100kb, временный разгон до 300kb
delay_class 1 2
delay_parameters 1 400000/500000 100000/300000
delay_access 1 allow group_inet-max_speed
delay_access 1 allow servers_net
delay_access 1 allow whitelist_ips
delay_access 1 allow whitelist_urls
delay_access 1 deny all
# Inet_slow_speed
# 100kb общий лимит, временный разгон до 200kb. На каждого по 32kb, временный разгон до 64kb
# пускаем сюда всех, кто не прошёл по первой очереди
delay_class 2 2
delay_parameters 2 100000/200000 32768/65536
delay_access 2 deny group_inet-max_speed
delay_access 2 deny servers_net
delay_access 2 deny whitelist_ips
delay_access 2 deny whitelist_urls
delay_access 2 allow all
## Применение политик доступа
# важен порядок следования правил !!!
# ручное удаление объектов из кэша доступно только на самом сервере
http_access allow purge_method loopback_src
http_access deny purge_method
# доступ самого сквида
http_access allow cache_manager loopback_src
http_access deny cache_manager
# чёрный список сайтов в рабочее время
http_access deny blacklist_urls worktime_1
http_access deny blacklist_urls worktime_2
http_access deny blacklist_urls worktime_3
# пропускаем к важным внешним серверам (whitelist)
http_access allow whitelist_ips
http_access allow whitelist_urls
# пропускаем сервера
http_access allow servers_net
# пропускаем к локальным ресурсам (если вдруг)
http_access allow local_dst
# только разрешённые порты, туннель только для SSL (исключая локальные передачи)
http_access deny !Safe_ports !local_dst
http_access deny connect_method !SSL_ports !local_dst
# запрещаем ftp
http_access deny proto_ftp
# блокируем скачивание видео-файлов
http_access deny filetype_video group_inet-no_download
http_access deny filetype_exe group_inet-no_download
http_access deny filetype_archive group_inet-no_download
# пропускаем max_speed
http_access allow group_inet-max_speed auth_user
# пропускаем slow_speed
http_access allow group_inet-slow_speed auth_user
http_access deny all
# Ответы разрешаем получать всем, т.к. мы фильтруем только запросы
http_reply_access allow all
## Специальные указания на пропуск кэширования
always_direct allow whitelist_ips
always_direct allow whitelist_urls
always_direct allow local_dst
cache deny whitelist_ips
cache deny whitelist_urls
cache deny local_dst
cache deny loopback_dst
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
## Проверка антивирусом
# Проверяем транзитные файлы антивирусом Clamav используя посредника c-icap и его модуль squidclamav
icap_enable on
icap_send_client_ip on
icap_send_client_username on
icap_service antivirus respmod_precache bypass=0 icap://localhost:1344/clamav
# Запрещаем использовать антивирус при локальной передаче
adaptation_access antivirus deny local_dst
# Запрещаем для доверенных сайтов (whitelist)
adaptation_access antivirus deny whitelist_ips
adaptation_access antivirus deny whitelist_urls
# Всем остальным включаем
adaptation_access antivirus allow all
Небольшие пояснения:
MY-LOCALDOMAIN-FQDN - полное DNS-имя нашего прокси в локальной сети (шото типа proxy.local)
MY-LOCALREALM - название домена Windows (вроде MEGAFIRMA.LOCAL). Его ОБЯЗАТЕЛЬНО надо писать заглавными буквами!
MY-LDAP-QUERY-USER - имя пользователя в домене, от имени которого Squid будет делать поиск в LDAP-дереве AD
MY-FQDN-PDC - полное DNS-имя (можно просто ip-адрес) контроллера домена (вроде server.megafirma.local)
MY-AD-SQUID-OU - название подразделения (Organizational unit) в дереве AD, где будут лежать группы безопасности для Squid'а). На самом деле, пофиг где будет лежать, главное правильно потом написать DN (distinguished name) - в данном случае, DN= OU=MY-AD-SQUID-OU,DC=MY-LOCALREALM
SQUID_max_speed, SQUID_slow_speed, SQUID_deny_download_files - группы безопасности в домене (должны лежать в MY-AD-SQUID-OU). Пользователи, которые будут принадлежать первой будут иметь максимальную скорость, ко второй - поменьше, в третьей - которым будет запрещено скачивать файлы с определёнными расширениями.
Далее, нам надо завести 2 пользователя в домене - MY-LDAP-QUERY-USER и MY-SQUID-KERBEROS-USER с правами "Гость домена", обоим убрать истечение срока действия пароля и запретить его смену. Пользователю MY-LDAP-QUERY-USER задать какой-нибудь пароль и сохранить его в текстовый файл в папке со Squid'ом под именем /etc/squid/ldap_pass (сохранение в текстовик необязательно, просто иначе этот пароль будет светиться в списке процессов ps).
Далее, заходим на наш контроллер домена и выполняем следующую комманду:
ktpass -princ http/MY-LOCALDOMAIN-FQDN@MY-LOCALREALM -mapuser MY-SQUID-KERBEROS-USER -crypto rc4-hmac-nt-pass <пароль пользователя MY-SQUID-KERBEROS-USER> -ptype KRB5_NT_SRV_HST -out pdc.keytab
Собственно, эта команда создаст файл с KERBEROS-ключом для пользователя MY-SQUID-KERBEROS-USER. Этот файл надо перенести на машину со Squid'ом в файл krb5.keytab
Далее, открываем наш конфиг Kerberos /etc/krb5.conf и приводим к такому виду:
[libdefaults]
default_realm = MY-LOCALREALM
clockskew = 300
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
forwardable = yes
default_keytab_name = /etc/krb5.keytab
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]
MY-LOCALREALM = {
kdc = MY-FQDN-PDC
admin_server = MY-FQDN-PDC
default_domain = MY-FQDN-PDC
kpasswd_server = MY-FQDN-PDC
}
[domain_realm]
.MY-LOCALREALM = MY-LOCALREALM
MY-LOCALREALM = MY-LOCALREALM
Комментариев нет:
Отправить комментарий