Настройка прокси-сервера Squid — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка прокси-сервера (Squid) = == 1. Подготовка системы == * Войдите в систему под учетной…»)
 
 
Строка 6: Строка 6:
 
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
 
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
  
== 2. Установка Squid ===
+
== 2. Установка Squid ==
  
 
=== Обновление системы ===
 
=== Обновление системы ===
  
 
1. Обновите систему:
 
1. Обновите систему:
<code>sudo apt update</code>
+
<pre>sudo apt update</pre>
  
 
2. Установите Squid:
 
2. Установите Squid:
<code>sudo apt install -y squid</code>
+
<pre>sudo apt install -y squid</pre>
  
 
3. Проверьте версию:
 
3. Проверьте версию:
<code>squid -v</code>
+
<pre>squid -v</pre>
  
 
4. Запустите и включите автозапуск:
 
4. Запустите и включите автозапуск:
<code>sudo systemctl start squid</code>
+
<pre>sudo systemctl start squid</pre>
<code>sudo systemctl enable squid</code>
+
<pre>sudo systemctl enable squid</pre>
  
 
5. Проверьте статус:
 
5. Проверьте статус:
<code>sudo systemctl status squid</code>
+
<pre>sudo systemctl status squid</pre>
  
== 3. Базовая конфигурация ===
+
== 3. Базовая конфигурация ==
  
 
=== Создание резервной копии ===
 
=== Создание резервной копии ===
  
 
1. Создайте резервную копию оригинального файла:
 
1. Создайте резервную копию оригинального файла:
<code>sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup</code>
+
<pre>sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup</pre>
  
 
=== Основная конфигурация ===
 
=== Основная конфигурация ===
  
 
1. Отредактируйте конфигурационный файл:
 
1. Отредактируйте конфигурационный файл:
<code>sudo nano /etc/squid/squid.conf</code>
+
<pre>sudo nano /etc/squid/squid.conf</pre>
  
 
2. Создайте базовую конфигурацию:
 
2. Создайте базовую конфигурацию:
<code># Базовые настройки
+
<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
</code>
+
</pre>
  
== 4. Настройка аутентификации ===
+
== 4. Настройка аутентификации ==
  
 
=== Установка htpasswd ===
 
=== Установка htpasswd ===
  
 
1. Установите apache2-utils:
 
1. Установите apache2-utils:
<code>sudo apt install -y apache2-utils</code>
+
<pre>sudo apt install -y apache2-utils</pre>
  
 
2. Создайте файл паролей:
 
2. Создайте файл паролей:
<code>sudo htpasswd -c /etc/squid/passwords user1</code>
+
<pre>sudo htpasswd -c /etc/squid/passwords user1</pre>
  
 
3. Добавьте дополнительных пользователей:
 
3. Добавьте дополнительных пользователей:
<code>sudo htpasswd /etc/squid/passwords user2</code>
+
<pre>sudo htpasswd /etc/squid/passwords user2</pre>
<code>sudo htpasswd /etc/squid/passwords user3</code>
+
<pre>sudo htpasswd /etc/squid/passwords user3</pre>
  
 
4. Установите права доступа:
 
4. Установите права доступа:
<code>sudo chown proxy:proxy /etc/squid/passwords</code>
+
<pre>sudo chown proxy:proxy /etc/squid/passwords</pre>
<code>sudo chmod 640 /etc/squid/passwords</code>
+
<pre>sudo chmod 640 /etc/squid/passwords</pre>
  
 
=== Настройка аутентификации в Squid ===
 
=== Настройка аутентификации в Squid ===
  
 
1. Отредактируйте конфигурацию:
 
1. Отредактируйте конфигурацию:
<code>sudo nano /etc/squid/squid.conf</code>
+
<pre>sudo nano /etc/squid/squid.conf</pre>
  
 
2. Добавьте настройки аутентификации:
 
2. Добавьте настройки аутентификации:
<code># Настройки аутентификации
+
<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
</code>
+
</pre>
  
== 5. Настройка кэширования ===
+
== 5. Настройка кэширования ==
  
 
=== Оптимизация кэша ===
 
=== Оптимизация кэша ===
  
 
1. Настройте параметры кэширования:
 
1. Настройте параметры кэширования:
<code># Размер кэша в памяти
+
<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
</code>
+
</pre>
  
 
=== Настройка кэша для различных типов контента ===
 
=== Настройка кэша для различных типов контента ===
  
 
1. Добавьте специальные правила кэширования:
 
1. Добавьте специальные правила кэширования:
<code># Кэширование изображений
+
<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
</code>
+
</pre>
  
== 6. Настройка фильтрации ===
+
== 6. Настройка фильтрации ==
  
 
=== Блокировка сайтов ===
 
=== Блокировка сайтов ===
  
 
1. Создайте файл с заблокированными доменами:
 
