====== SQUID ======
Файл конфигурации: ''/etc/squid/squid.conf''
===== Перезагрузка конфигурации =====
После изменения ''squid.conf'' проверьте конфигурацию
squid -k parse
Если ошибок нет, перезапустите Squid
systemctl restart squid
===== Настройка =====
==== Основные настройки ====
# Порт, на котором работает Squid (по умолчанию 3128)
http_port 3128
# Порт для HTTPS-прокси (если поддерживается)
https_port 3130 cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key
# Имя или IP-адрес, который виден клиентам (если прокси находится за NAT)
visible_hostname proxy.example.com
# PID-файл для управления демоном
pid_filename /var/run/squid.pid
# Директория для кэша
cache_dir ufs /var/spool/squid 10000 16 256
# ufs — тип файловой системы кэша
# /var/spool/squid — путь к кэшу
# 10000 — размер кэша в МБ
# 16 — количество 1-уровневых поддиректорий
# 256 — количество 2-уровневых поддиректорий
==== Настройки доступа ====
# Разрешить доступ только с локальной сети
acl localnet src 192.168.1.0/24
http_access allow localnet
# Запретить все остальные подключения
http_access deny all
# Настройки аутентификации (например, через NTLM или Basic Auth)
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm Squid proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
==== Настройки кэширования ====
# Максимальный размер объекта в кэше (в МБ)
maximum_object_size 256 MB
# Минимальный размер объекта для кэширования (в КБ)
minimum_object_size 0 KB
# Не кэшировать динамические страницы (например, PHP)
acl dynamic_content urlpath_regex \.php$
cache deny dynamic_content
# Время жизни кэша для разных типов данных
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
==== Логирование ====
# Формат логов
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %h" "%{User-Agent}>h" %Ss:%Sh
# Основной лог-файл доступа
access_log /var/log/squid/access.log combined
# Лог кэширования
cache_log /var/log/squid/cache.log
# Лог ошибок
debug_options ALL,1
==== Безопасность ====
# Запретить доступ к опасным портам
acl dangerous_ports port 22 23 563 # SSH, Telnet, NNTP over SSL
http_access deny dangerous_ports
# Запретить доступ к определенным сайтам
acl blocked_sites dstdomain .example.com .facebook.com
http_access deny blocked_sites
# Защита от DDoS
acl overload maxconn 10
http_access deny overload
==== Оптимизация ====
# Использование DNS-кэша
positive_dns_ttl 6 hours
negative_dns_ttl 1 minute
# Количество DNS-запросов в параллель
dns_nameservers 8.8.8.8 1.1.1.1
dns_defnames off
# Оптимизация TCP
tcp_outgoing_address 192.168.1.100
tcp_outgoing_tos 0x10
==== Дополнительные настройки ====
# Прозрачный прокси-режим (если Squid работает как прозрачный прокси)
http_port 3128 intercept
https_port 3130 intercept ssl-bump cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key
# Поддержка ICAP (для антивирусной проверки)
icap_enable on
icap_service service_req reqmod_precache icap://icap.server:1344/scan
adaptation_access service_req allow all
===== Примеры =====
==== Простой прокси ====
Конфигурации Squid без ограничений (прозрачный прокси, без аутентификации, без блокировок)
# Базовые настройки
http_port 3128
# Разрешить доступ всем (без ограничений)
http_access allow all
# Отключить кэширование (по желанию)
cache deny all
# Логирование (опционально)
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
# Видимое имя прокси (можно заменить на IP или домен)
visible_hostname my_proxy
# Отключить DNS-кэширование (ускоряет работу, но увеличивает нагрузку на DNS)
negative_dns_ttl 1 second
positive_dns_ttl 1 second
==== Прокси с авторизацией ====
Используем ''htpasswd'' для генерации паролей
htpasswd -c /etc/squid/passwords proxy_user
''-c'' – создать новый файл (используйте без ''-c'' для добавления пользователей). \\
''proxy_user'' – имя пользователя. \\
Введите пароль при запросе.
Добавление ещё одного пользователя
htpasswd /etc/squid/passwords another_user
Отредактируйте ''/etc/squid/squid.conf''
# Базовый порт прокси
http_port 3128
# Включить аутентификацию Basic Auth
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm "Squid Proxy - Auth Required"
auth_param basic credentialsttl 24 hours
# Создать ACL для аутентифицированных пользователей
acl authenticated proxy_auth REQUIRED
# Разрешить доступ только аутентифицированным
http_access allow authenticated
# Запретить всё остальное
http_access deny all
# Логирование (опционально)
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
# Имя прокси (можно заменить на IP или домен)
visible_hostname my_proxy
**Ограничение доступа по IP (если нужно)**
acl allowed_ips src 192.168.1.0/24 # Разрешить только локальную сеть
http_access allow allowed_ips authenticated # Только авторизованные + из разрешённой сети
http_access deny all
**Включение HTTPS-прокси (если нужно)**
https_port 3130 cert=/etc/squid/ssl_cert/server.pem key=/etc/squid/ssl_cert/server.key
==== Прокси с блокировкой ресурсов ====
Создадим файл ''/etc/squid/blocked_sites.acl'', куда добавим запрещённые сайты
nano /etc/squid/blocked_sites.acl
Пример содержимого:
.facebook.com
.twitter.com
.youtube.com
.netflix.com
.instagram.com
.pornhub.com
.vk.com
.telegram.org
.tiktok.com
.reddit.com
Каждый домен с новой строки. \\
Точка в начале (*.example.com) блокирует все поддомены.
Отредактируем ''/etc/squid/squid.conf''
# Базовый порт прокси
http_port 3128
# Подключаем файл с запрещёнными сайтами
acl blocked_sites dstdomain "/etc/squid/blocked_sites.acl"
# Запрещаем доступ к этим сайтам
http_access deny blocked_sites
# Разрешаем доступ всем остальным (или только определённым сетям)
acl localnet src 192.168.1.0/24 # Разрешить только локальную сеть
http_access allow localnet
# Запретить всё остальное (если нужно)
http_access deny all
# Логирование
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
# Имя прокси (можно заменить на IP или домен)
visible_hostname my_proxy
=== Дополнительно ===
**Блокировка по ключевым словам в URL**
acl blocked_keywords url_regex -i "/etc/squid/blocked_keywords.acl"
http_access deny blocked_keywords
''-i'' – регистронезависимый поиск.
Файл ''/etc/squid/blocked_keywords.acl''
porn
torrent
hack
warez
**Блокировка по IP (если сайты меняют домены)**
acl blocked_ips dst "/etc/squid/blocked_ips.acl"
http_access deny blocked_ips
Файл ''/etc/squid/blocked_ips.acl''
185.191.171.0/24
104.16.0.0/12
**Разрешить доступ только к белым спискам**
acl whitelist dstdomain "/etc/squid/allowed_sites.acl"
http_access allow whitelist
http_access deny all
Файл ''/etc/squid/allowed_sites.acl''
.wikipedia.org
.google.com
.github.com