Pull to refresh

Боевой прокси-сервер Squid 5.2 с нуля ч.3

Level of difficultyMedium
Reading time5 min
Views11K

Настройка доступов и скоростей

Теперь мы настроим доступы по пользователям (или группам пользователей, принцип одинаковый). Например, у нас есть три пользователя:

Генеральный директор — предоставим полный доступ на все сайты, на максимальной указанной нами скорости.

Продавец — доступ в интернет и на площадки маркетплейсов со средней скоростью, запрет на доступ к социальным сетям.

Маркетолог — доступ в интернет к социальным сетям, с запретом на маркетплейсы, с минимальной скоростью.

Итого создаем 3 группы скоростей в AD. 

·         maximum

·         medium

·         minimum

И группы с доступами к интернет ресурсам:

·         social_net

·         shops

Правим конфиг.

Скорости 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
Результаты SpeedTest на 15 Mbit/s
Результаты SpeedTest на 15 Mbit/s

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
Результаты SpeedTest на 8 Mbit/s
Результаты SpeedTest на 8 Mbit/s

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
Результаты SpeedTest на 4 Mbit/s
Результаты SpeedTest на 4 Mbit/s

Скорости у нас настроены, теперь откроем доступы. Правила выполняются из приоритета сверху вниз.

Удаляем ранее добавленную строку из части 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. и т.д.

Sqstat
Sqstat


Часть 1.

Часть 2.

Часть 4.

Tags:
Hubs:
Total votes 5: ↑5 and ↓0+5
Comments12

Articles