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
Налаштування автентифікації користувачів
Встановлення утиліт для автентифікації
Для Debian/Ubuntu:
- sudo apt install apache2-utils -y
Для CentOS:
- sudo yum install httpd-tools -y
Створення файлу паролів
- Створіть директорію для паролів:
- sudo mkdir -p /etc/squid/passwords
- Створення першого користувача (використовується тільки для першого користувача, оскільки створює новий файл):
- sudo htpasswd -c /etc/squid/passwords/passwd newuser
- New password: 123456789
- Re-type new password: 123456789
Додавання наступних користувачів (без опції -c, щоб не перезаписати файл):
- sudo htpasswd /etc/squid/passwords/passwd seconduser
- New password: ********
- Re-type new password: ********
- Встановлення правильних прав:
- sudo chown -R proxy:proxy /etc/squid/passwords
- sudo chmod -R 640 /etc/squid/passwords
Налаштування конфігурації для автентифікації
Відредагуйте файл /etc/squid/squid.conf
, це можна зробити командою sudo nano /etc/squid/squid.conf
.
# Налаштування автентифікації
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords/passwd
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
# Створення ACL для автентифікованих користувачів
acl authenticated proxy_auth REQUIRED
# Дозвіл доступу тільки автентифікованим користувачам
http_access allow authenticated
http_access deny all
Шлях до basic_ncsa_auth
може відрізнятися в різних дистрибутивах:
- Debian/Ubuntu:
/usr/lib/squid/basic_ncsa_auth
- CentOS:
/usr/lib64/squid/basic_ncsa_auth
Додаткові налаштування безпеки автентифікації
- Обмеження кількості одночасних з’єднань:
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.
Інформуємо: для отримання додаткової інформації можете скористатись офіційними ресурсами.