Настройка доступов и скоростей
Теперь мы настроим доступы по пользователям (или группам пользователей, принцип одинаковый). Например, у нас есть три пользователя:
Генеральный директор — предоставим полный доступ на все сайты, на максимальной указанной нами скорости.
Продавец — доступ в интернет и на площадки маркетплейсов со средней скоростью, запрет на доступ к социальным сетям.
Маркетолог — доступ в интернет к социальным сетям, с запретом на маркетплейсы, с минимальной скоростью.
Итого создаем 3 группы скоростей в AD.
· maximum
· medium
· minimum
И группы с доступами к интернет ресурсам:
· social_net
· shops
Правим конфиг.
![](https://habrastorage.org/getpro/habr/upload_files/858/08a/822/85808a82232079c6004f7e7a3784fc74.gif)
Скорости ACL
После Cache в файле /etc/squid/squid.conf добавляем:
external_acl_type class_maximum %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g maximum@YOURDOMAIN.COM -D YOURDOMAIN.COM
external_acl_type class_medium %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g medium@YOURDOMAIN.COM -D YOURDOMAIN.COM
external_acl_type class_minimum %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g minimum@YOURDOMAIN.COM -D YOURDOMAIN.COM
Даём полученным группам псевдонимы для дальнейшей работы:
acl acl_maximum external class_maximum
acl acl_medium external class_medium
acl acl_minimum external class_minimum
Ставим скоростные метки:
acl mark_maximum annotate_transaction maximum=true
acl mark_medium annotate_transaction medium=true
acl mark_minimum annotate_transaction minimum=true
Добавляем примечание:
acl speed_limit_maximum note maximum true
acl speed_limit_medium note medium true
acl speed_limit_minimum note minimum true
Доступы ACL
Вначале мы уже создали группы доступов к соц.сетям и маркетплейсам в AD. Вытаскиваем их для работы в Squid.
external_acl_type allow_social_net %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g social_net@YOURDOMAIN.COM -D YOURDOMAIN.COM
external_acl_type allow_shops %LOGIN /usr/lib/squid/ext_kerberos_ldap_group_acl -a -g shops@YOURDOMAIN.COM -D YOURDOMAIN.COM
Далее, мы создадим ACL, которые будут использоваться:
acl social_net external allow_social_net
acl shops external allow_shops
Делаем списки, из которых они будут брать сайты, которые нужно фильтровать:
acl white_social_net url_regex -i "/etc/squid/lists/soc.net.list" # Для соц.сетей
acl white_shops_net url_regex -i "/etc/squid/lists/shops.list" # Для маркетплейсов
Дополнительно предлагаю создать черный список сайтов и доменов, на которые будет полный запрет для всех пользователей независимо от группы. Это может понадобиться, например когда сайт или домен содержат вирусы и т.д.
acl black_deny url_regex -i "/etc/squid/lists/lock_sites" # Список вирусных и заблокированных сайтов
acl domain_deny dstdomain "/etc/squid/lists/lock_domain" # Список заблокированных доменов
Сохраняем конфиг. Идем в /etc/squid создаем папку lists, далее создаем в ней 4 файла soc.net.list, shops.list, lock_sites lock_domain.
mkdir /etc/squid/lists
cd /etc/squid/lists
touch soc.net.list shops.list lock_sites lock_domain
В файле soc.net.list будет храниться список социальных сетей, куда будет предоставляться доступ. В формате:
# " \ " экранирует точку
vk\.com
ok\.ru
И т.д.
Тоже самое в файле со списком онлайн магазинов:
Wildberies\.ru
Ozon\.ru
Aliexpress\.ru
И т.д.
Файлы lock_sites и lock_domain заполните по мере необходимости блокировок сайтов.
Сохраняем файлы и идем обратно в конфиг.
Сами же мы в отделе будем ходить через прокси, но работать в обход правил и доступов, на максимальной скорости. Указываем свой IP и название acl.
acl admin src 192.168.10.222/32
Настройка скоростей.
Каждый пул — имеет свой размер и свою скорость заполнения. Сайты, на которые обращается клиент сначала попадают в пул, а затем передаются клиенту. Размер буфера и скорость его заполнения в Squid исчисляется в байтах.
Допустим мы хотим, чтобы «Генеральный директор» выходил в сеть со скоростью 15 Мбит/c, «Продавец» со скоростью 8 Мбит/c, а «Маркетолог» со скоростью 4 Мбит/c. Отлично, сказано — сделано.
Стоит отметить, что Squid 5 может работать с пулами задержки 4 класса. Расчеты происходят в байтах. Укажем параметры скорости для каждого пользователя, во всех остальных параметрах укажем none.
# Delay_pools 1 Mb = 125000 bytes
delay_pools 3 # Количество пулов
delay_class 1 4
delay_parameters 1 none none none 1875000/1875000 # 15 Mbit/s
delay_access 1 allow speed_limit_maximum
delay_access 1 deny all
Hidden text
delay_class 2 4
delay_parameters 2 none none none 1000000/1000000 # 8 Mbit/s
delay_access 2 allow speed_limit_medium
delay_access 2 deny all
Hidden text
delay_class 3 4
delay_parameters 3 none none none 500000/500000 # 4 Mbit/s
delay_access 3 allow speed_limit_minimum
delay_access 3 deny all
Hidden text
Скорости у нас настроены, теперь откроем доступы. Правила выполняются из приоритета сверху вниз.
Удаляем ранее добавленную строку из части 2:
http_access allow auth
Добавляем:
http_access allow localhost # Доступ к прокси серверу всей подсети компании
http_access allow admin # Доступ нашему IP в обход всех правил
Дальше логические условия. Обратите внимание! Сначала кому, потом куда! Например: запретить всем пользователям доступ кто НЕ в группе social_net к списку сайтов, которые мы прописали в white_social_net
http_access deny !social_net white_social_net
http_access deny !shops white_shops
Блок всем пользователям к черному списку сайтов и доменов
http_access deny black_deny
http_access deny domain_deny
# Скорости
http_access allow acl_maximum mark_maximum # Доступ на максимальной
http_access allow acl_medium mark_medium # Доступ на средней
http_access allow acl_minimum mark_minimum # Доступ на минимальной
Кто не состоит ни в одной из описанных нами групп, запретить доступ ко всем веб-сайтам.
http_access deny all
Сохраняем конфиг и выходим.
Делаем squid -k parse
Если нет ошибок, то squid -k reconfigure
Получаем рабочий прокси-сервер на базе Squid 5 с авторизацией по Kerberos.
Что теперь со всем этим делать?
Вам следует теперь управлять только настройками групп в AD.
Пользователь «Генеральный директор» должен быть членом групп: maximum, shops, social_net. Тогда он будет ходить по своим правилам, которые мы указали в конфиге.
Пользователь «Продавец» должен быть членом групп: medium и shops. В таком случае он получит доступ к сайтам маркетплейсов со средней скоростью и в тоже время ему не будут доступны соц.сети.
Пользователь «Маркетолог» должен быть членом групп: minimum и social_net. На минимальной скорости доступ к соц.сетям, без доступа к маркетплейсам.
Hidden text
Пример боевого конфига. Работает в компании и отрабатывает все, что от него требуется. Во время настройки и поднятия перечитал кучу мануалов и статей на эту тему. Хотелось собрать рабочую, актуальную, проверенную информацию в одном месте, что собственно и сделано.
Если будет необходимость напишу про настройку черных списков сайтов, доменов, открытия портов и прямых ip адресов на squid для банков, программ удаленного доступа, сбора статистики пользователей на примере sqstat. и т.д.