Гид по технологиям

Установка и настройка Squid на Ubuntu 20.04

• 6 min read • DevOps • Обновлено 24 Nov 2025
Установка и настройка Squid на Ubuntu 20.04
Установка и настройка Squid на Ubuntu 20.04

Иллюстрация: логотип или схематическое изображение прокси-сервера Squid на серверах

Squid — это полнофункциональный прокси-сервер на базе Linux, часто используемый для фильтрации трафика, повышения безопасности и DNS-запросов. Его также применяют для ускорения работы веб-сервера путём кеширования ресурсов. Проще говоря, сервер Squid выступает промежуточным звеном между рабочей станцией и интернетом: он перенаправляет входящие клиентские запросы к серверам, где хранятся данные, чтобы сделать доступ к ним проще и быстрее. Squid поддерживает протоколы HTTP, FTP, TLS, SSL, Gopher и HTTPS.

В этом руководстве показано, как установить и настроить Squid на Ubuntu 20.04.

Что потребуется

  • Сервер с Ubuntu 20.04.
  • Доступ root или пользователь с sudo-привилегиями.

Перед началом

Обновите списки пакетов и установленные пакеты перед установкой Squid:

apt-get update -y
apt-get upgrade -y

После обновления при необходимости перезагрузите систему:

reboot

Установка Squid

Пакет squid присутствует в стандартном репозитории Ubuntu 20.04. Установите его командой:

apt-get install squid -y

Проверить статус сервиса:

systemctl status squid

Пример ожидаемого вывода (для ориентира):

? squid.service - Squid Web Proxy Server
     Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-08-23 12:00:24 UTC; 11s ago
       Docs: man:squid(8)
    Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
    Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
   Main PID: 49283 (squid)
      Tasks: 4 (limit: 2353)
     Memory: 16.4M
     CGroup: /system.slice/squid.service
             ??49283 /usr/sbin/squid -sYC
             ??49285 (squid-1) --kid squid-1 -sYC
             ??49287 (logfile-daemon) /var/log/squid/access.log
             ??49288 (pinger)

Aug 23 12:00:24 ubuntu2004 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubuntu2004 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubuntu2004 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubuntu2004 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubuntu2004 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubuntu2004 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubuntu2004 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubuntu2004 squid[49285]: storeLateRelease: released 0 objects

По умолчанию Squid слушает порт 3128. Проверить это можно командой:

netstat -plunt | grep 3128

Ожидаемый вывод:

tcp6       0      0 :::3128                 :::*                    LISTEN      50017/(squid-1)

Если всё в порядке — переходите к настройке доступа.

Настройка аутентификации по IP

Этот метод ограничивает доступ по IP-адресам клиентов. Отредактируйте основной конфигурационный файл:

nano /etc/squid/squid.conf

Добавьте в начало файла (или рядом с существующими acl):

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2

Сохраните файл и перезапустите сервис:

systemctl restart squid

Где client1 и client2 — произвольные имена ACL, а 192.168.10.10 и 192.168.10.11 — IP клиентов. После этого доступ к интернету через прокси получат только указанные IP.

Важно: порядок правил http_access в конфигурации имеет значение — Squid применяет первое подходящее правило.

Настройка аутентификации по пользователю и паролю

Для аутентификации по логину/паролю удобно использовать Apache utils, который предоставляет утилиту htpasswd.

Установите пакет:

apt install apache2-utils -y

Создайте файл с паролями и первого пользователя:

htpasswd /etc/squid/passwd client1

Задайте и подтвердите пароль. Добавьте второго пользователя:

htpasswd /etc/squid/passwd client2

Проверьте содержимое файла паролей:

cat /etc/squid/passwd

Пример строки в файле:

client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/

Далее в конфигурации Squid замените предыдущие IP-acl правила (если они были) или добавьте в начало:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users

Перезапустите Squid:

systemctl restart squid

Теперь при попытке выхода в интернет через прокси браузер потребует логин и пароль.

Комбинированная аутентификация (IP + пользователь)

Чтобы требовать одновременно подходящий IP и корректную учетную запись, объедините правила:

acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users

Это правило разрешит доступ только если выполнено условие по IP и (или) по учётной записи в соответствии с вашей логикой. Тонкая настройка доступов возможна через более сложные ACL (time, dst, url_regex и т.д.).

Анонимизация трафика через Squid

Чтобы скрыть исходный IP клиентов от внешних серверов, добавьте в конфигурацию следующие правила, которые убирают или ограничивают заголовки:

forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all

После сохранения перезапустите сервис:

systemctl restart squid

Примечание: полная анонимизация невозможна для всех случаев — некоторые приложения используют другие механизмы идентификации (например, WebRTC в браузере, плагины или TLS Fingerprinting).

Проверка работы прокси в браузере

На клиенте откройте браузер Mozilla Firefox и перейдите в настройки сети.

Окно настроек прокси в Mozilla Firefox

