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