Step-by-Step Guide: How to Set Up Squid Proxy for Private Connections on Ubuntu 20.04
- Step-by-Step Guide: How to Set Up Squid Proxy for Private Connections on Ubuntu 20.04
- Связанные вопросы и ответы
- Как установить и настроить Squid proxy на Ubuntu 20.04
- Как создать пользовательские аутентификационные данные для Squid proxy
- Как настроить прозрачный прокси-сервер Squid на Ubuntu 20.04
- Как настроить доступ к Squid proxy только для определенных IP-адресов
- Как настроить журналирование с использованием Squid proxy на Ubuntu 20.04
- Как использовать ACL (Access Control Lists) для управления доступом через Squid proxy
Step-by-Step Guide: How to Set Up Squid Proxy for Private Connections on Ubuntu 20.04
На этой странице
- Предпосылки
- Начало работы
- Установить прокси-сервер Squid
- Настройка аутентификации на основе IP
- Настройка аутентификации на основе пользователей
- Настройка комбинированной аутентификации
- Настройте Squid для анонимизации трафика
- Проверка прокси-сервера Squid
- Заключение
Squid — это полнофункциональное прокси-приложение на базе Linux, которое в основном используется для фильтрации трафика, безопасности и поиска DNS. Он также используется для повышения производительности веб-сервера за счет кэширования ресурсов. Проще говоря, сервер Squid — это компьютер, выступающий в качестве посредника между настольным компьютером и Интернетом, который перенаправляет входящие клиентские запросы на сервер, где данные хранятся для облегчения поиска. Он поддерживает несколько протоколов, включая HTTP, FTP, TLS, SSL, Internet Gopher и HTTPS.
В этом руководстве мы покажем вам, как установить и настроить прокси-сервер Squid на сервере Ubuntu 20.04.
Предпосылки
- Сервер под управлением Ubuntu 20.04.
- Пароль root настраивается на сервере.
Начиная
Перед запуском вам необходимо обновить системные пакеты до последней версии. Вы можете обновить их с помощью следующей команды:
apt-get update -y
После обновления всех пакетов перезагрузите систему, чтобы изменения вступили в силу.
Связанные вопросы и ответы:
1. Как установить и настроить прокси-сервер Squid для частных соединений на Ubuntu 20.04
Для установки Squid на Ubuntu 20.04 необходимо воспользоваться следующей командой: sudo apt install squid. После установки необходимо настроить конфигурационный файл /etc/squid/squid.conf в соответствии с требованиями вашей сети. После внесения изменений в конфигурационный файл необходимо перезапустить сервис командой: sudo systemctl restart squid. Теперь прокси-сервер Squid настроен для частных соединений на Ubuntu 20.04.
2. Какие порты нужно открыть для работы прокси-сервера Squid на Ubuntu 20.04
Для работы прокси-сервера Squid на Ubuntu 20.04 необходимо открыть порты 3128 и 3130 в файрволе. Эти порты используются для взаимодействия клиентов с прокси-сервером. Для открытия портов можно воспользоваться командой: sudo ufw allow 3128,3130. После открытия портов прокси-сервер Squid будет корректно функционировать на Ubuntu 20.04.
3. Как настроить аутентификацию пользователей на прокси-сервере Squid на Ubuntu 20.04
Для настройки аутентификации пользователей на прокси-сервере Squid на Ubuntu 20.04 необходимо отредактировать конфигурационный файл /etc/squid/squid.conf и добавить параметры для авторизации пользователей. Например, можно использовать базу данных пользователей и паролей или подключить сервер LDAP для проверки учетных данных. После настройки аутентификации пользователи будут запрашивать логин и пароль для доступа к прокси-серверу.
4. Как настроить доступ к прокси-серверу Squid только для определенных IP-адресов на Ubuntu 20.04
Для ограничения доступа к прокси-серверу Squid на Ubuntu 20.04 только для определенных IP-адресов необходимо отредактировать конфигурационный файл /etc/squid/squid.conf и добавить директиву acl для указания разрешенных адресов. Например, можно использовать следующую строку: acl allowed_ips src 192.168.1.0/24. После добавления данной строки и перезапуска службы только клиенты с IP-адресами из диапазона 192.168.1.0/24 смогут подключиться к прокси-серверу Squid.
5. Как настроить кэширование данных на прокси-сервере Squid на Ubuntu 20.04
Для настройки кэширования данных на прокси-сервере Squid на Ubuntu 20.04 необходимо отредактировать конфигурационный файл /etc/squid/squid.conf и настроить параметры кэширования. Например, можно указать размер кэша, время жизни объектов в кэше и другие параметры. После внесения изменений и перезапуска сервиса Squid данные будут кэшироваться на сервере, что позволит улучшить скорость доступа к ресурсам и снизить нагрузку на сеть.
6. Как настроить прозрачный прокси на сервере Squid на Ubuntu 20.04
Для настройки прозрачного прокси на сервере Squid на Ubuntu 20.04 необходимо отредактировать конфигурационный файл /etc/squid/squid.conf и добавить соответствующие параметры для проксирования трафика без необходимости настройки прокси в клиентских приложениях. Например, можно использовать директиву http_port с параметром transparent для установки прозрачного режима прокси. После настройки прозрачного прокси клиенты сети будут автоматически отправлять запросы через прокси-сервер Squid.
7. Как настроить логирование доступа к прокси-серверу Squid на Ubuntu 20.04
Для настройки логирования доступа к прокси-серверу Squid на Ubuntu 20.04 необходимо отредактировать конфигурационный файл /etc/squid/squid.conf и добавить соответствующие параметры для записи журналов работы прокси. Например, можно использовать директивы access_log и cache_log для записи информации о доступе к прокси и работе кэша. После настройки логирования можно анализировать журналы для отслеживания активности пользователей и проблем в работе прокси-сервера.
8. Как настроить SSL прокси на сервере Squid на Ubuntu 20.04
Для настройки SSL прокси на сервере Squid на Ubuntu 20.04 необходимо сгенерировать SSL сертификат и настроить параметры прокси-сервера для работы с HTTPS-трафиком. Для этого следует отредактировать конфигурационный файл /etc/squid/squid.conf и добавить соответствующие директивы для приема и обработки зашифрованных соединений. После настройки SSL прокси пользователи смогут безопасно обмениваться данными с защитой трафика на уровне прокси-сервера.
Как установить и настроить Squid proxy на Ubuntu 20.04
Давайте попробуем вместе с ноля создать и настроить собственный прокси-сервер на базе дистрибутивов Ubuntu / Debian с помощью Squid .
Устанавливаем пакеты программного обеспечения
Прежде всего, обновляем репозиторий нашей операционной системы. Для этого выполняем командуapt update
:
Важно : здесь и далее управление пакетами с помощью утилиты apt ( Advanced Packaging Tool ) выполняется с правами суперпользователя ( root ) — через командуsudo
.
Теперь обновляем пакеты — для этого вводим в командную строку командуapt dist-upgrade
:
Поскольку в результате обновилось ядро Linux , нужно перегрузить систему . Воспользуемся командойshutdown
с опцией now
(немедленно):
Теперь устанавливаем прокси-сервер Squid . Для этого используем командуapt install
, добавив в качестве аргументаsquid
. Также установим apache2-utils для аутентификации пользователей по паролю:
Настраиваем прокси-сервер Squid
Теперь нам предстоит настроить работу нашего прокси-сервера . На всякий случай делаем резервную копию файла настроек Squid . Для этого сначала переходим в каталог /etc/squid/ с помощью командыcd
:
После чего копируем файл squid.conf , изменив имя итогового файла наsquid.conf.default
с помощью командыcp
:
Файл настроек Squid будет находиться там же, но его исходный вариант не будет перезаписываться при работе с утилитой.
Как создать пользовательские аутентификационные данные для Squid proxy
Был найден неиспользуемый стационарный компьютер с двух-ядерным Intel-ом, 1 Гб ОЗУ и жестким на 80 Gb.Для решения будет сделано следующее:
- Установлена Linux Ubuntu Server 18.04 LTS
- На сервер установлен и настроен прозрачный Proxy Squid, собранный из исходных кодов с поддержкой HTTPS.
- Интеграция сервера в подсеть, путем перенаправления запросов на Proxy или альтернативным вариантом (в самом конце)
3.1. Установка и настройка Ubuntu 18.04
Процесс установки прост. Качаем дистрибутив Ubuntu Server 18.04 с официального сайта. Рекомендую качать со старым установщиком, так как новый, лично у меня, ушел в бесконечную загрузку во время установки. Записываем образ на флешку/диск любым удобным способом. Для записи на флешку рекомендую использовать Rufus и в начале записи выбрать «Запись DD-образа». Далее, следуя информации на экране, устанавливаем систему. Остановимся только на выборе компонентов, где можно выбрать сразу OpenSSH и всё. Нам много не нужно, а что нужно, установим сами.Итак, Ubuntu установлена. Сеть, если у вас DHCP, уже настроена. Войдем в режим суперпользователя, чтобы каждый раз не добавлять sudo к командам.sudo -s
apt-get update
apt-get upgrade
apt-get install nano mc
Настройка статического IP-адреса
В отличии от предыдущих версий Ubuntu, в новой 18.04 сеть настраивается уже не в привычном всем нам /etc/network/interfaces , а через netplan в файле /etc/netplan/*.yaml . Файл может называться по разному, но он там один. Сам же /etc/network/interfaces пишет нам следующее:
Также, если вы захотите обновиться с версии старше до 18.04, настройки сети останутся там, где и были. Netplan актуален только для чистой установки 18.04.
Приступим, все-таки, к настройке сети.
Для начала посмотрим название сетевого интерфейса, присвоенное ОС, и запомним его.
ifconfig
nano /etc/netplan/*.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
название сетевого интерфейса:
dhcp4: no
dhcp6: no
addresses:
gateway4: шлюз
nameservers:
addresses:
Здесь необходимо обратить внимание на пробелы (именно пробелы, а не табуляция). Каждый, своего рода, пункт отделяется от предыдущего пробелом. К примеру, если после nameservers строку addresses не отделить пробелом, а выровнять со строкой выше, то, при попытке применения настроек, netplan выдаст ошибку.
Применим настройки.
netplan apply
Как настроить прозрачный прокси-сервер Squid на Ubuntu 20.04
В этой статье мы разобрали как развернуть прокси-сервер Squid 3.5.19 на Ubuntu 14.04 Trusty Tahr . В этой статье мы разберем как развернуть анализатор логов прокси-сервера Squid и просмотр сформированных с помощью Sarg логов в удобном для нас виде через Web браузер .
Разворачивать я буду Sarg на той же машине где и стоит Squid , ОС используемая Ubuntu 14.04 Trusty Tahr . Устанавливать Sarg будем из репозитариев Ubuntu. На момент написания статьи в репозитария доступна 2.3.6 версия Sarg .
Первым делом обновляем систему до актуального состояния
sudo apt-get update && sudo apt-get upgrade
Устанавливаем Sarg
sudo apt-get install sarg
После установки выполним конфигурацию Sarg . Выполним резервное копирование файла конфигурации.
sudo cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf.backup
Я делаю конфигурацию на чистом файле, мне так удобней. Но на всякий случай у нас есть бекап оригинального файла конфигурации. Удаляю оригинальный файл конфигурации.
sudo rm /etc/sarg/sarg.conf
И создаю пустой файл конфигурации
sudo nano /etc/sarg/sarg.conf
Вот мой итоговый конфиг Sarg
# Заголовок title "Squid - Анализ использования интернета" # Кодировка отчета charset UTF-8 # Путь к логам SQUID’а. access_log /var/log/squid/access.log # Путь хранения временных файлов temporary_dir /tmp # Путь размещения отчётов output_dir /var/www/sarg # Путь к исключаемым из отчета пользователей exclude_users /etc/sarg/exclude_users # Путь к исключаемым из отчета хостов exclude_hosts /etc/sarg/exclude_hosts # Путь к исключаемым HTTP-кодам exclude_codes /etc/sarg/exclude_codes # Путь к подключаемому CSS-файлу external_css_file /sarg/default.css # Перезаписываем отчёты overwrite_report yes # Очищаем временную папку remove_temp_files yes # Формат даты в отчете: e (European=dd/mm/yy), u (American=mm/dd/yy), w (Weekly=yy.ww) date_format e # Преображать IP адреса в DNS имена resolve_ip yes # Использование IP адреса вместо идентификаторов пользователей user_ip yes # Параметры сортировки (A - По порядку, D - В обратном порядке) index_sort_order D # Если нет USERID в access.log (ignore — игнор, ip — записать ip, everybody — вместо userid "everybody") records_without_userid ip # Сортировка ТОП-пользователей (USER CONNECT BYTES TIME) topuser_sort_field CONNECT reverse # Сортировка пользовательского отчета (USER CONNECT BYTES TIME) user_sort_field CONNECT reverse # Кол-во сайтов в ТОП topsites_num 50 # Параметры сортировки (CONNECT / BYTES)(A - По порядку, D - В обратном порядке) topsites_sort_order CONNECT D # ТОП пользователей topuser_num 0 # Список формируемых отчетов report_type topusers topsites sites_users users_sites date_time denied auth_failures site_user_time_date downloads # Отображаем только название домена long_url no # Неограниченное количество отчетов lastlog 0 # Создаем индексную странцу при создании отчета index yes # Тип генерируемого индекса index_tree file # Запятую вместо десятичной точки use_comma yes # При формировании и сортировке ориентир на полученные байты date_time_by bytes # Детальная статистика по завершении создания отчета show_read_statistics yes # Параметры выводимых в отчёте сравнительной активности пользователей topuser_fields NUM DATE_TIME USERID CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Параметры выводимых в отчёте индивидуальной активности user_report_fields CONNECT BYTES %BYTES IN-CACHE-OUT USED_TIME MILISEC %TIME TOTAL AVERAGE # Расширения скачиваемых файлов download_suffix "zip,arj,bzip,gz,ace,doc,iso,adt,bin,cab,com,dot,drv$,lha,lzh,mdb,mso,ppt,rtf,src,shs,sys,exe,dll,mp3,avi,mpg,mpeg"
Теперь создадим файлы зависимости которые мы указывали в нашем конфигурационном файле.
touch /etc/sarg/exclude_codes touch /etc/sarg/exclude_hosts touch /etc/sarg/exclude_users
exclude_codes — вносим коды из файла логов Squid, которые игнорировать при формировании отчета.
exclude_hosts — вносим IP адреса тех людей которых не хотим отображать в отчете
exclude_users — вносим пользователей который не хотим отображать в отчете
С установкой Sarg и его настройкой разобрались. Теперь нужно настроить apache чтобы удобно просматривать сформированные отчеты через Web браузер . Если при установке Ubuntu 14.04 вы не указывали устанавливать LAMP сервер , то его нужно установить.
sudo tasksel install lamp-server
При установке будет запрошен пароль для создания администратора БД MySQL .
Первым делом в конфиге apache пропишем имя сервера, дабы он не ругался на его отсутствие.
Как настроить доступ к Squid proxy только для определенных IP-адресов
Добрый день!
Прошу помочь в оптимизации squid для ускорения доступа к интернету.
Имеется канал доступа к сети интернет со средними пропускными характеристиками и, примерно, 300 пользователей.
Сервер, на котором располагается прокси имеет 8Gb ОЗУ, RAID-5, гигабитные сетевые адаптеры. Использовать его планирую только для раздачи инета.
Версия squid - 3.4.8
Небольшой дисковый кэш мне нужен (гигов примерно на 20)
Вот такой конфиг у меня получился:
(привожу только важные настройки), регулярок у меня пока нет, только стандартные, пока важно добиться максимальной производительности
# Настройки использования памяти
memory_pools on
memory_pools_limit 0
# Настройки кэша в ОЗУ
cache_mem 6024 MB
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
# Настройки дискового кэша
cache_replacement_policy heap LFUDA
cache_dir ufs /var/cache/squid 20000 48 256
minimum_object_size 0.5 KB
# Автоматическая докачка небольших файлов
range_offset_limit 1024 KB
# Кэширование IP-адресов
ipcache_size 8192
# Настройка логов
cache_store_log none
client_db off
# Закрывать наполовину закрытые соединения
half_closed_clients off
# Жесткое кэширование для некоторых статичных типов файлов
refresh_pattern -i \.bz2$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.exe$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.gz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.ico$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.jpg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.mid$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.mp3$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.mp4$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.pdf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.swf$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.svg$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.tar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.tgz$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.zip$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.rar$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
refresh_pattern -i \.msi$ 43200 100% 43200 override-lastmod override-expire ignore-reload ignore-no-cache
# Основные параметры кэширования
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
Не привожу остальные настройки, например, настройки пулов, так как это пока не важно
Вот какой я наметил план для себя:
1) максимальное использование ОЗУ
2) кэш на диске для хранения более крупных файлов - инсталяшки, картинки и.т.д
3) в ОЗУ хранить мелкие и часто встречающиеся файлы
Первая засада:
первоначально использовал параметр
minimum_object_size 1024 KB - с таким расчетом, что к дисковый кэш будут попадать только файлы больше или равно этого размера.
В результате в логах только TCP_MISS - объекты не найдены в кэше. Убрал.
Вторая:
сейчас вероятность попадания в кэш достаточно низкая 1-2% от дневного трафика
Третья:
не все файлы, даже удовлетворяющие условиям, попадают в кэш. Например пробую скачать отсюда файл pdf (5 Мб) www.niva-club.net/downloads.php?view=detail&df_id=19. Он не кэшируется ни в какую.
Четвертая:
отдача интернета идет как-то не так, некоторые страницы долго не докачиваются до конца, браузер может 3-5 сек не открывать страницу и.т.д
В общем, чуствую, что где то я сильно не прав в настройках. Может кто чего подскажет.
Как настроить журналирование с использованием Squid proxy на Ubuntu 20.04
Добавление исключений для SSL Bumping может потребоваться в следующих случаях:
- Программное обеспечение использует протокол, отличный от HTTPS (например, SSH, RDP, VPN)
- Программное обеспечение или веб-ресурс использует протокол WebSockets или HTTP/2.0
- Для доступа к веб-ресурс используются национальные алгоритмы шифрования (GOST, SM2)
- Программное обеспечение использует привязку серверного сертификата (pinning)
- Программное обеспечение или веб-ресурс требует аутентификацию по клиентскому SSL-сертификату
Настройка Squid для исключения выбранных ресурсов
Создание и редактирование списка ресурсов, где не будет использоваться подмена сертификатов (SSL Bump).
Создадим несколько файлов
- whitelist.list – список ресурсов, где не будет использоваться подмена сертификатов (SSL Bump), например банковские платежные системы, мессенджеры и прочее
- blacklist.list – cписок ресурсов, которые заблокированы
- devnet.list – перечень локальных IP адресов и локальных имен, где подмена сертификата может негативно сказывается, например интерфейс управления СХД, FC-коммутаторами и подобным оборудованием
Для добавления в исключения домена со всеми поддоменами, укажите точку в начале значения например: .domain.com
touch /etc/squid/rules/whitelist.list
nano /etc/squid/rules/whitelist.list
Эти строки должны располагаться перед финальной директивой ssl_bump stare all
acl whitelist dstdomain "/etc/squid/rules/whitelist.list"
ssl_bump splice whitelist
Для доменных имен вместо dstdomain можно использовать blacklist ssl::server_name
acl whitelist dstdomain "/etc/squid/rules/whitelist.list"
acl blacklist ssl::server_name "/etc/squid/rules/blacklist.list"
acl devnet dstdomain "/etc/squid/rules/devnet.list"
Пересылать все запросы на указанные ресурсы не используя кэш прокси сервера
К таким ресурсам будут относится 2 списка whitelist и devnet
Добавим соответствующее правило
# no cache
always_direct allow whitelist devnet
Добавим соответствующие действия SSL Bumping
Ничего не делаем с запросами к ресурсам, перечисленным в списке whitelist (у нас уже должно быть описано acl whitelist dstdomain
#
Как использовать ACL (Access Control Lists) для управления доступом через Squid proxy
Перейдите в папку Squid, чтобы найти файл конфигурации squid.conf
cd /etc/squid
ls (вы должны увидеть файл squid.conf)
Создайте резервную копию файла squid.conf
sudo cp squid.conf squid.conf.bak
В целях тестирования откройте Firefox и настройте его на отправку веб-запросов на прокси-сервер Squid (узнать свой IP-адрес можно при помощи команды ifconfig)
Откройте Firefox
Правка> Настройки, Дополнительно> Вкладка Сеть> Настройки соединения:
Ручная настройка прокси: HTTP-прокси: ваш IP-адрес или loopback адрес 127.0.0.1, порт: 3128
Теперь, если вы попытаетесь зайти на такой сайт, как Google, вы должны увидеть сообщение об ошибке — Отказ в доступе от Squid. Это означает, что Squid активно фильтрует трафик.
Далее нам нужно настроить Squid для разрешения веб-трафика через прокси-сервер. Откройте squid.conf в текстовом редакторе:
sudo nano squid.conf
Измените имя вашего прокси-сервера Squid (строка 3399).
TAG: visible_hostname
visible_hostname YourNameProxyServer
Вы можете настроить правила доступа для вашего прокси-сервера Squid (строки с 331 по 831 предназначены для контроля доступа). Обратите внимание, что в строках 606-630 определены локальные сети и используемые порты (службы). Строки активной конфигурации — это строки, которые не закомментированы, то есть они не начинаются со знака #.
Для повторного включения веб-доступа раскомментируйте строку 676
http_access allow localnet
Чтобы убедиться, что сеть теперь работает, сохраните изменения в файле squid.conf и перезапустите сервер Squid.
sudo service squid restart
Обновите ваш браузер Firefox, и ваша домашняя страница должна быть видна.