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