Настройка прокси-сервера Squid — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Настройка прокси-сервера (Squid) = == 1. Подготовка системы == * Войдите в систему под учетной…») |
Admin (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
− | == 2. Установка Squid | + | == 2. Установка Squid == |
=== Обновление системы === | === Обновление системы === | ||
1. Обновите систему: | 1. Обновите систему: | ||
− | < | + | <pre>sudo apt update</pre> |
2. Установите Squid: | 2. Установите Squid: | ||
− | < | + | <pre>sudo apt install -y squid</pre> |
3. Проверьте версию: | 3. Проверьте версию: | ||
− | < | + | <pre>squid -v</pre> |
4. Запустите и включите автозапуск: | 4. Запустите и включите автозапуск: | ||
− | < | + | <pre>sudo systemctl start squid</pre> |
− | < | + | <pre>sudo systemctl enable squid</pre> |
5. Проверьте статус: | 5. Проверьте статус: | ||
− | < | + | <pre>sudo systemctl status squid</pre> |
− | == 3. Базовая конфигурация | + | == 3. Базовая конфигурация == |
=== Создание резервной копии === | === Создание резервной копии === | ||
1. Создайте резервную копию оригинального файла: | 1. Создайте резервную копию оригинального файла: | ||
− | < | + | <pre>sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup</pre> |
=== Основная конфигурация === | === Основная конфигурация === | ||
1. Отредактируйте конфигурационный файл: | 1. Отредактируйте конфигурационный файл: | ||
− | < | + | <pre>sudo nano /etc/squid/squid.conf</pre> |
2. Создайте базовую конфигурацию: | 2. Создайте базовую конфигурацию: | ||
− | < | + | <pre>\# Базовые настройки |
http_port 3128 | http_port 3128 | ||
visible_hostname squid-server | visible_hostname squid-server | ||
− | # Директории для кэша | + | \# Директории для кэша |
cache_dir ufs /var/spool/squid 100 16 256 | cache_dir ufs /var/spool/squid 100 16 256 | ||
− | # Настройки доступа | + | \# Настройки доступа |
acl localnet src 192.168.1.0/24 | acl localnet src 192.168.1.0/24 | ||
acl localnet src 10.0.0.0/8 | acl localnet src 10.0.0.0/8 | ||
Строка 53: | Строка 53: | ||
acl localnet src fe80::/10 | acl localnet src fe80::/10 | ||
− | # Разрешенные порты | + | \# Разрешенные порты |
acl SSL_ports port 443 | acl SSL_ports port 443 | ||
acl Safe_ports port 80 | acl Safe_ports port 80 | ||
Строка 67: | Строка 67: | ||
acl CONNECT method CONNECT | acl CONNECT method CONNECT | ||
− | # Правила доступа | + | \# Правила доступа |
http_access deny !Safe_ports | http_access deny !Safe_ports | ||
http_access deny CONNECT !SSL_ports | http_access deny CONNECT !SSL_ports | ||
Строка 76: | Строка 76: | ||
http_access deny all | http_access deny all | ||
− | # Настройки кэширования | + | \# Настройки кэширования |
cache_mem 64 MB | cache_mem 64 MB | ||
maximum_object_size_in_memory 512 KB | maximum_object_size_in_memory 512 KB | ||
maximum_object_size 1024 MB | maximum_object_size 1024 MB | ||
− | </ | + | </pre> |
− | == 4. Настройка аутентификации | + | == 4. Настройка аутентификации == |
=== Установка htpasswd === | === Установка htpasswd === | ||
1. Установите apache2-utils: | 1. Установите apache2-utils: | ||
− | < | + | <pre>sudo apt install -y apache2-utils</pre> |
2. Создайте файл паролей: | 2. Создайте файл паролей: | ||
− | < | + | <pre>sudo htpasswd -c /etc/squid/passwords user1</pre> |
3. Добавьте дополнительных пользователей: | 3. Добавьте дополнительных пользователей: | ||
− | < | + | <pre>sudo htpasswd /etc/squid/passwords user2</pre> |
− | < | + | <pre>sudo htpasswd /etc/squid/passwords user3</pre> |
4. Установите права доступа: | 4. Установите права доступа: | ||
− | < | + | <pre>sudo chown proxy:proxy /etc/squid/passwords</pre> |
− | < | + | <pre>sudo chmod 640 /etc/squid/passwords</pre> |
=== Настройка аутентификации в Squid === | === Настройка аутентификации в Squid === | ||
1. Отредактируйте конфигурацию: | 1. Отредактируйте конфигурацию: | ||
− | < | + | <pre>sudo nano /etc/squid/squid.conf</pre> |
2. Добавьте настройки аутентификации: | 2. Добавьте настройки аутентификации: | ||
− | < | + | <pre>\# Настройки аутентификации |
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords | auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords | ||
auth_param basic children 5 | auth_param basic children 5 | ||
Строка 113: | Строка 113: | ||
auth_param basic casesensitive off | auth_param basic casesensitive off | ||
− | # ACL для аутентификации | + | \# ACL для аутентификации |
acl authenticated proxy_auth REQUIRED | acl authenticated proxy_auth REQUIRED | ||
− | # Правила доступа с аутентификацией | + | \# Правила доступа с аутентификацией |
http_access allow authenticated | http_access allow authenticated | ||
http_access deny all | http_access deny all | ||
− | </ | + | </pre> |
− | == 5. Настройка кэширования | + | == 5. Настройка кэширования == |
=== Оптимизация кэша === | === Оптимизация кэша === | ||
1. Настройте параметры кэширования: | 1. Настройте параметры кэширования: | ||
− | < | + | <pre>\# Размер кэша в памяти |
cache_mem 256 MB | cache_mem 256 MB | ||
− | # Максимальный размер объекта в памяти | + | \# Максимальный размер объекта в памяти |
maximum_object_size_in_memory 1 MB | maximum_object_size_in_memory 1 MB | ||
− | # Максимальный размер объекта | + | \# Максимальный размер объекта |
maximum_object_size 10 MB | maximum_object_size 10 MB | ||
− | # Настройки кэша | + | \# Настройки кэша |
cache_replacement_policy lru | cache_replacement_policy lru | ||
memory_replacement_policy lru | memory_replacement_policy lru | ||
− | # Настройки обновления | + | \# Настройки обновления |
refresh_pattern ^ftp: 1440 20% 10080 | refresh_pattern ^ftp: 1440 20% 10080 | ||
refresh_pattern ^gopher: 1440 0% 1440 | refresh_pattern ^gopher: 1440 0% 1440 | ||
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | ||
refresh_pattern . 0 20% 4320 | refresh_pattern . 0 20% 4320 | ||
− | </ | + | </pre> |
=== Настройка кэша для различных типов контента === | === Настройка кэша для различных типов контента === | ||
1. Добавьте специальные правила кэширования: | 1. Добавьте специальные правила кэширования: | ||
− | < | + | <pre>\# Кэширование изображений |
refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private | refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private | ||
− | # Кэширование CSS и JS | + | \# Кэширование CSS и JS |
refresh_pattern -i \.(css|js)$ 1440 40% 40320 | refresh_pattern -i \.(css|js)$ 1440 40% 40320 | ||
− | # Кэширование видео | + | \# Кэширование видео |
refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200 | refresh_pattern -i \.(mp4|avi|mkv|mov)$ 10080 90% 43200 | ||
− | # Не кэшировать динамический контент | + | \# Не кэшировать динамический контент |
refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0 | refresh_pattern -i \.(php|asp|jsp|cgi)$ 0 0% 0 | ||
− | </ | + | </pre> |
− | == 6. Настройка фильтрации | + | == 6. Настройка фильтрации == |
=== Блокировка сайтов === | === Блокировка сайтов === | ||
1. Создайте файл с заблокированными доменами: | 1. Создайте файл с заблокированными доменами: | ||
− | < | + | <pre>sudo nano /etc/squid/blocked_domains.txt</pre> |
2. Добавьте домены для блокировки: | 2. Добавьте домены для блокировки: | ||
− | < | + | <pre>facebook.com |
twitter.com | twitter.com | ||
instagram.com | instagram.com | ||
youtube.com | youtube.com | ||
− | </ | + | </pre> |
3. Создайте файл с заблокированными словами: | 3. Создайте файл с заблокированными словами: | ||
− | < | + | <pre>sudo nano /etc/squid/blocked_words.txt</pre> |
4. Добавьте слова для блокировки: | 4. Добавьте слова для блокировки: | ||
− | < | + | <pre>porn |
gambling | gambling | ||
violence | violence | ||
− | </ | + | </pre> |
=== Настройка ACL для фильтрации === | === Настройка ACL для фильтрации === | ||
1. Добавьте ACL правила в конфигурацию: | 1. Добавьте ACL правила в конфигурацию: | ||
− | < | + | <pre>\# ACL для заблокированных доменов |
acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt" | acl blocked_domains dstdomain "/etc/squid/blocked_domains.txt" | ||
− | # ACL для заблокированных слов | + | \# ACL для заблокированных слов |
acl blocked_words url_regex -i "/etc/squid/blocked_words.txt" | acl blocked_words url_regex -i "/etc/squid/blocked_words.txt" | ||
− | # ACL для времени доступа | + | \# ACL для времени доступа |
acl work_hours time MTWHF 09:00-18:00 | acl work_hours time MTWHF 09:00-18:00 | ||
acl weekend time SA 00:00-23:59 | acl weekend time SA 00:00-23:59 | ||
acl weekend time SU 00:00-23:59 | acl weekend time SU 00:00-23:59 | ||
− | # Правила блокировки | + | \# Правила блокировки |
http_access deny blocked_domains | http_access deny blocked_domains | ||
http_access deny blocked_words | http_access deny blocked_words | ||
http_access deny !work_hours | http_access deny !work_hours | ||
− | </ | + | </pre> |
− | == 7. Настройка логирования | + | == 7. Настройка логирования == |
=== Настройка логов доступа === | === Настройка логов доступа === | ||
1. Настройте логирование в конфигурации: | 1. Настройте логирование в конфигурации: | ||
− | < | + | <pre>\# Настройки логирования |
access_log /var/log/squid/access.log squid | access_log /var/log/squid/access.log squid | ||
cache_log /var/log/squid/cache.log | cache_log /var/log/squid/cache.log | ||
cache_store_log /var/log/squid/store.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 | logformat combined %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt | ||
− | </ | + | </pre> |
=== Настройка ротации логов === | === Настройка ротации логов === | ||
1. Создайте конфигурацию logrotate: | 1. Создайте конфигурацию logrotate: | ||
− | < | + | <pre>sudo nano /etc/logrotate.d/squid</pre> |
2. Добавьте настройки: | 2. Добавьте настройки: | ||
− | < | + | <pre>/var/log/squid/*.log { |
daily | daily | ||
missingok | missingok | ||
Строка 237: | Строка 237: | ||
endscript | endscript | ||
} | } | ||
− | </ | + | </pre> |
− | == 8. Настройка файрвола | + | == 8. Настройка файрвола == |
=== Настройка UFW === | === Настройка UFW === | ||
1. Разрешите порт Squid: | 1. Разрешите порт Squid: | ||
− | < | + | <pre>sudo ufw allow 3128/tcp</pre> |
2. Проверьте статус: | 2. Проверьте статус: | ||
− | < | + | <pre>sudo ufw status</pre> |
=== Настройка iptables === | === Настройка iptables === | ||
1. Разрешите порт через iptables: | 1. Разрешите порт через iptables: | ||
− | < | + | <pre>sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT</pre> |
2. Сохраните правила: | 2. Сохраните правила: | ||
− | < | + | <pre>sudo iptables-save > /etc/iptables/rules.v4</pre> |
− | == 9. Мониторинг и управление | + | == 9. Мониторинг и управление == |
=== Просмотр статистики === | === Просмотр статистики === | ||
1. Включите статистику в конфигурации: | 1. Включите статистику в конфигурации: | ||
− | < | + | <pre>\# Настройки статистики |
acl manager proto cache_object | acl manager proto cache_object | ||
http_access allow manager localhost | http_access allow manager localhost | ||
http_access deny manager | http_access deny manager | ||
− | # Настройки кэша | + | \# Настройки кэша |
cache_mgr admin@example.com | cache_mgr admin@example.com | ||
− | </ | + | </pre> |
2. Перезапустите Squid: | 2. Перезапустите Squid: | ||
− | < | + | <pre>sudo systemctl restart squid</pre> |
3. Просмотр статистики: | 3. Просмотр статистики: | ||
− | < | + | <pre>curl http://localhost:3128/squid-internal-mgr/info</pre> |
=== Управление кэшем === | === Управление кэшем === | ||
1. '''Очистка кэша''': | 1. '''Очистка кэша''': | ||
− | < | + | <pre>sudo squid -k shutdown</pre> |
− | < | + | <pre>sudo rm -rf /var/spool/squid/*</pre> |
− | < | + | <pre>sudo squid -z</pre> |
− | < | + | <pre>sudo systemctl start squid</pre> |
2. '''Перезапуск Squid''': | 2. '''Перезапуск Squid''': | ||
− | < | + | <pre>sudo systemctl restart squid</pre> |
3. '''Проверка конфигурации''': | 3. '''Проверка конфигурации''': | ||
− | < | + | <pre>sudo squid -k parse</pre> |
4. '''Просмотр логов''': | 4. '''Просмотр логов''': | ||
− | < | + | <pre>sudo tail -f /var/log/squid/access.log</pre> |
− | == 10. Продвинутые настройки | + | == 10. Продвинутые настройки == |
=== Настройка прозрачного прокси === | === Настройка прозрачного прокси === | ||
1. Настройте iptables для прозрачного прокси: | 1. Настройте iptables для прозрачного прокси: | ||
− | < | + | <pre>\# Перенаправление HTTP трафика на Squid |
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | ||
− | # Перенаправление HTTPS трафика (требует дополнительной настройки) | + | \# Перенаправление HTTPS трафика (требует дополнительной настройки) |
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 | sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128 | ||
− | </ | + | </pre> |
2. Обновите конфигурацию Squid: | 2. Обновите конфигурацию Squid: | ||
− | < | + | <pre>\# Настройки для прозрачного прокси |
http_port 3128 transparent | http_port 3128 transparent | ||
− | </ | + | </pre> |
=== Настройка родительского прокси === | === Настройка родительского прокси === | ||
1. Настройте подключение к родительскому прокси: | 1. Настройте подключение к родительскому прокси: | ||
− | < | + | <pre>\# Настройки родительского прокси |
cache_peer parent-proxy.example.com parent 3128 0 no-query default | cache_peer parent-proxy.example.com parent 3128 0 no-query default | ||
cache_peer_access parent-proxy.example.com allow all | cache_peer_access parent-proxy.example.com allow all | ||
never_direct allow all | never_direct allow all | ||
− | </ | + | </pre> |
=== Настройка SSL Bumping === | === Настройка SSL Bumping === | ||
1. Создайте SSL сертификат: | 1. Создайте SSL сертификат: | ||
− | < | + | <pre>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"</pre> |
2. Настройте SSL Bumping: | 2. Настройте SSL Bumping: | ||
− | < | + | <pre>\# SSL Bumping настройки |
ssl_bump peek all | ssl_bump peek all | ||
ssl_bump bump all | ssl_bump bump all | ||
sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB | sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB | ||
sslcrtd_children 8 startup=1 idle=1 | sslcrtd_children 8 startup=1 idle=1 | ||
− | </ | + | </pre> |
− | == 11. Настройка клиентов | + | == 11. Настройка клиентов == |
=== Настройка браузера === | === Настройка браузера === | ||
Строка 347: | Строка 347: | ||
3. '''Системные настройки Linux''': | 3. '''Системные настройки Linux''': | ||
− | < | + | <pre>export http_proxy=http://proxy-server:3128 |
export https_proxy=http://proxy-server:3128 | export https_proxy=http://proxy-server:3128 | ||
export no_proxy=localhost,127.0.0.1 | export no_proxy=localhost,127.0.0.1 | ||
− | </ | + | </pre> |
=== Настройка PAC файла === | === Настройка PAC файла === | ||
1. Создайте PAC файл: | 1. Создайте PAC файл: | ||
− | < | + | <pre>sudo nano /var/www/html/proxy.pac</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>function FindProxyForURL(url, host) { |
if (isInNet(host, "192.168.0.0", "255.255.0.0") || | if (isInNet(host, "192.168.0.0", "255.255.0.0") || | ||
isInNet(host, "10.0.0.0", "255.0.0.0") || | isInNet(host, "10.0.0.0", "255.0.0.0") || | ||
Строка 366: | Строка 366: | ||
return "PROXY proxy-server:3128"; | return "PROXY proxy-server:3128"; | ||
} | } | ||
− | </ | + | </pre> |
− | == 12. Безопасность | + | == 12. Безопасность == |
=== Ограничение доступа по IP === | === Ограничение доступа по IP === | ||
1. Настройте ACL для ограничения доступа: | 1. Настройте ACL для ограничения доступа: | ||
− | < | + | <pre>\# ACL для разрешенных сетей |
acl allowed_networks src 192.168.1.0/24 | acl allowed_networks src 192.168.1.0/24 | ||
acl allowed_networks src 10.0.0.0/8 | acl allowed_networks src 10.0.0.0/8 | ||
− | # Правила доступа | + | \# Правила доступа |
http_access allow allowed_networks | http_access allow allowed_networks | ||
http_access deny all | http_access deny all | ||
− | </ | + | </pre> |
=== Настройка SSL/TLS === | === Настройка SSL/TLS === | ||
1. Настройте HTTPS для веб-интерфейса: | 1. Настройте HTTPS для веб-интерфейса: | ||
− | < | + | <pre>\# HTTPS настройки |
https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key | https_port 3129 cert=/etc/squid/ssl/squid.crt key=/etc/squid/ssl/squid.key | ||
− | </ | + | </pre> |
=== Мониторинг безопасности === | === Мониторинг безопасности === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
− | < | + | <pre>sudo nano /usr/local/bin/squid-monitor.sh</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>\#!/bin/bash |
− | # Проверка статуса Squid | + | \# Проверка статуса Squid |
if ! systemctl is-active --quiet squid; then | if ! systemctl is-active --quiet squid; then | ||
echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com | echo "Squid proxy is down!" | mail -s "Proxy Alert" admin@example.com | ||
fi | fi | ||
− | # Проверка использования диска | + | \# Проверка использования диска |
DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//') | DISK_USAGE=$(df /var/spool/squid | tail -1 | awk '{print $5}' | sed 's/%//') | ||
if [ $DISK_USAGE -gt 80 ]; then | if [ $DISK_USAGE -gt 80 ]; then | ||
echo "Squid cache disk usage is high: ${DISK_USAGE}%" | mail -s "Proxy Alert" admin@example.com | echo "Squid cache disk usage is high: ${DISK_USAGE}%" | mail -s "Proxy Alert" admin@example.com | ||
fi | fi | ||
− | </ | + | </pre> |
− | == 13. Устранение неполадок | + | == 13. Устранение неполадок == |
=== Частые проблемы === | === Частые проблемы === | ||
1. '''Squid не запускается''': | 1. '''Squid не запускается''': | ||
− | * Проверьте синтаксис конфигурации: < | + | * Проверьте синтаксис конфигурации: <pre>sudo squid -k parse</pre> |
* Проверьте права доступа к файлам | * Проверьте права доступа к файлам | ||
− | * Проверьте логи: < | + | * Проверьте логи: <pre>sudo journalctl -u squid</pre> |
2. '''Клиенты не могут подключиться''': | 2. '''Клиенты не могут подключиться''': | ||
Строка 431: | Строка 431: | ||
1. '''Проверка статуса''': | 1. '''Проверка статуса''': | ||
− | < | + | <pre>sudo systemctl status squid</pre> |
2. '''Проверка портов''': | 2. '''Проверка портов''': | ||
− | < | + | <pre>sudo netstat -tlnp | grep :3128</pre> |
3. '''Проверка логов''': | 3. '''Проверка логов''': | ||
− | < | + | <pre>sudo tail -f /var/log/squid/access.log</pre> |
4. '''Тестирование подключения''': | 4. '''Тестирование подключения''': | ||
− | < | + | <pre>curl -x http://proxy-server:3128 http://example.com</pre> |
== Заключение == | == Заключение == |
Текущая версия на 10:38, 15 октября 2025
Содержание
- 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 и оптимизацией производительности ваших прокси-серверов!