Настройка прокси-сервера Squid
Содержание
- 1 Настройка прокси-сервера (Squid)
- 1.1 1. Подготовка системы
- 1.2 2. Установка Squid
- 1.3 3. Базовая конфигурация
- 1.4 4. Настройка аутентификации
- 1.5 5. Настройка кэширования
- 1.6 6. Настройка фильтрации
- 1.7 7. Настройка логирования
- 1.8 8. Настройка файрвола
- 1.9 9. Мониторинг и управление
- 1.10 10. Продвинутые настройки
- 1.11 11. Настройка клиентов
- 1.12 12. Безопасность
- 1.13 13. Устранение неполадок
- 1.14 Заключение
Настройка прокси-сервера (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):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для высоконагруженных прокси-серверов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов!