Для обеспечения корректной работы механизмов аутентификации прокси-сервера 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
RSS - Записи
Спасибо! Очень хорошая статься. Когда будет продолжение?
Пока воюем со схемами аутентификации 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 /