6.13 Как установить и настроить прокси-сервер Squid
Squid – это удобный прокси-сервер с открытым кодом, который обеспечивает кеширование и прокси-сервис для протоколов HTTP, HTTPS, FTP и других сетевых протоколов. Он широко используется в корпоративных сетях для оптимизации трафика, повышения безопасности и контроля доступа к веб-ресурсам.
Основными преимуществами Squid являются его высокая производительность, гибкость настройки и возможность значительного уменьшения нагрузки на канал связи благодаря кешированию. Это делает его отличным выбором как для малых офисов, так и для крупных организаций.
За годы развития Squid стал стандартом де-факто для Linux-систем, предлагая богатый функционал для фильтрации контента, аутентификации пользователей и мониторинга сетевого трафика.
Важно: перед установкой убедитесь, что Ваша система соответствует минимальным требованиям.
- Минимум 1 ГБ оперативной памяти.
- Не менее 10 ГБ свободного места на диске.
- Статический IP-адрес.
- Права суперпользователя (root).
Процедура установки
Установка для ОС Debian/Ubuntu:
- Обновите систему:
- sudo apt update
- sudo apt upgrade -y
- Установите Squid:
- sudo apt install squid -y
- Проверьте статус:
- sudo systemctl status squid
Установка для CentOS, AlmaLinux, RockyLinux:
- Обновите систему:
- sudo yum update -y
- Проверьте статус:
- sudo yum install squid -y
- Проверка статуса:
- sudo systemctl status squid
Базовая конфигурация
- Откройте конфигурационный файл:
- sudo nano /etc/squid/squid.conf
- Базовые настройки:
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
- Перезапуск сервиса:
- sudo systemctl restart squid
Настройка конфигурации для аутентификации
Создание файла паролей
- Создание пользователя с использованием digest аутентификации:
- sudo htdigest -c /etc/squid/passwords proxy newuser
Добавление следующих пользователей (без опции -c
):
- sudo htdigest /etc/squid/passwords proxy seconduser
- Установка правильных прав:
- sudo chown -R proxy:proxy /etc/squid/passwords
- sudo chmod -R 640 /etc/squid/passwords
Настройка конфигурации для аутентификации
Отредактируйте файл /etc/squid/squid.conf
:
# Настройка digest аутентификации
auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwords
auth_param digest realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_port 3128
dns_v4_first on
Важно: при настройке digest аутентификации.
- Убедитесь, что путь к
digest_file_auth
правильный для Вашей системы. - Realm (
proxy
в нашем случае) должен совпадать при создании пользователей и в конфигурации. - Регулярно обновляйте пароли пользователей.
- Удаляйте неактивных пользователей.
Дополнительные настройки безопасности аутентификации
- Ограничение количества одновременных соединений:
acl user1 proxy_auth username1
tcp_outgoing_connection_limit user1 10
- Ограничение скорости:
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 10000/20000
delay_access 1 allow authenticated
- Ограничение доступа по времени:
acl working_hours time MTWHF 9:00-18:00
http_access allow authenticated working_hours
Мониторинг доступа пользователей
Для просмотра активности пользователей используйте:
sudo tail -f /var/log/squid/access.log | grep username
Важно: при настройке аутентификации.
- Регулярно меняйте пароли.
- Используйте сложные пароли.
- Удаляйте неактивных пользователей.
- Для корпоративного использования рекомендуется рассмотреть интеграцию с LDAP или Active Directory.
Настройка брандмауэра
Настройка Iptables
Важно: перед внесением изменений в Iptables, обязательно сохраните текущие правила.
Это позволит Вам восстановить настройки в случае ошибки.
- sudo iptables-save > /root/iptables.backup
Для восстановления правил можете воспользоваться командой:
- sudo iptables-restore < /root/iptables.backup
Базовые правила для Squid:
- # Разрешаем входящие соединения на порт прокси
- sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
-
- # Разрешаем исходящие соединения для прокси
- sudo iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT
-
- # Разрешаем NAT для клиентов прокси
- sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Расширенные правила безопасности:
- # Ограничиваем доступ к прокси только из локальной сети
- sudo iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
- sudo iptables -A INPUT -p tcp --dport 3128 -j DROP
-
- # Логирование отклоненных попыток подключения
- sudo iptables -A INPUT -p tcp --dport 3128 -j LOG --log-prefix "SQUID_DENIED: "
Настройка переадресации портов:
- # Перенаправление 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
Как сохранить правила файрвола для разных систем.
iptables для Debian/Ubuntu:
Используйте iptables-persistent для сохранения правил.
- sudo apt install iptables-persistent
- sudo netfilter-persistent save
iptables для CentOS:
Используйте службу iptables.
- sudo service iptables save
ufw для Ubuntu/Debian:
Разрешите нужный порт через UFW.
- sudo ufw allow 3128/tcp
firewalld для CentOS:
Сохраните правило для нужного порта через firewalld.
- sudo firewall-cmd --permanent --add-port=3128/tcp
- sudo firewall-cmd --reload
Каждый способ позволяет сохранить правила, чтобы они автоматически применялись после перезагрузки системы.
Автоматизация настройки Iptables
Создайте файл setup_squid_iptables.sh
, это можно сделать командой: sudo nano setup_squid_iptables.sh
;
#!/bin/bash
# Очистка существующих правил
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
# Установка базовой политики
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# Разрешение локального трафика
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Разрешение установленных соединений
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Правила для Squid
iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# Сохранение правил
if [ -f /etc/debian_version ]; then
netfilter-persistent save
else
service iptables save
fi
Проверка работы.
Для проверки работы прокси-сервера можно использовать команду:
- curl -x http://localhost:3128 http://www.example.com
Дополнительные настройки
Настройка кеширования:
cache_dir ufs /var/spool/squid 10000 16 256
maximum_object_size 4096 KB
Настройка логирования:
access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
Рекомендуем: регулярно проверяйте логи на наличие подозрительной активности и следите за обновлениями безопасности Squid.
Информируем: для получения дополнительной информации можете воспользоваться официальными ресурсами.