6.13 Как установить и настроить прокси-сервер Squid

Банер

Squid – это удобный прокси-сервер с открытым кодом, который обеспечивает кеширование и прокси-сервис для протоколов HTTP, HTTPS, FTP и других сетевых протоколов. Он широко используется в корпоративных сетях для оптимизации трафика, повышения безопасности и контроля доступа к веб-ресурсам.

Основными преимуществами Squid являются его высокая производительность, гибкость настройки и возможность значительного уменьшения нагрузки на канал связи благодаря кешированию. Это делает его отличным выбором как для малых офисов, так и для крупных организаций.

За годы развития Squid стал стандартом де-факто для Linux-систем, предлагая богатый функционал для фильтрации контента, аутентификации пользователей и мониторинга сетевого трафика.

Важно: перед установкой убедитесь, что Ваша система соответствует минимальным требованиям.

  • Минимум 1 ГБ оперативной памяти.
  • Не менее 10 ГБ свободного места на диске.
  • Статический IP-адрес.
  • Права суперпользователя (root).

Процедура установки

Установка для ОС Debian/Ubuntu:
  1. Обновите систему:
  1. sudo apt update
  2. sudo apt upgrade -y
  1. Установите Squid:
  1. sudo apt install squid -y
  1. Проверьте статус:
  1. sudo systemctl status squid
Установка для CentOS, AlmaLinux, RockyLinux:
  1. Обновите систему:
  1. sudo yum update -y
  1. Проверьте статус:
  1. sudo yum install squid -y
  1. Проверка статуса:
  1. sudo systemctl status squid

Базовая конфигурация

  1. Откройте конфигурационный файл:
  1. sudo nano /etc/squid/squid.conf
  1. Базовые настройки:
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
  1. Перезапуск сервиса:
  1. sudo systemctl restart squid

Настройка конфигурации для аутентификации

Создание файла паролей

  1. Создание пользователя с использованием digest аутентификации:
  1. sudo htdigest -c /etc/squid/passwords proxy newuser

Добавление следующих пользователей (без опции -c):

  1. sudo htdigest /etc/squid/passwords proxy seconduser
  1. Установка правильных прав:
  1. sudo chown -R proxy:proxy /etc/squid/passwords
  2. sudo chmod -R 640 /etc/squid/passwords

Настройка конфигурации для аутентификации

Отредактируйте файл /etc/squid/squid.conf:

# Настройка digest аутентификации
auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwords
auth_param digest realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_port 3128
dns_v4_first on

Важно: при настройке digest аутентификации.

  1. Убедитесь, что путь к digest_file_auth правильный для Вашей системы.
  2. Realm (proxy в нашем случае) должен совпадать при создании пользователей и в конфигурации.
  3. Регулярно обновляйте пароли пользователей.
  4. Удаляйте неактивных пользователей.

Дополнительные настройки безопасности аутентификации

  1. Ограничение количества одновременных соединений:
acl user1 proxy_auth username1
tcp_outgoing_connection_limit user1 10
  1. Ограничение скорости:
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 10000/20000
delay_access 1 allow authenticated
  1. Ограничение доступа по времени:
acl working_hours time MTWHF 9:00-18:00
http_access allow authenticated working_hours

Мониторинг доступа пользователей

Для просмотра активности пользователей используйте:

sudo tail -f /var/log/squid/access.log | grep username

Важно: при настройке аутентификации.

  1. Регулярно меняйте пароли.
  2. Используйте сложные пароли.
  3. Удаляйте неактивных пользователей.
  4. Для корпоративного использования рекомендуется рассмотреть интеграцию с LDAP или Active Directory.

Настройка брандмауэра

Настройка Iptables

Важно: перед внесением изменений в Iptables, обязательно сохраните текущие правила.

Это позволит Вам восстановить настройки в случае ошибки.

  1. sudo iptables-save > /root/iptables.backup

Для восстановления правил можете воспользоваться командой:

  1. sudo iptables-restore < /root/iptables.backup

Базовые правила для Squid:

  1. # Разрешаем входящие соединения на порт прокси
  2. sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
  3. # Разрешаем исходящие соединения для прокси
  4. sudo iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT
  5. # Разрешаем NAT для клиентов прокси
  6. sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Расширенные правила безопасности:

  1. # Ограничиваем доступ к прокси только из локальной сети
  2. sudo iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
  3. sudo iptables -A INPUT -p tcp --dport 3128 -j DROP
  4. # Логирование отклоненных попыток подключения
  5. sudo iptables -A INPUT -p tcp --dport 3128 -j LOG --log-prefix "SQUID_DENIED: "

Настройка переадресации портов:

  1. # Перенаправление HTTP трафика на Squid
  2. sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
  3. # Перенаправление HTTPS трафика
  4. sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

Как сохранить правила файрвола для разных систем.

iptables для Debian/Ubuntu:

Используйте iptables-persistent для сохранения правил.

  1. sudo apt install iptables-persistent
  2. sudo netfilter-persistent save
iptables для CentOS:

Используйте службу iptables.

  1. sudo service iptables save
ufw для Ubuntu/Debian:

Разрешите нужный порт через UFW.

  1. sudo ufw allow 3128/tcp
firewalld для CentOS:

Сохраните правило для нужного порта через firewalld.

  1. sudo firewall-cmd --permanent --add-port=3128/tcp
  2. sudo firewall-cmd --reload

Каждый способ позволяет сохранить правила, чтобы они автоматически применялись после перезагрузки системы.

Автоматизация настройки Iptables

Создайте файл setup_squid_iptables.sh, это можно сделать командой: sudo nano setup_squid_iptables.sh;

#!/bin/bash

# Очистка существующих правил
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Установка базовой политики
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Разрешение локального трафика
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Разрешение установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Правила для Squid
iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# Сохранение правил
if [ -f /etc/debian_version ]; then
    netfilter-persistent save
else
    service iptables save
fi

Проверка работы.

Для проверки работы прокси-сервера можно использовать команду:

  1. curl -x http://localhost:3128 http://www.example.com

Дополнительные настройки

Настройка кеширования:

cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 4096 KB

Настройка логирования:

access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log

Рекомендуем: регулярно проверяйте логи на наличие подозрительной активности и следите за обновлениями безопасности Squid.

Информируем: для получения дополнительной информации можете воспользоваться официальными ресурсами.