Гайд для сисадмінів · 1 хв читання

Налаштування та конфігурація проксі Squid

Squid — класичний кешуючий HTTP/HTTPS-проксі для Linux, на якому тримаються безліч корпоративних шлюзів. Показуємо чисте встановлення, squid.conf з контролем доступу, автентифікацію і правило CONNECT, що пропускає HTTPS.

Для чого потрібен Squid

Squid — зрілий і напханий можливостями кешувальний проксі для HTTP і HTTPS. На відміну від крихітного 3proxy чи суто SOCKS-ного Dante, Squid збудований навколо веб-трафіку: він уміє кешувати відповіді, фільтрувати за списками доступу, автентифікувати користувачів і детально логувати. Тому він і є вибором за замовчуванням для корпоративного вихідного шлюзу, кешувального шару в навантаженій мережі чи керованого проксі HTTP CONNECT. SOCKS він не вміє — для цього беруть 3proxy або Dante (див. як зібрати власний проксі).

Дві речі, на яких новачки спотикаються завжди, — це контроль доступу (Squid за замовчуванням забороняє все) і HTTPS (для нього треба дозволити метод CONNECT). Конфіг нижче закриває обидві.

Захищений squid.conf

Прямий проксі з автентифікацією на порту 3128: ACL, дозволений CONNECT для HTTPS і обмежений перелік безпечних портів. Шляхи підправте під свій дистрибутив.

bash
apt update && apt install -y squid apache2-utils
# create a password file for basic auth:
htpasswd -c /etc/squid/passwd USER   # prompts for password

cat > /etc/squid/squid.conf <<'CFG'
http_port 3128

# --- authentication ---
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic realm s4m-proxy
acl authenticated proxy_auth REQUIRED

# --- safe ports / CONNECT for HTTPS ---
acl SSL_ports port 443
acl Safe_ports port 80 443 21 1025-65535
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

# --- allow only authenticated users, deny the rest ---
http_access allow authenticated
http_access deny all

# --- small cache ---
cache_dir ufs /var/spool/squid 1000 16 256
coredump_dir /var/spool/squid
CFG

squid -k parse            # validate config
systemctl restart squid

# test:  curl -x http://USER:[email protected]:3128 https://api.ipify.org

ACL, HTTPS і чесні межі

Сила Squid — у моделі ACL: ви дозволяєте або забороняєте за IP джерела, призначенням, портом, часом доби чи автентифікованим користувачем, а правила читаються згори вниз і виграє перший збіг. Рядок http_access deny all у кінці обов'язковий: без заборони за замовчуванням недбало налаштований Squid перетворюється на відкритий релей. Для HTTPS пам'ятайте, що шифрований трафік, який Squid не може прочитати, він тунелює через CONNECT; ACL SSL_ports обмежує, до яких портів цей тунель має право дотягнутися. (Squid уміє й перехоплювати TLS із локальним CA, але для звичайного прямого проксі це вам не потрібно.)

Власний Squid дає керований серверний вихід і докладні логи — ціною того, що його треба супроводжувати. Якщо вам потрібен просто автентифікований HTTP-вихід без адміністрування сервера, це рівно те, що дає HTTP-проксі s4m на proxy.s4m.online:3128, з опцією виділеної IP та API. Якщо запит повертає 407, перевірте облікові дані — дивіться гайд про 407.

Поділитися сторінкою
FAQ

Відповіді на питання

Чому Squid після встановлення блокує весь трафік?

Squid за замовчуванням забороняє все, поки ви не додасте правила http_access allow. Потрібен ACL, який відповідає вашим користувачам чи IP джерела, і рядок allow вище фінального deny all. Заборона за замовчуванням — це запобіжник, який не дає Squid стати відкритим релеєм.

Як Squid працює з HTTPS?

Через метод CONNECT: Squid відкриває сирий тунель до призначення на порт 443 і перекидає шифровані байти, не читаючи їх. CONNECT треба дозволити до вашого ACL SSL_ports. Squid уміє й перехоплювати TLS із локальним CA, але звичайному прямому проксі це непотрібно.

Обійдіться без адміністрування

Тримайте свій Squid заради повного контролю — або спрямуйте клієнт на автентифікований HTTP-проксі s4m на порту 3128 і отримайте керований серверний вихід, з виділеною IP та API, коли вони знадобляться.

Цю сторінку знаходять за запитами

Реальні пошукові фрази, на які відповідає ця сторінка — за посиланнями відкриються матеріали, що розкривають тему глибше.