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

Материал из ARK-HOSTER.RU | Документация хостинга
Версия от 08:33, 15 октября 2025; Admin (обсуждение | вклад) (Новая страница: «= Настройка прокси-сервера (Squid) = == 1. Подготовка системы == * Войдите в систему под учетной…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Содержание

Настройка прокси-сервера (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

  1. Директории для кэша

cache_dir ufs /var/spool/squid 100 16 256

  1. Настройки доступа

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

  1. Разрешенные порты

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

  1. Правила доступа

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

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

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

  1. ACL для аутентификации

acl authenticated proxy_auth REQUIRED

  1. Правила доступа с аутентификацией

http_access allow authenticated http_access deny all

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

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

1. Настройте параметры кэширования: # Размер кэша в памяти cache_mem 256 MB

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

maximum_object_size_in_memory 1 MB

  1. Максимальный размер объекта

maximum_object_size 10 MB

  1. Настройки кэша

cache_replacement_policy lru memory_replacement_policy lru

  1. Настройки обновления

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

  1. Кэширование CSS и JS

refresh_pattern -i \.(css|js)$ 1440 40% 40320

  1. Кэширование видео

refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200

  1. Не кэшировать динамический контент

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"

  1. ACL для заблокированных слов

acl blocked_words url_regex -i "/etc/squid/blocked_words.txt"

  1. 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

  1. Правила блокировки

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

  1. Формат логов

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

  1. Настройки кэша

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

  1. Перенаправление 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

  1. Правила доступа

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

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

if ! systemctl is-active --quiet squid; then

   echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com

fi

  1. Проверка использования диска

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 и оптимизацией производительности ваших прокси-серверов!