Прокси-сервер (squid)

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
Ответить
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Прокси-сервер (squid)

Сообщение RomA »

Прокси сервер... зачем это надо и почему?

1) Прокси-сервер может быть кеширующий - то есть он на некоторое время может запоминать контент. Например первый пользователь пошёл на mail.ru - ему загрузился логотип с сайта mail.ru. Следом за ним второй пользователь тоже пошёл на этот же сайт - ему этот же самый логотип будет загружен из кэша прокси-сервера - таким образом во первых вы потребите меньше интернета, а во вторых картинка с локального сервера по определению загрузится быстрее, чем картинка с удалённого сайта. То есть вы не только экономите, но и убыстряете интернет для сотрудников офиса.

2) Прокси сервер ведёт логи посещений сайтов. Первая мысль - слежение за сотрудниками - да, это возможно, но не это главное - главное что вы может, анализируя эту информацию, делать чудесные вещи. Например: пользователь заразился вирусом - вы можете посмотреть, какие сайты он посещал, найти зловредный и забанить его, что бы другие не заразились. Или, скажем, у вас загружен интернет - вы можете посмотреть, кто в реальном времени качает и попросить его освободить канал. И тому подобное. Прокси - это мощный инструмент диагностики, отношений интернета с вашей компанией.

3) Изменение страниц интернета. И опять примеры: Вы можете централизованно, для всего офиса, вырезать рекламу, или проверять антивирусом сайты.

4) Централизованный запрет доступа. Иногда кому то надо запретить доступ в интернет, или же к части сайтов - сделать это можно многими способами, но удобнее всего через прокси, просто потому, что у прокси "из коробки" есть механизмы авторизации пользователей по всем мыслимым формам - локально, из домена, или напрямую с ldap

5) Непрерывность доступа к сети Интернет. Зачастую, что бы обеспечить доступ компания проводит себе несколько подключений к сети интернет от разных провайдеров, таким образом, грубо говоря, что бы офис продолжил ходить в инет, при падении одного из провайдеров, надо всем пользователям сменить шлюз по умолчанию. Утрирую. Огородов можно нагородить много, но... Прокси - это единый центр выхода в инет для всех пользователей - то есть достаточно сделать изменения на одной машине - и тут мыв можем не только менять шлюз по умолчанию - в прокси есть такая штука, как каскадирование. Простой пример: у вас есть головной офис и филиал. головной офис вы подключили 2мя провайдерами. филиал для вас критичен, и между офисом и филиалом вы купили гарантированый канал связи. Но офису тоже надо ходить в интернет - то есть там вы купили канал интетрнета. Если канал интернета упадёт на филиале - филиал будет без инета. но если вы там настроили каскадирование через гарантированный канал с центральным офисом... Сумбурно :-)
RomA
Сообщения: 358
Зарегистрирован: 05 авг 2008, 14:53
Контактная информация:

Прокси и авторизация пользователей из домена

Сообщение RomA »

Зачем это надо:
Зачем нужен прокси довольно подробно я описал вот в этой статье

Предисловие:
До этого успешно работало всё с доменом на windows 2012 R2, поднятое по этой статье http://www.maxblogs.ru/articles/squid3- ... li-chast-2 - так как я буду переделывать уже работающий сервер - то буду максимум сохранять то, что было и, следовательно, постоянно опираться на эту статью

Введение:
И пришло понимание что windows это дорого и неудобно. И решено было заменить Актив Диреткори с виндовс на samba4. И было так.
Был великий перенос пользователей и всего остального с виндовго домена на самбу скриптами великими. А дабы не заметили пользователи подвоха, решено было всё сделать так, как в старом домене работало.
Рассказ наш про один из подвигов ратных, кои вершились в те дни.

Задача:
Авторизовать пользователей на прокси через записи активдиретори. Прозрачно. никаких логинов-паролей. Пользователь вообще не должен ничего знать о прокси. Домен работает под samba4.1 а прокси находится на другой машине

Переменные:
192.168.0.94 - контролер домена на samba
192.168.1.200 он же squid.kursk-belaya-ptica.ru - сервер с прокси на борту

Решение:
Для начала на контролере домена надо создать пользователя и выдать ему кейтаб, с которым он будет авторизовываться на контролере домена. Начнём с пользователя

Код: Выделить всё

root@pdc:/usr/local/install # samba-tool user create --random-password squid
User 'squid' created successfully
root@pdc:/usr/local/install # samba-tool spn add HTTP/squid.kursk.belaya-ptica.ru squid
затем пришлось пойди в виндовую оснастку контролера домена, задать пользовтаелю пароль и привести его имя к тому, что указано на рисунке - то есть вписать HTTP/squid.kursk.belaya-ptica.ru
после зашёл первый раз под этим пользователем, и сменил пароль

Код: Выделить всё

root@squid:/var/log/squid # kinit squid
squid@KURSK.BELAYA-PTICA.RU's Password: 
Your password will expire at Thu Jan  1 03:00:00 1970

Changing password
New password: 
Repeat new password: 
Success: Password changed

root@squid:/var/log/squid # kinit squid
squid@KURSK.BELAYA-PTICA.RU's Password: 
root@squid:/var/log/squid #
Теперь выдаём кейтаб

Код: Выделить всё

samba-tool domain exportkeytab squid.keytab --principal=HTTP/squid.kursk.belaya-ptica.ru@KURSK.BELAYA-PTICA.RU
Этойт файл надо передать на прокси-сервер.

Теперь настройки на прокси-сервере:
файл /etc/krb5.conf

Код: Выделить всё

[libdefaults]
         default_realm = KURSK.BELAYA-PTICA.RU
         dns_lookup_kdc = no
         dns_lookup_realm = no
         ticket_lifetime = 24h
         default_keytab_name = /usr/local/etc/squid/squid.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]
         KURSK.BELAYA-PTICA.RU = {
                 kdc = 192.168.0.94
                 admin_server = 192.168.0.94
                 default_domain = kursk.belaya-ptica.ru
         }
[domain_realm]
         .kursk.belaya-ptica.ru = KURSK.BELAYA-PTICA.RU
         kursk.belaya-ptica.ru = KURSK.BELAYA-PTICA.RU
Кусок файла /usr/local/etc/squid/squid.conf, который нас касается

Код: Выделить всё

auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -d -r -s HTTP/squid.kursk.belaya-ptica.ru@KURSK.BELAYA-PTICA.RU
auth_param negotiate children 10 startup=5 idle=1
auth_param negotiate keep_alive on
Так же необходимо что бы имя машины с прокси сервером было в прямой и обратной зонах ДНС. Пожалуй даже красным напишу:
В браузере вы должны прописать имя сервера прокси. Если пропишите IP адрес - ничего не произойдёт - нужно только имя

Траблешутинг:
1) Всё что тут опущено - описано в статье, на которую я ссылаюсь и по которой делал
2) Всё работает сразу, если вы не ошиблись где нить в буковках
3) Ещё раз - прокси надо прописать по имени, и имя должно резольвиться
4) Это работает под пользователями домена, но это не сработало под админом - первой доменной записью на samba-домене. с остальными - на ура
5) Пока не сменил пароль пользователю и не перевыпустил кейтаб - всё было хорошо, но пользователя не авторизовывало, хоть расшибись
Ответить