В разделе сетевых настроек выберите ручную конфигурацию, введите IP-адрес вашего Squid-сервера и порт 3128, поставьте галочку “Use this proxy server for all protocols” и сохраните.

Страница конфигурации прокси-сервера в Firefox

При обращении к ресурсу, например https://www.whatismyip.com/, браузер может запросить имя пользователя и пароль (если включена базовая аутентификация):

Окно запроса аутентификации прокси

Введите учётные данные, после чего сайт должен показать IP адрес Squid-сервера, а не клиента:

Страница с отображением IP через прокси

Чеклист для развёртывания (роль: системный администратор)

  • Обновил систему и установил squid.
  • Настроил бэкап /etc/squid/squid.conf перед изменениями.
  • Выбрал модель аутентификации (IP / пароль / комбинированная).
  • Настроил логирование и ротацию логов (/var/log/squid).
  • Ограничил доступ по firewall (порт 3128 только для доверенных сетей).
  • Проверил работу через браузер и командную строку (curl/wget).
  • Задокументировал учётные записи и ACL.

Критерии приёмки

  • Squid запущен и слушает порт 3128.
  • Для авторизованных клиентов доступ в интернет проходит через прокси.
  • Неавторизованные клиенты получают отказ или запрос на аутентификацию.
  • Логи фиксируют запросы и ошибки.

Отладка и часто встречаемые проблемы

  • “Connection refused” — проверьте, слушает ли Squid порт 3128: ss -plunt | grep 3128.
  • Проблемы с правами на /etc/squid/passwd — файл должен быть доступен процессу squid (обычно root:root с 640/600 в зависимости от настроек).
  • 407 Proxy Authentication Required — браузер не передал или неправильно передал учётные данные; проверьте auth_param и путь к basic_ncsa_auth.
  • Ошибки в конфигурации — используйте squid -k parse для проверки синтаксиса.
squid -k parse

Если вы вносите ошибки в конфиг и сервис не перезапускается, восстановите резервную копию конфигурации и выполните systemctl restart squid.

Рекомендации по безопасности

  • Ограничьте доступ к порту прокси на уровне брандмауэра (ufw/iptables) только для доверенных подсетей.
  • Ограничьте административный доступ к серверу (SSH с ключевой аутентификацией, отключение root-login по паролю).
  • Включите TLS/HTTPS-терминацию, если вы действуете как HTTPS-прокси или используете SSL Bump (требует дополнительной политики и сертификатов).
  • Минимизируйте количество разрешённых заголовков и не применяйте request_header_access All allow all без строгой необходимости.
  • Периодически проверяйте и чистите /var/spool/squid и настройки кэширования.
  • Включите ротацию логов (logrotate) и контроль доступа к логам.

Приватность и соответствие (коротко)

Squid хранит логи запросов; если ваши пользователи подпадают под требования законодательства о защите данных (например, GDPR), обеспечьте:

  • Минимизацию собираемых данных.
  • Периоды хранения логов и процедуру их удаления.
  • Разрешения на обработку персональных данных и документирование целей обработки.

Быстрые команды и шпаргалка

  • Проверить статус сервиса: systemctl status squid
  • Проверить порт: ss -plunt | grep 3128
  • Проверить конфигурацию: squid -k parse
  • Перезапустить: systemctl restart squid

Примеры конфигураций — шаблоны

Минимальная конфигурация для IP-ограничения:

# /etc/squid/squid.conf (фрагмент)
acl trusted src 192.168.10.0/24
http_access allow trusted
http_access deny all
http_port 3128
cache_dir ufs /var/spool/squid 100 16 256
access_log /var/log/squid/access.log

Минимальная конфигурация для базовой аутентификации:

auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
http_access deny all
http_port 3128

Когда такой подход не подходит

  • Если вам нужна полная прозрачность и контроль на уровне приложений (например, детальный DPI), то Squid может быть недостаточен — используют специализированные NGFW/UTM.
  • Для высоконагруженных сетей потребуется тонкая настройка кэша и дисковых подсистем; стандартная конфигурация под тяжёлую нагрузку не готова.

План развития и тесты приёмки

Короткая дорожная карта:

  • Этап 1: установка и базовая настройка (текущая инструкция).
  • Этап 2: внедрение аутентификации и брандмауэра.
  • Этап 3: мониторинг, ротация логов, SSL/Bump (при необходимости).

Критерии тестов приёмки:

  • Проход запроса из доверенной подсети через прокси — OK.
  • Блокировка из недоверенной подсети — OK.
  • Запрос с неверными учётными данными — блок.

Сводка

Squid — гибкий инструмент для проксирования, кеширования и контроля доступа. Начните с простой конфигурации, протестируйте доступы, затем добавляйте аутентификацию, правила и механизмы безопасности. Документируйте изменения и поддерживайте бэкапы конфигураций.

Важно: перед внесением изменений в продакшн — тестируйте конфигурации на тестовом окружении и сохраняйте резервные копии файлов.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро