Настройка прокси-сервера Squid

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск

Содержание

Настройка прокси-сервера (Squid)

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Убедитесь, что у вас есть доступ к серверу через SSH или консоль.

2. Установка Squid

Обновление системы

1. Обновите систему:

sudo apt update

2. Установите Squid:

sudo apt install -y squid

3. Проверьте версию:

squid -v

4. Запустите и включите автозапуск:

sudo systemctl start squid
sudo systemctl enable squid

5. Проверьте статус:

sudo systemctl status squid

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

Создание резервной копии

1. Создайте резервную копию оригинального файла:

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

Основная конфигурация

1. Отредактируйте конфигурационный файл:

sudo nano /etc/squid/squid.conf

2. Создайте базовую конфигурацию:

\# Базовые настройки
http_port 3128
visible_hostname squid-server

\# Директории для кэша
cache_dir ufs /var/spool/squid 100 16 256

\# Настройки доступа
acl localnet src 192.168.1.0/24
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12
acl localnet src fc00::/7
acl localnet src fe80::/10

\# Разрешенные порты
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl CONNECT method CONNECT

\# Правила доступа
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all

\# Настройки кэширования
cache_mem 64 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 1024 MB

4. Настройка аутентификации

Установка htpasswd

1. Установите apache2-utils:

sudo apt install -y apache2-utils

2. Создайте файл паролей:

sudo htpasswd -c /etc/squid/passwords user1

3. Добавьте дополнительных пользователей:

sudo htpasswd /etc/squid/passwords user2
sudo htpasswd /etc/squid/passwords user3

4. Установите права доступа:

sudo chown proxy:proxy /etc/squid/passwords
sudo chmod 640 /etc/squid/passwords

Настройка аутентификации в Squid

1. Отредактируйте конфигурацию:

sudo nano /etc/squid/squid.conf

2. Добавьте настройки аутентификации:

\# Настройки аутентификации
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

\# ACL для аутентификации
acl authenticated proxy_auth REQUIRED

\# Правила доступа с аутентификацией
http_access allow authenticated
http_access deny all

5. Настройка кэширования

Оптимизация кэша

1. Настройте параметры кэширования:

\# Размер кэша в памяти
cache_mem 256 MB

\# Максимальный размер объекта в памяти
maximum_object_size_in_memory 1 MB

\# Максимальный размер объекта
maximum_object_size 10 MB

\# Настройки кэша
cache_replacement_policy lru
memory_replacement_policy lru

\# Настройки обновления
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

Настройка кэша для различных типов контента

1. Добавьте специальные правила кэширования:

\# Кэширование изображений
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private

\# Кэширование CSS и JS
refresh_pattern -i \.(css|js)$ 1440 40% 40320

\# Кэширование видео
refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200

\# Не кэшировать динамический контент
refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0

6. Настройка фильтрации

Блокировка сайтов

1. Создайте файл с заблокированными доменами:

sudo nano /etc/squid/blocked_domains.txt

2. Добавьте домены для блокировки:

facebook.com
twitter.com
instagram.com
youtube.com

3. Создайте файл с заблокированными словами:

sudo nano /etc/squid/blocked_words.txt

4. Добавьте слова для блокировки:

porn
gambling
violence

Настройка ACL для фильтрации

1. Добавьте ACL правила в конфигурацию:

\# ACL для заблокированных доменов
acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt"

\# ACL для заблокированных слов
acl blocked_words url_regex -i "/etc/squid/blocked_words.txt"

\# ACL для времени доступа
acl work_hours time MTWHF 09:00-18:00
acl weekend time SA 00:00-23:59
acl weekend time SU 00:00-23:59

\# Правила блокировки
http_access deny blocked_domains
http_access deny blocked_words
http_access deny !work_hours

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

Настройка логов доступа

1. Настройте логирование в конфигурации:

\# Настройки логирования
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

\# Формат логов
logformat combined %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt

Настройка ротации логов

1. Создайте конфигурацию logrotate:

sudo nano /etc/logrotate.d/squid

2. Добавьте настройки:

/var/log/squid/*.log {
    daily
    missingok
    rotate 52
    compress
    delaycompress
    notifempty
    create 640 proxy proxy
    postrotate
        /usr/sbin/squid -k rotate
    endscript
}

8. Настройка файрвола

Настройка UFW

1. Разрешите порт Squid:

sudo ufw allow 3128/tcp

2. Проверьте статус:

sudo ufw status

Настройка iptables

1. Разрешите порт через iptables:

sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

2. Сохраните правила:

sudo iptables-save > /etc/iptables/rules.v4

9. Мониторинг и управление

Просмотр статистики

1. Включите статистику в конфигурации:

\# Настройки статистики
acl manager proto cache_object
http_access allow manager localhost
http_access deny manager

\# Настройки кэша
cache_mgr admin@example.com

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

sudo systemctl restart squid

3. Просмотр статистики:

curl http://localhost:3128/squid-internal-mgr/info

Управление кэшем

1. Очистка кэша:

sudo squid -k shutdown
sudo rm -rf /var/spool/squid/*
sudo squid -z
sudo systemctl start squid

2. Перезапуск Squid:

sudo systemctl restart squid

3. Проверка конфигурации:

sudo squid -k parse

4. Просмотр логов:

sudo tail -f /var/log/squid/access.log

10. Продвинутые настройки

Настройка прозрачного прокси

1. Настройте iptables для прозрачного прокси:

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

\# Перенаправление HTTPS трафика (требует дополнительной настройки)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

2. Обновите конфигурацию Squid:

\# Настройки для прозрачного прокси
http_port 3128 transparent

Настройка родительского прокси

1. Настройте подключение к родительскому прокси:

\# Настройки родительского прокси
cache_peer parent-proxy.example.com parent 3128 0 no-query default
cache_peer_access parent-proxy.example.com allow all
never_direct allow all

Настройка SSL Bumping

1. Создайте SSL сертификат:

sudo openssl req -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/squid/ssl/squid.key -out /etc/squid/ssl/squid.crt -subj "/CN=squid-proxy"

2. Настройте SSL Bumping:

\# SSL Bumping настройки
ssl_bump peek all
ssl_bump bump all
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB
sslcrtd_children 8 startup=1 idle=1

11. Настройка клиентов

Настройка браузера

1. Firefox:

  • Перейдите в Настройки → Сеть → Настройки
  • Выберите "Ручная настройка прокси"
  • Введите IP сервера и порт 3128

2. Chrome:

  • Установите расширение Proxy SwitchyOmega
  • Настройте прокси сервер

3. Системные настройки Linux:

export http_proxy=http://proxy-server:3128
export https_proxy=http://proxy-server:3128
export no_proxy=localhost,127.0.0.1

Настройка PAC файла

1. Создайте PAC файл:

sudo nano /var/www/html/proxy.pac

2. Добавьте содержимое:

function FindProxyForURL(url, host) {
    if (isInNet(host, "192.168.0.0", "255.255.0.0") ||
        isInNet(host, "10.0.0.0", "255.0.0.0") ||
        isInNet(host, "172.16.0.0", "255.240.0.0")) {
        return "DIRECT";
    }
    return "PROXY proxy-server:3128";
}

12. Безопасность

Ограничение доступа по IP

1. Настройте ACL для ограничения доступа:

\# ACL для разрешенных сетей
acl allowed_networks src 192.168.1.0/24
acl allowed_networks src 10.0.0.0/8

\# Правила доступа
http_access allow allowed_networks
http_access deny all

Настройка SSL/TLS

1. Настройте HTTPS для веб-интерфейса:

\# HTTPS настройки
https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key

Мониторинг безопасности

1. Создайте скрипт мониторинга:

sudo nano /usr/local/bin/squid-monitor.sh

2. Добавьте содержимое:

\#!/bin/bash

\# Проверка статуса Squid
if ! systemctl is-active --quiet squid; then
    echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com
fi

\# Проверка использования диска
DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $DISK_USAGE -gt 80 ]; then
    echo "Squid cache disk usage is high: ${DISK_USAGE}%" | mail -s "Proxy Alert" admin@example.com
fi

13. Устранение неполадок

Частые проблемы

1. Squid не запускается:

  • Проверьте синтаксис конфигурации:
    sudo squid -k parse
  • Проверьте права доступа к файлам
  • Проверьте логи:
    sudo journalctl -u squid

2. Клиенты не могут подключиться:

  • Проверьте файрвол
  • Проверьте настройки ACL
  • Проверьте аутентификацию

3. Проблемы с кэшированием:

  • Проверьте права доступа к директории кэша
  • Проверьте свободное место на диске
  • Очистите кэш и перезапустите

Диагностика

1. Проверка статуса:

sudo systemctl status squid

2. Проверка портов:

sudo netstat -tlnp | grep :3128

3. Проверка логов:

sudo tail -f /var/log/squid/access.log

4. Тестирование подключения:

curl -x http://proxy-server:3128 http://example.com

Заключение

Squid прокси-сервер успешно установлен и настроен! Теперь у вас есть мощный инструмент для кэширования, фильтрации и мониторинга веб-трафика.

Для размещения ваших прокси-серверов на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов!