Настроить squid и проверить работоспособность без Kerberos с доступом по IP, либо basic-аутентификация.
Данный пункт был реализован согласно приведенных в заголовке ссылок – ранее. Но есть некоторые нюансы конфигурирования сетевой подсистемы для корректной работы с Kerberos. Необходимо обязательно правильно настроить файлы /etc/hosts, /etc/hostname, /etc/resolv.conf, ну и конечно /etc/network/interfaces. (приведенные настройки рассмотрены для Debian/Ubuntu, но если учесть особенности другого дистрибутива, то общая схема настройки будет вполне пригодна)
squid ~ # cat /etc/hosts 10.0.0.10 squid.DOMAIN.local squid 127.0.0.1 localhost # для Kerberos советуют указывать именно такой порядок # то есть первой строкой именно 10.0.0.10 (внешний IP, не loopback) squid ~ # cat /etc/hostname squid squid ~ # cat /etc/resolv.conf domain DOMAIN.local search DOMAIN.local nameserver 10.0.0.4 squid ~ # cat /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 10.0.0.10 netmask 255.255.0.0
1. Предварительная настройка DNS и контроллера домена.
Для корректной работы Kerberos необходимо иметь корректные прямые (A) записи и соответствующие обратные (PTR) записи для сервера squid.
2. Настройка синхронизации времени
Настройку синхронизации времени я описывал в статье о NFS в Windows AD. Здесь лишь кратко скажу, что я использую для этих целей NTP-сервер (пакет ntp) и следующий конфиг:
root@nfsd:~# cat /etc/ntp.conf server dc.domain.local restrict default ignore restrict dc.domain.local restrict 127.0.0.1 nomodify notrap
3. Настроить и проверить Kerberos на идентификацию пользователя без ключевого файла krb5.keytab.
Данный шаг так же описан в статье о NFS в Windows AD, здесь он абсолютно идентичен.
4. Создать ключевой файл krb5.keytab на KDC (контроллер домена Windows 2008 R2)
Далее, необходимо создать кейтаб-файл на контроллере домена (файл ключей, который будет использоваться для взаимодействия с Active Directory). Вся необходимая теория опять же есть в статье о NFS – создание keytab. Для squid команда создания keytab файла будет выглядеть так:
5. Настроить и проверить работу Kerberos для авторизации через krb5.keytab и корректность созданного keytab-файла.
Допустим, лежит наш keytab в /etc/squid3/squid.keytab, давайте проверим корректность работы данного кейтаба с текущей ОС:
Настройка squid на проверку подлинности через Kerberos в домене Windows 2008 R2.
Для того чтобы сквид знал, какой кейтаб использовать, ему нужно указать, где он лежит. Для этого нужно создать и заполнить файл /etc/default/squid3 следующим содержимым (задать переменную, хранящую путь к кейтаб файлу, которую читает сквид):
squid ~ # cat /etc/default/squid3 KRB5_KTNAME=/etc/squid3/squid.keytab export KRB5_KTNAME
Так же, необходимо вsquid.conf настроить схему аутентификации, для этого нужно добавить следующие строки:
Настроить веб-браузеры на Kerberos аутентификацию в squid.
Собственно, настройка браузеров для SQUID заключается в использовании FQDN-имени в адресе прокси-сервера вместо IP-адреса. То есть делаем все по инструкции Настройка адреса прокси через GPO в Windows Server 2008 R2, но адрес прокси указываем не 10.0.0.10, а squid.domain.local.
После попытки доступа мы видим в логе access.log заветные строки:
Digest – метод аутентификации в squid
Этот метод более защищен, нежели basic-аутентификация, т.к. использует MD5-шифрование для отправки пароля через сеть. Схема
работы
взаимодействия аналогична basic, за тем лишь исключением, что на 2-ом и последующих шагах в ответ сервера и ответы клиента в поля аутентификации добавляются некоторые дополнительные параметры и случайные значения, которые используются для шифрования пароля.
утилита htdigest
, которая находится в
пакете apache2-utils
. Используется хелпер
/usr/lib/squid3/digest_pw_auth
Ntlm – метод аутентификации в squid
Про протокол NTLM и его особенности и недостатки я рассказывал в первой статье о samba. В данной теме особенно делать упор на этот протокол не буду, ибо – небезопасен. Для проверки подлинности используется хелпер /usr/lib/squid3/ntlm_auth. Данный вид аутентификации работает в браузерах IE, Mozilla, Opera, Crome.
Выпуск организацией собственной программы с проксированием ресурсов[править]
Использование EZproxy (и аналогов) – хотя и возможный вариант, но не перспективный из-за проблем с совместимостью со сторонними сайтами. Поэтому лучше использовать второй подход, предварительно устранив оба недостатка.
Решение здесь достаточно очевидное: надо взять один из браузеров с открытым исходным кодом и чуть-чуть переписать его, зашив в его настройки прокси-сервер организации.
Дополнительно
Для просмотра статистики написано большое количество различного софта log-analysis.
Наиболее известные SARG, ScreenSquid, lightsquid, SquidAnalyzer.
Механизмы реализации проксирования[править]
Получили распространения два механизма проскирования.
Настройка explicit proxy
Дефолтная конфигурация предусматривает работу «непрозрачного» прокси с авторизацией на основе ip адресов – разрешен выход в Интернет всем компьютерам локальной сети.Нас же интересует аутентификация в домене Active Directory с авторизацией на основе доменных групп.
Для аутентификации в AD будем использовать протокол Kerberos. В этом нам поможет хелпер negotiate_kerberos_auth. Для авторизации по группам будем использовать хелпер ext_kerberos_ldap_group_acl.Для начала устанавливаем Kerberos клиент:
# yum install krb5-workstation
Настройка interception proxy
С настройкой прокси сервера для доменных пользователей разобрались, с помощью групповых политик теперь задаем на терминальных серверах адрес прокси сервера и пользуемся. Но для компьютеров, не входящих в домен, и для разных мобильных устройств групповые политики не работают, а прописывать каждый раз вручную настройки прокси не удобно.
И даже если прописать, то, например, придя домой с устройством, выхода в Интернет с него не будет. Поэтому нужно дополнительно настроить «прозрачный» прокси сервер. Можно выделить диапазон ip адресов, и для него создавать правила в Squid’е, но удобнее (для меня) использовать MAC адреса устройств.
Для этого создаем списки mac адресов (это будет аналог доменных групп, которые мы создавали ранее для Explicit Proxy):
/etc/squid/ allowed-mac.txt – сюда входят устройства со стандартным доступом/etc/squid/allowed-mac-extended.txt – сюда входят устройства с расширенным доступом/etc/squid/allowed-mac-full-access.txt – сюда входят устройства с полным доступом
Настройка internet explorer через gpo
Желательно на всех машинах локальной сети обновить Internet Explorer до 7 версии, ибо с IE 6 доменная проверка подлинности не будет работать. Об этом Mictosoft официально . Настройка параметров прокси сервера задается в объекте групповой политики в разделе Конфигурация пользователя – Политики – Конфигурация Windows – Настройка Internet Explorer – Подключение – Параметры прокси-сервера: Т.к. данная настройка расположена в конфигурации пользователя, то и применяться будет к пользователям, расположенным в текущем подразделении OU, к которому будет применен Объект групповой политики.
Недостатки web-прокси[править]
Основные проблемы связаны с тем, что ни удаленный ресурс ни браузер не подозревают о проксировании, а сам прокси-сервер фактически использует хакерский метод. В начале 2000-ых годов, когда JavaScript активно не применялся в целях навигации и управления интерфейсом, этот метод не доставлял существенных проблем.
Были проверены несколько электронных библиотек, из которых КиберЛенинка, IPRBooks, Национальная электронная библиотека, ELiS WebApps, SCOPUS и даже Google оказались несовместимы с Cisco WebVPN. В Лань, Книгафонд, Университетская библиотека онлайн книги напротив, открыть удалось.
Недостатки собственного браузера[править]
- Необходимо поддерживать одну или несколько (если браузер выпускается не только под Windows) программ.
- Если используется не системный браузер, его следует обновлять для устранения проблем безопасности.
Плюсы web-прокси[править]
Работает прямо в браузере, пользователю на своей стороне не требуется ничего устанавливать или настраивать.
Предварительная настройка
У нас есть два Ethernet интерфейса: eth0 – смотрит в локальную сеть, eth1 – смотрит в глобальную сеть. В случае, который будет описан ниже терминальные сервера и устройства расположены в сети 192.168.0.0/24. Прокси сервер имеет адрес 192.168.0.133.
Приводим файл настроек /etc/sysconfig/network-scripts/ifcfg-eth0 к такому виду (значения подставляем свои):
В директивах DOMAIN и SEARCH нужно указать свое имя домена.Приводим файл настроек /etc/sysconfig/network-scripts/eth1 к такому виду (значения подставляем свои):
Задаем имя хоста:
# hostnamectl set-hostname SRV-M29-PRX-03
Прописываем на DNS сервере A запись для прокси сервера, чтобы он резолвился из локальной сети.
Если локальная сеть состоит из подсетей, то чтобы они могли взаимодействовать между собой на устройствах с прокси сервером в качестве шлюза, нужно настроить маршруты и включить форвардинг.
Создаем файл /etc/sysconfig/network-scripts/route-eth0 и добавляем в него требуемые маршруты, например:
192.168.0.0/24 via 192.168.0.78 dev eth0192.168.2.0/24 via 192.168.0.78 dev eth0192.168.3.0/24 via 192.168.0.78 dev eth010.254.253.0/24 via 192.168.0.78 dev eth0
Добавляем в /etc/sysctl.conf:
net.ipv4.ip_forward = 1
Перезагружаемся.Настраиваем фаервол. Squid 4.X.XX работает и с firewalld и с iptables. Кому как удобнее. В этой статье используем iptables.Останавливаем и удаляем firewalld:
# systemctl stop firewalld
# yum remove firewalld.noarch
Устанавливаем и запускаем iptables:
# yum install iptables-services
# systemctl enable iptables
# systemctl enable ip6tables
# systemctl start iptables
# systemctl start ip6tables
Разрешаем SSH и ICMP только с локальной сети:
# iptables -R INPUT 4 -i eth0 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
# iptables -R INPUT 2 -i eth0 -p icmp -j ACCEPT
Пример браузера организации[править]
Чтобы на практике продемонстрировать возможность создания браузера организации, реализован браузер для Пермского государственного национального исследовательского университета. Браузер отображает сайты и реализацию встраивания электронной библиотеки ELiS с помощью технологии ELiS WebApps.
С точки зрения преподавателей и деканатов браузер решает важную задачу: проксирует запросы из интернета в систему управления вузом (ЭИОС). В этой системе размещаются УМК, ведется успеваемость по больно-рейтинговой системе и решаются другие задачи преподавателей и административных работников, поэтому возможность подключения к ней из интернета является актуальной задачей для многих.
Домашней страницей браузера является список электронных библиотек:
Для поиска применяется Google Custom Search Engine, который выступает бесплатной и доступной заменой федеративного поиска. Этот поисковый движок настроен на поиск: в электронной библиотеке университета, PDF-файлов на сайтах вуза и в некоторых легальных библиотеках с доступным контентом.
Конечно, такой поисковый механизм не участвует в поиске по внешним ЭБС, но, зато, способен находить статьи, размещенные на многочисленных сайтах вуза.
Разработка собственного браузера позволяет перехватывать события скачивания файлов и учитывать скачивания в своей статистике.
Если же собственную систему учета статистики разрабатывать не хочется, можно на домашней странице установить любой из онлайн-счетчиков посетителей и, по крайней мере, фиксировать число запусков браузера.
Принцип работы прокси-сервера[править]
Идея очень простая: пользователь получит доступ к сайтам если они будут исходить с IP-адресов организации. Значит надо все запросы от пользователя, находящегося у себя дома, отправлять не напрямую на сайт ресурса, а через организацию.
ПО, которое на стороне организации обеспечивает передачу запросов на внешние сайты, называется прокси-сервером.
Установка squid
Подготовительная часть закончилась. Теперь приступаем к установке Squid.В официальных репозиториях CentOS есть только Squid 3.5. Мы же будем ставить Squid 4.0.23.Поэтому качаем сам Squid:
Функционал браузера организации[править]
Если прокси-сервер авторизует пользователя из централизованной (для организации) системы авторизации, то эти учетные данные могут подходить и к другим сайтам организации, таким как электронная информационная образовательная среда (ЭИОС), сайт расписания занятий и т.д. и в браузер можно добавить эти сайты и автоматически авторизовать пользователя при первом обращении из программы.
Тогда продвигать браузер можно не просто как систему доступа к удаленным библиотекам, но делать упор на других функциональных возможностях.
В конечном счете, проект браузера может перерасти в сложную программу, решающую большое количество задач вуза.