1. Создайте файл с заблокированными доменами:
<code>sudo nano /etc/squid/blocked_domains.txt</code>
+
<pre>sudo nano /etc/squid/blocked_domains.txt</pre>
  
 
2. Добавьте домены для блокировки:
 
2. Добавьте домены для блокировки:
<code>facebook.com
+
<pre>facebook.com
 
twitter.com
 
twitter.com
 
instagram.com
 
instagram.com
 
youtube.com
 
youtube.com
</code>
+
</pre>
  
 
3. Создайте файл с заблокированными словами:
 
3. Создайте файл с заблокированными словами:
<code>sudo nano /etc/squid/blocked_words.txt</code>
+
<pre>sudo nano /etc/squid/blocked_words.txt</pre>
  
 
4. Добавьте слова для блокировки:
 
4. Добавьте слова для блокировки:
<code>porn
+
<pre>porn
 
gambling
 
gambling
 
violence
 
violence
</code>
+
</pre>
  
 
=== Настройка ACL для фильтрации ===
 
=== Настройка ACL для фильтрации ===
  
 
1. Добавьте ACL правила в конфигурацию:
 
1. Добавьте ACL правила в конфигурацию:
<code># 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
</code>
+
</pre>
  
== 7. Настройка логирования ===
+
== 7. Настройка логирования ==
  
 
=== Настройка логов доступа ===
 
=== Настройка логов доступа ===
  
 
1. Настройте логирование в конфигурации:
 
1. Настройте логирование в конфигурации:
<code># Настройки логирования
+
<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
</code>
+
</pre>
  
 
=== Настройка ротации логов ===
 
=== Настройка ротации логов ===
  
 
1. Создайте конфигурацию logrotate:
 
1. Создайте конфигурацию logrotate:
<code>sudo nano /etc/logrotate.d/squid</code>
+
<pre>sudo nano /etc/logrotate.d/squid</pre>
  
 
2. Добавьте настройки:
 
