3.5.4.1.2 Установка и настройка squid
Установка Squid и настройка в прозрачном режиме работы
Настройка Selinux для Squid
Настройка кеширования
Контроль доступа к сайтам
Перенаправление трафика
Настройка клиента и браузера
Окружение
- Версия ОС: 8
- Конфигурация ОС: Рабочая станция
- Редакция ОС: Стандартная, Образовательная
- Версия ПО: squid-6.12
Squid — программа, представляющая собой кеширующий прокси-сервер для протоколов HTTP, HTTPS, FTP и других. Используется для кеширования часто запрашиваемого веб-контента, а также для фильтрации сетевого трафика.
Установка Squid и настройка в прозрачном режиме работы
Установка
Установите прокси-сервер следующей командой (потребуются права администратора):
sudo dnf install squid
Подготовка сертификатов
Для работы HTTPS необходимо сгенерировать сертификаты.
1. Для этого создайте каталог для хранения сертификатов, например, в /etc/squid/sslcert.
sudo mkdir /etc/squid/sslcert
2. Перейдите в созданный каталог:
cd /etc/squid/sslcert
3. Сгенерируйте ключ:
sudo openssl genrsa -out /etc/squid/sslcert/squid.key
4. Создайте CSR-запрос, используя ключ. В процессе нужно будет указать всю необходимую информацию для запроса:
sudo openssl req -new -key /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.csr
Пример вывода команды:
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:RU State or Province Name (full name) []:Murom Locality Name (eg, city) [Default City]:Murom Organization Name (eg, company) [Default Company Ltd]:RS Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) [redsite.ru]:redsite.ru Email Address []:admin@redsite.ru A challenge password []: An optional company name []:
5. Подпишите сертификат самим собой:
sudo openssl x509 -req -days 3650 -in /etc/squid/sslcert/squid.csr -signkey /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.pem
6. Сгенерируйте корневой сертификат, который нужно будет добавить в браузер:
sudo openssl x509 -in /etc/squid/sslcert/squid.pem -outform DER -out squid.der
7. Необходимо дать права на каталог с сертификатами для squid:
sudo chown -R :squid /etc/squid/sslcert
Описание настроек Squid.conf
Откройте файл настроек:
sudo nano /etc/squid/squid.conf
Блок настроек acl localnet src устанавливает правила доступа для вашей локальной сети. Если в списке нет IP-адреса вашей сети, добавьте его, например:
acl localnet src 10.9.1.0/24
Или укажите путь до файла со списком адресов:
acl localnet src "/etc/squid/acl_localnet"
Кавычки обязательны. После этого создайте файл /etc/squid/acl_localnet и перечислите в каждой строчке разрешенные IP-адреса.
Блок настроек http_access устанавливает разрешения на доступ. В отличие от глобального разрешения всего трафика (http_access allow all), более безопасным и распространённым сценарием является ограничение доступа только для устройств из локальной сети. Например, чтобы разрешить доступ только компьютерам из сети 192.168.1.0/24, необходимо сначала определить для них правило (acl), а затем явно разрешить трафик:
acl localnet src 192.168.1.0/24 http_access allow localnet # Запретить всё остальное http_access deny all
Важно понимать, что правила http_access проверяются строго сверху вниз, и выполняется первое же правило, которое подошло под условия запроса. Если ни одно правило не подошло, срабатывает правило по умолчанию, которое противоположно последнему правилу в списке. Однако, чтобы избежать путаницы и случайных разрешений, рекомендуется всегда явно указывать последним правилом http_access deny all. Это гарантирует, что любой запрос, не соответствующий ни одному из разрешающих правил выше, будет отклонён. Благодаря такому подходу, прокси-сервер будет обслуживать только указанные устройства, отклоняя запросы из всех прочих сетей.
Настройка Squid с HTTPS
Откройте файл конфигурации:
sudo nano /etc/squid/squid.conf
Найдите строку с http_port 3128 и под ней добавьте строки:
- создание прозрачного HTTP-порта 3129:
http_port 3129 intercept
- создание порта 3130 для https-трафика с генерацией сертификатов по ключу:
https_port 3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/sslcert/squid.pem key=/etc/squid/sslcert/squid.key
Отключите проверку сертификатов:
sslproxy_cert_error allow all
Укажите, что необходимо принимать сертификаты, даже если они не прошли проверку:
sslproxy_flags DONT_VERIFY_PEER
Перенаправьте весь трафик на squid:
always_direct allow all
Установите безопасное соединение с сервером, затем с клиентом, используя имитированный сертификат сервера:
ssl_bump server-first all
Установите TCP-туннель, не расшифровывая прокси-трафик:
ssl_bump none all
Укажите расположение программы генерации сертификатов и установите кеширование:
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB
Сохраните и закройте файл /etc/squid/squid.conf.
Пересоздайте базу данных сертификатов:
rm -rf /var/lib/ssl_db sudo /usr/lib64/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB
Установите владельца squid на каталог базы данных сертификатов:
sudo chown -R :squid /var/lib/ssl_db
Настройка Selinux для Squid
Добавьте политики:
sudo semanage fcontext -a -t squid_conf_t '/var/lib/ssl_db/index.txt' sudo semanage fcontext -a -t squid_conf_t '/var/lib/ssl_db/size'
Примените политики:
sudo /sbin/restorecon -v /var/lib/ssl_db/index.txt sudo /sbin/restorecon -v /var/lib/ssl_db/size
Перезагрузите систему и запустите squid:
sudo systemctl start squid
Проверьте работоспособность squid:
sudo systemctl status squid
При успешно выполненных настройках в статусе должно отображаться active (running).
Добавьте squid в автозагрузку:
sudo systemctl enable squid
Настройка кеширования
Настройте директорию для кеша в файле /etc/squid/squid.conf:
cache_dir ufs /var/spool/squid 4096 32 256
где:
ufs— файловая система (ufs для SQUID является самой подходящей);-
/var/spool/squid— директория хранения кеша; -
4096— объем пространства в мегабайтах, которое будет выделено под кеш; -
32— количество каталогов первого уровня, которое будет создано для размещения кеша; -
256— количество каталогов второго уровня, которое будет создано для размещения кеша.
Создайте структуру каталогов под кеш следующей командой:
sudo squid -z
Перезапустите squid:
sudo systemctl restart squid
Контроль доступа к сайтам
Откройте конфигурационный файл squid:
nano /etc/squid/squid.conf
После строки acl Safe_ports port добавьте:
acl CONNECT method CONNECT
acl BLOCKED url_regex -i '/etc/squid/blocklist'
Таким образом создается список доступа к сайтам.
Далее перед строкой http_access allow localnet для блокировки списка доступа пропишите:
http_access deny BLOCKED
Сохраните конфигурационный файл.
Создайте файл со списком сайтов для блокировки:
sudo nano /etc/squid/blocklist
Например, с таким списком сайтов:
amazon.com vk.com music.yandex.ru
Сохраните файл.
Перечитайте конфигурацию squid:
sudo systemctl reload squid
Блокировка сайтов настроена. Осталось перенаправить трафик на сервер squid.
Перенаправление трафика
Установите iptables, если пакет еще не установлен:
sudo dnf install iptables
Включите ip_forwarding для разрешения проходящего трафика:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
Чтобы настройка ip_forward не сбрасывалась после перезагрузки, в конце файла /usr/lib/sysctl.d/50-default.conf пропишите:
net.ipv4.ip_forward = 1
Добавьте правила для iptables:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
Для тестирования прокси-сервера с локальным трафиком (с этого же сервера), перенаправьте на Squid весь трафик, кроме трафика от самого Squid:
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner squid --dport 80 -j REDIRECT --to-port 3129 sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner squid --dport 443 -j REDIRECT --to-port 3130
Если нужно сохранить правила iptables, чтобы после перезагрузки они не сбрасывались, введите команду:
sudo service iptables save
Перезапустите squid:
sudo systemctl restart squid
Настройка клиента и браузера
В РЕД ОС откройте «Главное меню» — «Параметры» — «Прокси-сервер».
Для ручной настройки подключения к прокси заполните поля адреса сервера и порт (3128):

Настройка браузера
Сейчас большинство сайтов используют технологию HSTS для предотвращения MiTM-атак, поэтому если требуется настроить Squid для фильтрации трафика в своей организации, добавьте сертификат .der. Рассмотрим на примере Chrome.
В меню браузера перейдите по пути: «Настройки» — «Конфиденциальность и безопасность» — «Безопасность» — «Настроить сертификаты» — «Центры сертификации» — «Импорт».
Добавьте созданный ранее сертификат для браузера по пути:
/etc/squid/sslcert/squid.pem
Установите все флаги и нажмите «ОК».

Если все сделано правильно, то при входе на запрещенный сайт должна отобразиться страница блокировки:

Дата последнего изменения: 02.03.2026
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.