- 5 И так, теперь стоит отметить что дано
- 2 Описание файла wpad.dat
- 1 Упрощенная схема работы WPAD
- 2 Чем хороша данная технология
- 4 Плюсы и минусы Peek-n-splice
- 1 Squid должен быть собран с такими параметрами
- 2 Установка необходимых пакетов из официальных репозиториев
- 3 Ручная установка Squid и дополнительных пакетов
- 4 Установка прав доступа для каталога swap
- 7 Настраиваем selinux
- 8 генерация swap
- 9 Включение демона squid, проверка конфигурационного файла
- 1 Конфигурационный файл /etc/krb5.conf
- 2 Создание DNS-записи
- 3 Варианты интеграции с доменом
- 3.1 Интеграция средствами Windows
- 3.2 Интеграция средствами Linux
- 4 Рекомендуемые права на файл krb5.keytab
- 5 Группы доступа AD
- 6 Проверка авторизации
- 1 Установка и конфигурирование web-сервера apache2
- 3 Создание CNAME
- 1 Установка SARG из исходников
- 2 Конфигурирование SARG
- 3 Расписание генерации отчетов при помощи cron
- 6 групповые политики
- 1 Редактирование GPO
- Возможные ошибки
- Настройка dhcp и кеширующего dns
- Настройка nat и брандмауэра
- Настройка прокси-сервера squid3 с поддержкой ssl
- Настройка сети
5 И так, теперь стоит отметить что дано
— Хост с Active Directory 2021R2 (метод авторизация пользователей — Kerberos)10.0.0.9
— Хост с CentOS 7 (x64) (он же веб-сервер для отдачи wpad.dat, он же прокси-сервер) 10.0.0.10
— Тестовый хост с ОС Windows для проверки работы 10.0.0.11
«Поехали» Гагарин Ю.А.
2 Описание файла wpad.dat
По дефолту в каталоге /var/www/html/wpad.dat файл отдается всем без дополнительных настроек apache2, а это как раз необходимо для корректного взаимодействия с клиентскими машинами на ОС Windows.
Строчки
if (isInNet( host, "192.168.0.0", "255.255.255.0") ||
isInNet( host, "10.0.0.0", "255.255.255.0") ||
1 Упрощенная схема работы WPAD
— Клиент на ОС Windows обращается к DNS-серверу с запросом на хост
2 Чем хороша данная технология
Плюсы:
— нет необходимости через GPO прописывать всем клиентам адрес-прокси— Мобильность сотрудников (доступ к интернету вне офиса)— Чтобы отключить использование данной технологии, достаточно отключить в «Свойствах браузера» — «Автоматическое получение настроек»
Минусы:
— «Автоматическое получение настроек» можно отключить любому пользователю, поэтому данную функцию лучше оставить включенной и запретить ее изменение через GPO
4 Плюсы и минусы Peek-n-splice
Плюсы:
1 Squid должен быть собран с такими параметрами
$ squid -v
Squid Cache: Version 3.5.16
Service Name: squid
configure options: ‘–build=x86_64-redhat-linux-gnu’ ‘–host=x86_64-redhat-linux-gnu’ ‘–program-prefix=’ ‘–prefix=/usr’ ‘–exec-prefix=/usr’ ‘–bindir=/usr/bin’ ‘–sbindir=/usr/sbin’ ‘–sysconfdir=/etc’ ‘–datadir=/usr/share’ ‘–includedir=/usr/include’ ‘–libdir=/usr/lib64’ ‘–libexecdir=/usr/libexec’ ‘–sharedstatedir=/var/lib’ ‘–mandir=/usr/share/man’ ‘–infodir=/usr/share/info’ ‘–verbose’ ‘–exec_prefix=/usr’ ‘–libexecdir=/usr/lib64/squid’ ‘–localstatedir=/var’ ‘–datadir=/usr/share/squid’ ‘–sysconfdir=/etc/squid’ ‘–with-logdir=$(localstatedir)/log/squid’ ‘–with-pidfile=$(localstatedir)/run/squid.pid’ ‘–disable-dependency-tracking’ ‘–enable-follow-x-forwarded-for’ ‘–enable-auth’ ‘–enable-auth-basic=DB,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB,getpwnam,fake’ ‘–enable-auth-ntlm=smb_lm,fake’ ‘–enable-auth-digest=file,LDAP,eDirectory’ ‘–enable-auth-negotiate=kerberos,wrapper’ ‘–enable-external-acl-helpers=wbinfo_group,kerberos_ldap_group,LDAP_group,delayer,file_userip,SQL_session,unix_group,session,time_quota’ ‘–enable-cache-digests’ ‘–enable-cachemgr-hostname=localhost’ ‘–enable-delay-pools’ ‘–enable-epoll’ ‘–enable-icap-client’ ‘–enable-ident-lookups’ ‘–enable-linux-netfilter’ ‘–enable-removal-policies=heap,lru’ ‘–enable-snmp’ ‘–enable-storeio=aufs,diskd,ufs,rock’ ‘–enable-wccpv2’ ‘–enable-esi’ ‘–enable-ssl-crtd’ ‘–enable-icmp’ ‘–with-aio’ ‘–with-default-user=squid’ ‘–with-filedescriptors=16384’ ‘–with-dl’ ‘–with-openssl’ ‘–with-pthreads’ ‘–with-included-ltdl’ ‘–disable-arch-native’ ‘–enable-ecap’ ‘–without-nettle’ ‘build_alias=x86_64-redhat-linux-gnu’ ‘host_alias=x86_64-redhat-linux-gnu’ ‘CFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic’ ‘LDFLAGS=-Wl,-z,relro ‘ ‘CXXFLAGS=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong –param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC’ ‘PKG_CONFIG_PATH=:/usr/lib64/pkgconfig:/usr/share/pkgconfig’ —enable-ltdl-convenience
2 Установка необходимых пакетов из официальных репозиториев
Стоит отметить, что для установки кальмара нужны некоторые зависимости. К сожалению, у CentOS довольно скудные официальные репозитории, поэтому некоторые пакеты надо качать с неофициальных. Установка необходимых пакетов из оф.репозиториев:
# yum install -y libtool-ltdl perl-DBI perl-Digest-MD5 cyrus-sasl-gssapi krb5-workstation
3 Ручная установка Squid и дополнительных пакетов
# rmp -Uvh squid-3.5.8-4.el7.centos.x86_64.rpm libecap-1.0.0-3.el7.centos.x86_64.rpm squid-helpers-3.5.8-4.el7.centos.x86_64.rpm perl-Crypt-OpenSSL-X509-1.803-4.el7.x86_64.rpm
Если что-то не так, в терминале отобразится чего не хватает.
4 Установка прав доступа для каталога swap
# chown squid:squid /var/spool/squid
7 Настраиваем selinux
В файле
/etc/selinux/config
должно быть значение:
SELINUX=enforcing
Устанавливаем пакет для работы с selinux:
# yum install policycoreutils-python
Добавляем правила selinux
Разрешаем подключения к кальмару:
# setsebool -P squid_connect_any on
Разрешаем kerberos:
# setsebool -P allow_kerberos on
Разрешаем подключения к кальмару на 3130 порту:
# semanage port -a -t squid_port_t -p tcp 3130
После изменения параметров selinux, необходимо перезагрузить систему для их применения.
# reboot
8 генерация swap
# squid -z
9 Включение демона squid, проверка конфигурационного файла
# systemctl enable squid
# squid -k parse
Варнингов и эрроров не должно быть. Если же что-то есть — необходимо проверить настройки.
1 Конфигурационный файл /etc/krb5.conf
Конфигурационный файл
/etc/krb5.conf
необходимо привести к следующему виду:
2 Создание DNS-записи
Всем отлично известно, что Active Directory тесно завязан с DNS, и для корректной работы авторизации, необходимо создать узел (A или ААА) c указание имени хоста и его ip-адреса (Получается запись
3 Варианты интеграции с доменом
И так,
есть два стула
варианта интеграции с доменом. Первый вариант — средствами Windows (
ktpass
), второй вариант — средствами Linux (
Msktutil
). Windows вариант хорош тем, что можно отключить срок действия пароля для пользователя
squid
. Версия Linux хороша тем, что можно вводить в домен через создание учетной записи компьютера.
3.1 Интеграция средствами Windows
Создаем пользователя в AD, например
squid
Теперь генерируем
krb5.keytab
. В командной строке на контроллере домена с правами администратора необходимо выполнить данную команду:
3.2 Интеграция средствами Linux
В архиве со сквидом и зависимостями также приложен msktutil, устанавливаем его:
# rpm -Uhv msktutil-0.5.1-2.el7.x86_64.rpm
Теперь выполняем следующую команду:
4 Рекомендуемые права на файл krb5.keytab
После перемещения
krb5.keytab
, рекомендуется понизить права доступа к файлу
# chown squid:squid /etc/krb5.keytab && chmod 644 /etc/krb5.keytab
5 Группы доступа AD
В ActiveDirectory в
OU
6 Проверка авторизации
Проверка авторизации в Active Directory при помощи файла
/etc/krb5.keytab
1 Установка и конфигурирование web-сервера apache2
Установка web-сервера:
3 Создание CNAME
На DNS-сервере Active Directory необходимо создать
cnamewpad
1 Установка SARG из исходников
Если не был установлен gcc ранее, сейчас самое время:
2 Конфигурирование SARG
Стандартный файл конфигурации
/usr/local/etc/sarg.conf
лучше забекапить:
# mv /usr/local/etc/sarg.conf /usr/local/etc/sarg.conf.default
Теперь создаем файл
sarg.conf
со следующим содержанием:
access_log /var/log/squid/access.log
output_dir /var/www/html/squid-reports
date_format e
overwrite_report yes
language UTF-8
3 Расписание генерации отчетов при помощи cron
# crontab -e
Добавляем строчку:
55 23 * * * /usr/local/bin/sarg -xd day-0
Данная строчка указывает, что отчеты будут генерироваться каждый день и за текущий день в 23:55
6 групповые политики
Здесь все неоднозначно и может зависит, от каких-то особенностей. В текущей задаче было разумным решением исключить возможность установки прокси-сервера пользователя, или же отключения «Автоматического определения параметров».
1 Редактирование GPO
Для запрета ввода прокси-сервера или изменения настроек по автоматическому определению параметров, можно воспользоваться групповой политикой. Создаем и связываем групповую политику с
OU
например,
office
Редактируем групповую политику:
Пользователь → Политики → Административные шаблоны → Компоненты Windows → Internet Explorer
В данном каталоге найти параметры и перевести в статус
«Включено»«Запретить изменение параметров прокси»
«Отключить изменение параметров автоматической»
В заключение сказать могу вот что, данная конфигурация успешно работает по настоящее время с весны 2021-го, и отлично себя зарекомендовала. На все вопросы буду рад ответить.
UPD №1: 12.11.161 Были убраны из конфига сквида лишние строки портов 3128 и 3129.2 включил selinux и добавил правила.3 Была убрана генерация сертификата из мануала(без него работает)4 Мелкие исправленияUPD №2: 20.11.
Возможные ошибки
На некоторых сайтах будут возникать ошибки связанные с невозможностью проверки корневого сертификата. В данном случае необходимо либо добавить данные корневые сертификаты в файл cabundle.file либо отключить проверку сертификатов в squid.conf (ЭТО НЕБЕЗОПАСНО!):
sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER
Настройка dhcp и кеширующего dns
В наших решениях эту роль обычно исполняет dnsmasq, не будем отступать от традиций и в этот раз. Установим данный пакет:
apt install dnsmasq
Для настройки откроем файл /etc/dnsmasq.conf и внесем некоторые изменения. Прежде всего ограничим адреса, которые будут слушать наши службы:
listen-address=127.0.0.1, 192.168.187.1
Затем зададим пул для выдачи адресов через DHCP и срок аренды:
dhcp-range=192.168.187.120,192.168.187.199,255.255.255.0,12h
Для одноранговой сети будет неплохо указать DNS-суффикс, чтобы избежать сложностей с разрешением плоских имен:
local=/interface31.lab/
Перезапустим службу:
service dnsmasq restart
Теперь проверим получение адреса на клиенте и возможность доступа с него в интернет, если вы не допустили ошибок, то все должно работать.
Просмотреть список выданных в аренду адресов можно командой:
cat /var/lib/misc/dnsmasq.leases
Настройка nat и брандмауэра
Существуют разные взгляды на настройку брандмауэра, но общепринятой является схема с нормально открытым брандмауэром для внутренней сети (разрешено все, что не запрещено) и нормально закрытым для внешней (запрещено все, что не разрешено). Ниже будет приведена минимально достаточная конфигурация.
Откроем созданный нами файл /etc/nat и внесем в него следующие строки:
Настройка прокси-сервера squid3 с поддержкой ssl
К сожалению, в репозиториях нет пакета squid с поддержкой SSL, поэтому потребуется собрать его самому, как это сделать мы рассказывали в статье Сборка Squid 3.5 с поддержкой SSL из исходных кодов для Debian / Ubuntu, поэтому будем считать, что вы уже выполнили эту процедуру, либо используете уже собранные нами пакеты.
Будем считать, что собранные пакеты squid скачаны и располагаются в отдельной директории. Перейдем в нее и установим пакеты командой:
dpkg -i squid*.deb
В процессе установки вы получите сообщения о неудовлетворенных зависимостях, поэтому разрешим их командой:
apt install -f
Чтобы наши пакеты не были перезаписаны пакетами из репозитория при обновлении их следует зафиксировать:
apt-mark hold squid
apt-mark hold squid-common
apt-mark hold squidclient
Если у вас был уже установлен squid, то просто удалите его и установите наши пакеты, все настройки при этом будут подхвачены автоматически, хотя на всякий случай сохраните куда-нибудь файл конфигурации:
cp /etc/squid/squid.conf /root/squid.conf.back
Установив пакеты с поддержкой SSL, перейдем к конфигурированию нашего прокси. Для этого откроем файл /etc/squid/squid.conf, все указанные ниже опции надо либо найти и раскомментировать, приведя к указанному виду, либо создать.
Следующий блок, задающий стандартные ACL-элементы присутствует по умолчанию:
Настройка сети
В данном примере у нас будет статическая настройка внешнего сетевого интерфейса, если же вы используете динамические подключение, такие как PPPoE или PPTP, то для их настройки обратитесь к соответствующим инструкциям (по ссылкам).
Для настройки сети откроем файл /etc/network/interfaces:
nano /etc/network/interfaces
И внесем в него следующие изменения (названия интерфейсов и адреса указаны только для примера):
auto ens33
iface ens33 inet static
address 172.18.0.106
netmask 255.255.240.0
gateway 172.18.0.1
dns-nameservers 172.18.0.1auto ens34
iface ens34 inet static
address 192.168.187.1
netmask 255.255.255.0post-up /etc/nat
Если внешний интерфейс получает настройки по DHCP, то используйте следующие настройки:
auto ens33
allow-hotplug ens33
iface ens33 inet dhcp
Сразу создадим файл для хранения настроек брандмауэра и сделаем его исполняемым:
touch /etc/nat
chmod x /etc/nat
Перезапустим сеть:
service networking restart
После чего у вас на сервере должен появиться интернет, сразу следует обновить систему и установить необходимый минимум утилит для администрирования:
apt update
apt upgrade
apt install mc ssh