2. Добавьте настройки:
<code>/var/log/squid/*.log {
+
<pre>/var/log/squid/*.log {
 
     daily
 
     daily
 
     missingok
 
     missingok
Строка 237: Строка 237:
 
     endscript
 
     endscript
 
}
 
}
</code>
+
</pre>
  
== 8. Настройка файрвола ===
+
== 8. Настройка файрвола ==
  
 
=== Настройка UFW ===
 
=== Настройка UFW ===
  
 
1. Разрешите порт Squid:
 
1. Разрешите порт Squid:
<code>sudo ufw allow 3128/tcp</code>
+
<pre>sudo ufw allow 3128/tcp</pre>
  
 
2. Проверьте статус:
 
2. Проверьте статус:
<code>sudo ufw status</code>
+
<pre>sudo ufw status</pre>
  
 
=== Настройка iptables ===
 
=== Настройка iptables ===
  
 
1. Разрешите порт через iptables:
 
1. Разрешите порт через iptables:
<code>sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT</code>
+
<pre>sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT</pre>
  
 
2. Сохраните правила:
 
2. Сохраните правила:
<code>sudo iptables-save > /etc/iptables/rules.v4</code>
+
<pre>sudo iptables-save > /etc/iptables/rules.v4</pre>
  
== 9. Мониторинг и управление ===
+
== 9. Мониторинг и управление ==
  
 
=== Просмотр статистики ===
 
=== Просмотр статистики ===
  
 
1. Включите статистику в конфигурации:
 
1. Включите статистику в конфигурации:
<code># Настройки статистики
+
<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
</code>
+
</pre>
  
 
2. Перезапустите Squid:
 
2. Перезапустите Squid:
<code>sudo systemctl restart squid</code>
+
<pre>sudo systemctl restart squid</pre>
  
 
3. Просмотр статистики:
 
3. Просмотр статистики:
<code>curl http://localhost:3128/squid-internal-mgr/info</code>
+
<pre>curl http://localhost:3128/squid-internal-mgr/info</pre>
  
 
=== Управление кэшем ===
 
=== Управление кэшем ===
  
 
1. '''Очистка кэша''':
 
1. '''Очистка кэша''':
<code>sudo squid -k shutdown</code>
+
<pre>sudo squid -k shutdown</pre>
<code>sudo rm -rf /var/spool/squid/*</code>
+
<pre>sudo rm -rf /var/spool/squid/*</pre>
<code>sudo squid -z</code>
+
<pre>sudo squid -z</pre>
<code>sudo systemctl start squid</code>
+
<pre>sudo systemctl start squid</pre>
  
 
2. '''Перезапуск Squid''':
 
2. '''Перезапуск Squid''':
<code>sudo systemctl restart squid</code>
+
<pre>sudo systemctl restart squid</pre>
  
 
3. '''Проверка конфигурации''':
 
3. '''Проверка конфигурации''':
<code>sudo squid -k parse</code>
+
<pre>sudo squid -k parse</pre>
  
 
4. '''Просмотр логов''':
 
4. '''Просмотр логов''':
<code>sudo tail -f /var/log/squid/access.log</code>
+
<pre>sudo tail -f /var/log/squid/access.log</pre>
  
== 10. Продвинутые настройки ===
+
== 10. Продвинутые настройки ==
  
 
=== Настройка прозрачного прокси ===
 
=== Настройка прозрачного прокси ===
  
 
1. Настройте iptables для прозрачного прокси:
 
1. Настройте iptables для прозрачного прокси:
<code># Перенаправление HTTP трафика на Squid
+
<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
</code>
+
</pre>
  
 
2. Обновите конфигурацию Squid:
 
2. Обновите конфигурацию Squid:
<code># Настройки для прозрачного прокси
+
<pre>\# Настройки для прозрачного прокси
 
http_port 3128 transparent
 
http_port 3128 transparent
</code>
+
</pre>
  
 
=== Настройка родительского прокси ===
 
=== Настройка родительского прокси ===
  
 
1. Настройте подключение к родительскому прокси:
 
1. Настройте подключение к родительскому прокси:
<code># Настройки родительского прокси
+
<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
</code>
+
</pre>
  
 
=== Настройка SSL Bumping ===
 
=== Настройка SSL Bumping ===
  
 
1. Создайте SSL сертификат:
 
1. Создайте SSL сертификат:
<code>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"</code>
+
<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:
<code># 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
</code>
+
</pre>
  
== 11. Настройка клиентов ===
+
== 11. Настройка клиентов ==
  
 
=== Настройка браузера ===
 
=== Настройка браузера ===
Строка 347: Строка 347:
  
 
3. '''Системные настройки Linux''':
 
3. '''Системные настройки Linux''':
<code>export http_proxy=http://proxy-server:3128
+
<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
</code>
+
</pre>
  
 
=== Настройка PAC файла ===
 
=== Настройка PAC файла ===
  
 
1. Создайте PAC файл:
 
1. Создайте PAC файл:
<code>sudo nano /var/www/html/proxy.pac</code>
+
<pre>sudo nano /var/www/html/proxy.pac</pre>
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>function FindProxyForURL(url, host) {
+
<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";
 
}
 
}
</code>
+
</pre>
  
== 12. Безопасность ===
+
== 12. Безопасность ==
  
 
=== Ограничение доступа по IP ===
 
=== Ограничение доступа по IP ===
  
 
1. Настройте ACL для ограничения доступа:
 
1. Настройте ACL для ограничения доступа:
<code># 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
</code>
+
</pre>
  
 
=== Настройка SSL/TLS ===
 
=== Настройка SSL/TLS ===
  
 
1. Настройте HTTPS для веб-интерфейса:
 
1. Настройте HTTPS для веб-интерфейса:
<code># 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
</code>
+
</pre>
  
 
=== Мониторинг безопасности ===
 
=== Мониторинг безопасности ===
  
 
1. Создайте скрипт мониторинга:
 
1. Создайте скрипт мониторинга:
<code>sudo nano /usr/local/bin/squid-monitor.sh</code>
+
<pre>sudo nano /usr/local/bin/squid-monitor.sh</pre>
  
 
2. Добавьте содержимое:
 
2. Добавьте содержимое:
<code>#!/bin/bash
+
<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
</code>
+
</pre>
  
== 13. Устранение неполадок ===
+
== 13. Устранение неполадок ==
  
 
=== Частые проблемы ===
 
=== Частые проблемы ===
  
 
1. '''Squid не запускается''':
 
1. '''Squid не запускается''':
* Проверьте синтаксис конфигурации: <code>sudo squid -k parse</code>
+
* Проверьте синтаксис конфигурации: <pre>sudo squid -k parse</pre>
 
* Проверьте права доступа к файлам
 
* Проверьте права доступа к файлам
* Проверьте логи: <code>sudo journalctl -u squid</code>
+
* Проверьте логи: <pre>sudo journalctl -u squid</pre>
  
 
2. '''Клиенты не могут подключиться''':
 
2. '''Клиенты не могут подключиться''':
Строка 431: Строка 431:
  
 
1. '''Проверка статуса''':
 
1. '''Проверка статуса''':
<code>sudo systemctl status squid</code>
+
<pre>sudo systemctl status squid</pre>
  
 
2. '''Проверка портов''':
 
2. '''Проверка портов''':
<code>sudo netstat -tlnp | grep :3128</code>
+
<pre>sudo netstat -tlnp | grep :3128</pre>
  
 
3. '''Проверка логов''':
 
3. '''Проверка логов''':
<code>sudo tail -f /var/log/squid/access.log</code>
+
<pre>sudo tail -f /var/log/squid/access.log</pre>
  
 
4. '''Тестирование подключения''':
 
4. '''Тестирование подключения''':
<code>curl -x http://proxy-server:3128 http://example.com</code>
+
<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):

Наши специалисты помогут с настройкой Squid и оптимизацией производительности ваших прокси-серверов!