Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Оглавление |
---|
Squid (англ. squid — «кальмар») — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS. Разработан как программа с открытым исходным кодом (распространяется в соответствии с GNU GPL). Все запросы выполняет как один неблокируемый процесс ввода-вывода.
Используется в UNIX-подобных системах и в ОС семейства Windows NT. Имеет возможность взаимодействия с доменными службами путём аутентификации через LDAP, что позволяет использовать разграничения доступа к интернет ресурсам пользователей, которые имеют учётные записи на Windows Server, также позволяет организовать «нарезку» интернет трафика для различных пользователей.
Используется вместе с движками Mediawiki на wiki хостингах. Использование кэширующего прокси-сервера для сайтов становится выгодно примерно с 2000 посетителей в сутки.
Информация | ||
---|---|---|
|
|
Информация |
---|
При написании раздела "Авторизация через Kerberos" использованы материалы, предоставленные Романом Кисловым. |
Установка пакета
Пакет squid входит в дистрибутивы ОС ОН Орёл 2.12 и ОС СН Смоленск 1.6Astra Linux, по умолчанию не устанавливается и может быть установлен либо с помощью помощью графического менеджера пакетов, либо из командной строки командой:
Информация |
---|
sudo apt install squid |
После установки сервис запускается автоматически, однако для работы требует настроек.
Первичная настройка
пакетаслужбы
Конфигурация службы squid хранится Параметры настройки пакета squid хранятся в файле /etc/squid/squid.conf. Файл содержит обширные комментарии по настройке. Из важнейших можно отметить следующие параметры:
ПараметрОписаниеhttp_port 3128Порт, через который осуществляется подключение к серверу. По умолчанию 3128.http_access
Разрешение на доступ к серверу.
Примечание |
---|
Это единственный параметр, который требует настройки , так как по умолчанию доступ запрещен всем. |
Простейшая настройка - чтобы разрешить доступ всем нужно добавить в файл конфигурации строчку:
параметров конфигурации можно отметить параметр http_port, задающий порт для подключения к proxy (по умолчанию — порт 3128). Этот порт может использоваться как для подключений HTTP, так и для подключений HTTPS.
Пример параметров, задаваемых по умолчанию:
Блок кода | ||
---|---|---|
| ||
acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN)
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*.conf
http_access allow localhost
http_access deny all
http_port 3128
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320 |
В приведенном примере доступ через proxy разрешен только локального компьютера: http_access allow localhost
. Для разрешения доступа компьютерам, находящимся в локальной сети, нужно заменить эту строку на строку http_access allow localnet
.
После изменения параметров для вступления изменений в силу требуется перезапустить сервис.
Это можно сделать стандартными командами:
Command |
---|
sudo systemctl restart squid |
Информация |
---|
Перезапуск сервиса с настройками "по умолчанию" занимает около 35 -ти секунд. |
squid -k reconfigure |
ACL
Для управления доступом squid поддерживает работу со списками управления доступом (Access Control Lists, ACL).Примеры Примеры ACL:
Информация |
---|
# определить список портов acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 |
Пример применения ACL:
Информация |
---|
# запретить работу со всеми портами, кроме безопасных http_access deny !Safe_ports |
Пример блокировки определённых сайтов с помощью ACL:
Информация |
---|
acl blocksite1 dstdomain telegram.com |
При этом список Список ACL можно разместить во внешнем файле, например в файле /etc/squid/blockwebsites.lst:
Информация |
---|
acl blocksitelist dstdomain "/etc/squid/blockwebsites.lst" |
При этом содержимое файла /etc/squid/blockwebsites.lst может быть:
Информация |
---|
google.com |
Аналогично, можно блокировать адреса, содержащие ключевые слова:
Информация |
---|
acl blockkeyword1 url_regex telegram |
Авторизация пользователей
Простая авторизация
В простейшем случае хранение паролей осуществляется в текстовом файле, содержащем учётные данные, закодированные в base64. Для обработки этого файла используется дополнительная программа /usr/lib/squid3/basic_ncsa_auth, проверяющая соответствие переданной комбинации "логин:пароль" хранящимся в файле данными.При этом на авторизованных пользователей распространяются любые правила контроля доступа, записанные в acl главного конфигурационного файла Squid.
Настройка конфигурации (файл паролей /etc/squid/users ):
Информация |
---|
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/users |
Файл паролей для реализации можно создать с помощью утилиты htpasswd, которая входит в состав пакета apache2-utils.
Синтаксис команды для htpasswd следующий:
Command |
---|
htpasswd [-c] /создаваемый/файл/паролей имя_пользователя |
Параметр -с
используется для создания нового файла, изменение существующего файла производится без этого параметра. Для созданного файла желательно установить права на чтение только пользователю и группе, от имени которой работает Squid:
Command |
---|
chmod 440 /etc/squid/users |
Авторизация через Kerberos
В данной главе рассматривается настройка авторизации пользователей через контроллер домена Контроллер ЕПП FreeIPA .
При этом предполагаетсяв Astra Linux. Предполагается, что у нас имеется настроенный сервер (контроллер домена) FreeIPA с полным доменным именем (FQDN) ipa.ipadomain.ru, а сервер squid расположен на отдельной машине с полным доменным именем (FQDN) squid.ipadomain.ru, которая введена в домен.
На Зарегистрировать службу на контроллере домена регистрируем сервис. Имя сервиса службв состоит из ключевого слова HTTP, символа косой черты и полного доменного имени (FQDN), в нашем случае имя сервиса будет. Например:
Информация HTTP/squid.ipadomain.ru Зарегистрировать сервис можно через WEB-интерфейс FreeIPA:
Информация "Идентификация" - "Службы" - "+ Добавить" или из командной строки, выполнив на контроллере домена команду
Command sudo ipa service-add HTTP/squid.ipadomain.ru На сервере squid получить ключи службы, для чего на сервере squid выполнить команду
Command sudo ipa-getkeytab -s ipa.ipadomain.ru -p HTTP/squid.ipadomain.ru -k /etc/squid/krb5.keytab где
-s - имя сервера, от которого нужно получить ключи (ipa.ipadomain.ru);
-p - имя службы, для которой нужно получить ключи (HTTP/squid.ipadomain.ru);
-k - имя файла, в котором нужно сохранить полученные ключи (/etc/squid/krb5.keytab).Установить для созданного на предыдущем шаге файла с ключами права доступа:
Command chown proxy:proxy /etc/squid/krb5.keytab
chmod 640 /etc/squid/krb5.keytabОтредактировать юнит запуска службы squid ( файл /etc/init.d/squid), добавив после строки "DESC=Squid HTTP Proxy" строки:
Информация KRB5_KTNAME=/etc/squid/krb5.keytab
export KRB5_KTNAMEОтредактировать файл конфигурации службы squid /etc/squid/squid.conf, закомментировав строки "#http_access allow localnet" и "#http_access allow localhost" и добавив после них строки для включения авторизации через Kerberos:
Информация ...
#http_access allow localnet
#http_access allow localhost
auth_param negotiate program /usr/lib/squid/negotiate_kerberos_auth -k /etc/squid/krb5.keytab -d -s HTTP/squid.ipadomain.ru
auth_param negotiate children 10
auth_param negotiate keep_alive on
acl auth proxy_auth REQUIRED
http_access deny !auth
http_access allow auth
...Обновить конфигурацию юнитов запуска системных служб командой
Command sudo systemctl daemon-reload Перезапустить службу squid командой:
Command sudo systemctl restart squid
Настройка клиентов
Если используется аутентификация Kerberos, то на клиентских компьютерах при указании настроек прокси в браузере необходимо использовать не IP-адрес прокси-сервера, а его полное доменное имя (FQDN), в настоящем примере это squid.ipadomain.ru.
Файлы журналов и отладка
Журналы squid располагаются в каталоге /var/log/squid:
Файл | Описание |
---|---|
cache.log | Содержит отладочную информацию и сообщения о ошибках, которые генерирует Squid. |
access.log | Содержит подробную информацию о подключениях, пригодную для автоматического анализа. |
Command |
---|
sudo tail -f /var/log/squid/access.log |
Для использования links2 необходимо установить одноименный пакет:
Command |
---|
sudo apt install links2 |
Примеры вызова браузера с принудительным использованием proxy:
- По протоколу https:
Command links2 -only-proxies 1 -https-proxy <IP_адрес_proxy> https://ya.ru - По протоколу http:
Для примера использован web-сайт http://testca2012.cryptopro.ru/ui/, работающий по протоколу http.Command links2 -only-proxies 1 -http-proxy <IP_адрес_proxy> http://testca2012.cryptopro.ru/ui/