Для обеспечения корректной работы механизмов аутентификации прокси-сервера Squid нам потребуется выполнить настройку механизма разрешения имён DNS и службу синхронизации времени по протоколу NTP. В первой заметке мы определились с тем, что наш Ubuntu Server будет включён в существующую инфраструктуру Active Directory (AD), где в качестве серверов DNS выполняющих разрешение имён как внутренних зон DNS так и любых внешних, выступают контроллеры домена. Поэтому Ubuntu Server будет настроен нами как DNS-клиент отправляющий DNS-запросы к контроллерам домена. Помимо этого, для успешной работы Kerberos нам потребуется, чтобы текущее время на Ubuntu Server было сопоставимо с временем на клиентских компьютерах и контроллерах домена. Как правило, в инфраструктуре AD клиентские компьютеры синхронизируют время с контроллерами домена, где работает службы NTP, поэтому по аналогии настроим Ubuntu Server на получение точного времени с контроллеров домена. В конце этой заметки, после настройки DNS и NTP, выполним установку Squid.
Настраиваем конфигурацию DNS
Для начала проверим содержимое файла resolv.conf, которое ранее было сконфигурировано в процессе установки Ubuntu Server:
cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.160.0.253 nameserver 10.160.0.254 search holding.com
Как видим в файле уже есть информация о двух nameserver и имени домена используемом для поиска. Нам нужно добавить в этот файл строчку 'domain holding.com'. Однако метод прямой правки файла для нас не будет иметь смысла, так как он, согласно комментария в заголовке файла, будет переписан утилитой resolvconf. Поэтому изменим один из конфигурационных файлов этой утилиты (файл будет создан, если его не существует):
sudo nano /etc/resolvconf/resolv.conf.d/tail
Впишем в этот файл нужную нам строку, которая будет дописана в конец файла resolv.conf при его генерации утилитой resolvconf:
domain holding.com
Выполним команду регенерации resolv.conf:
sudo resolvconf -u
Снова проверим содержимое файла resolv.conf и убедимся в том, что нужная нам строка была в него добавлена
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 10.160.0.253 nameserver 10.160.0.254 search holding.com domain holding.com
Дополнительные объяснения того, как формируется файл resolv.conf с помощью утилиты resolvconf можно найти например в статье Stéphane Graber's - DNS in Ubuntu 12.04
***
Убеждаемся в том, что DNS-клиент функционирует корректно и способен разрешать адреса как из внутренней доменной зоны DNS (А-записи) так и из интернета.
ping kom-ad01-dc01.holding.com -c 4 && ping ya.ru -c 4
PING kom-ad01-dc01.holding.com (10.160.0.253) 56(84) bytes of data. 64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=1 ttl=128 time=0.175 ms 64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=2 ttl=128 time=0.250 ms 64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=3 ttl=128 time=0.258 ms 64 bytes from kom-ad01-dc01.holding.com (10.160.0.253): icmp_seq=4 ttl=128 time=0.422 ms --- kom-ad01-dc01.holding.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 0.175/0.276/0.422/0.090 ms PING ya.ru (213.180.204.3) 56(84) bytes of data. 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=1 ttl=56 time=39.5 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=2 ttl=58 time=39.1 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=3 ttl=58 time=39.2 ms 64 bytes from www.yandex.ru (213.180.204.3): icmp_seq=4 ttl=58 time=39.5 ms --- ya.ru ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3013ms rtt min/avg/max/mdev = 39.147/39.373/39.552/0.173 ms
***
Проверяем наличие PTR-записей во внутренней DNS-зоне обратного просмотра для контроллеров домена, а также для нашего будущего прокси-сервера (их мы должны создать предварительно) по примеру:
dig -x 10.160.0.2
; <<>> DiG 9.9.5-3-Ubuntu <<>> -x 10.160.0.2 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23738 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4000 ;; QUESTION SECTION: ;2.0.160.10.in-addr.arpa. IN PTR ;; ANSWER SECTION: 2.0.160.10.in-addr.arpa. 3600 IN PTR kom-ad01-gw10.holding.com. ;; Query time: 1 msec ;; SERVER: 10.160.0.253#53(10.160.0.253) ;; WHEN: Fri May 30 22:47:54 MSK 2014 ;; MSG SIZE rcvd: 98
Настраиваем конфигурацию NTP
Устанавливаем на наш Ubuntu Server службу NTPD, которая будет отвечать в системе за постоянную синхронизацию времени.
sudo apt-get install ntp
Настраиваем конфигурационный файл службы
sudo nano /etc/ntp.conf
Комментируем строчки где прописаны NTP-серверы Ubuntu и добавляем контроллеры домена
# server 0.ubuntu.pool.ntp.org # server 1.ubuntu.pool.ntp.org # server 2.ubuntu.pool.ntp.org # server 3.ubuntu.pool.ntp.org # server ntp.ubuntu.com
server kom-ad01-dc01.holding.com server kom-ad01-dc02.holding.com
При необходимости мы можем отключить поддержку IPv6 для ntp отредактировав файл /etc/default/ntp. Для этого нужно найти строчку…
NTPD_OPTS='-g'
…и заменить её на:
NTPD_OPTS='-4 -g'
Чтобы отвадить ntpd прослушивать все интерфейсы за исключением нужных нам, в конец конфигурационного файла /etc/ntp.conf добавляем строчки:
interface ignore wildcard interface listen 10.160.0.2
Перезапускаем службу ntpd и проверяем результат:
sudo invoke-rc.d ntp stop * Stopping NTP server ntpd [ OK ] sudo invoke-rc.d ntp start * Starting NTP server ntpd [ OK ] sudo ss -lnptu | sort | grep :123 tcp UNCONN 0 0 10.160.0.2:123 *:* users:(("ntpd",12738,17)) tcp UNCONN 0 0 127.0.0.1:123 *:* users:(("ntpd",12738,16))
Проверяем статус синхронизации
sudo ntpq –4 -p
Проверяем текущее время:
date
Устанавливаем SQUID
Теперь настало время выполнить установку Squid 3, так как в дальнейшем для настройки поддержки механизмов аутентификации нам потребуется наличие каталога /etc/squid3/
sudo apt-get install squid3 ldap-utils
После установки проверим с какими параметрами собран установленный Squid, чтобы убедиться в том, что он сможет работать со всеми нужными нам хелперами (вспомогательными утилитами выполняющими аутентификацию и авторизацию пользователей)
squid3 -v
Squid Cache: Version 3.3.8 Ubuntu configure options: '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' '--datadir=/usr/share/squid3' '--sysconfdir=/etc/squid3' '--mandir=/usr/share/man' '--enable-inline' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-underscores' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,MSNT,MSNT-multi-domain,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid3' '--with-logdir=/var/log/squid3' '--with-pidfile=/var/run/squid3.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'
Отдельным цветом выделены хелперы наличие которых нам будет необходимо для дальнейшей настройки Squid.
В следующей части мы рассмотрим процедуру подготовки Ubuntu Server к работе с механизмами аутентификации Kerberos и NTLM.
***
Предыдущие части цикла заметок:
Часть 1. Установка ОС на ВМ Hyper-V Gen2
Часть 2. Настройка диска для кэша Squid
Следующие части цикла заметок:
Часть 4. Конфигурация Kerberos и NTLM
Часть 5. Конфигурация Squid 3
Часть 6. Настройка Proxy Auto Configuration (WPAD)
Часть 7. Кастомизация страниц ошибок
Часть 8. Конфигурация SqStat
Часть 9. Конфигурация LightSquid
Часть 10. Отключаем IPv6
Спасибо! Очень хорошая статься. Когда будет продолжение?
Пока воюем со схемами аутентификации Kerberos и NTLM. В принципе работающая конфигурация уже получена но есть ещё, что попробовать. Хочется выдать в итоге какое-то более или менее годное решение, поэтому пока с публикацией не тороплюсь. Но мы над этим работаем :)
Добавлять domain holding.com в resolv.conf не нужно.
Этого вполне достаточно:
nameserver 10.160.0.253
nameserver 10.160.0.254
search holding.com
Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 6. Настройка Proxy Auto Configuration (WPAD) | Блог IT-KB /
Обратная ссылка: Высоко-доступный балансировщик Zen Load Balancer (ZenLB) Community Edition на базе 64-битной ОС Ubuntu Server 14.04 | Блог IT-KB /
Обратная ссылка: Настройка прокси сервера Squid 3.3 на Ubuntu Server 14.04 LTS. Часть 4. Конфигурация Kerberos и NTLM | Блог IT-KB /