6.13 Як установити проксі-сервер Squid

Squid – це зручний проксі-сервер з відкритим кодом, який забезпечує кешування та проксі-сервіс для протоколів HTTP, HTTPS, FTP та інших мережевих протоколів. Він широко використовується в корпоративних мережах для оптимізації трафіку, підвищення безпеки та контролю доступу до веб-ресурсів.

Основними перевагами Squid є його висока продуктивність, гнучкість налаштування та можливість значного зменшення навантаження на канал зв’язку завдяки кешуванню. Це робить його відмінним вибором як для малих офісів, так і для великих організацій.

За роки розвитку Squid став стандартом де-факто для Linux-систем, пропонуючи багатий функціонал для фільтрації контенту, автентифікації користувачів та моніторингу мережевого трафіку.

Важливо: перед встановленням переконайтеся, що Ваша система відповідає мінімальним вимогам.

  • Мінімум 1 ГБ оперативної пам’яті.
  • Не менше 10 ГБ вільного місця на диску.
  • Статична IP-адреса.
  • Права суперкористувача (root).

Процедура встановлення

Встановлення для ОС Debian/Ubuntu:
  1. Оновіть систему:
  1. sudo apt update
  2. sudo apt upgrade -y
  1. Встановіть Squid:
  1. sudo apt install squid -y
  1. Перевірте статус:
  1. sudo systemctl status squid
Встановлення для CentOS, AlmaLinux, RockyLinux:
  1. Оновіть систему:
  1. sudo yum update -y
  1. Перевірте статус:
  1. sudo yum install squid -y
  1. Перевірка статусу:
  1. sudo systemctl status squid

Базова конфігурація

  1. Відкрийте конфігураційний файл:
  1. sudo nano /etc/squid/squid.conf
  1. Базові налаштування:
http_port 3128
acl localnet src 192.168.1.0/24
http_access allow localnet
http_access deny all
  1. Перезапуск сервісу:
  1. sudo systemctl restart squid

Налаштування автентифікації користувачів

Встановлення утиліт для автентифікації

Для Debian/Ubuntu:

  1. sudo apt install apache2-utils -y

Для CentOS:

  1. sudo yum install httpd-tools -y

Створення файлу паролів

  1. Створіть директорію для паролів:
  1. sudo mkdir -p /etc/squid/passwords
  1. Створення першого користувача (використовується тільки для першого користувача, оскільки створює новий файл):
  1. sudo htpasswd -c /etc/squid/passwords/passwd newuser
  2. New password: 123456789
  3. Re-type new password: 123456789

Додавання наступних користувачів (без опції -c, щоб не перезаписати файл):

  1. sudo htpasswd /etc/squid/passwords/passwd seconduser
  2. New password: ********
  3. Re-type new password: ********
  1. Встановлення правильних прав:
  1. sudo chown -R proxy:proxy /etc/squid/passwords
  2. 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

Додаткові налаштування безпеки автентифікації

  1. Обмеження кількості одночасних з’єднань:
acl user1 proxy_auth username1
tcp_outgoing_connection_limit user1 10
  1. Обмеження швидкості:
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 10000/20000
delay_access 1 allow authenticated
  1. Обмеження доступу за часом:
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

Важливо: при налаштуванні автентифікації.

  1. Регулярно змінюйте паролі.
  2. Використовуйте складні паролі.
  3. Видаляти неактивних користувачів.
  4. Для корпоративного використання рекомендується розглянути інтеграцію з LDAP або Active Directory.

Налаштування брандмауера

Налаштування Iptables

Важливо: перед внесенням змін до Iptables, обов’язково збережіть поточні правила.

Це дозволить Вам відновити налаштування у разі помилки.

  1. sudo iptables-save > /root/iptables.backup

Для відновлення правил можете скористатись командою:

  1. sudo iptables-restore < /root/iptables.backup

Базові правила для Squid:

  1. # Дозволяємо вхідні з'єднання на порт проксі
  2. sudo iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
  3. # Дозволяємо вихідні з'єднання для проксі
  4. sudo iptables -A OUTPUT -p tcp --sport 3128 -j ACCEPT
  5. # Дозволяємо NAT для клієнтів проксі
  6. sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Розширені правила безпеки:

  1. # Обмежуємо доступ до проксі тільки з локальної мережі
  2. sudo iptables -A INPUT -p tcp --dport 3128 -s 192.168.1.0/24 -j ACCEPT
  3. sudo iptables -A INPUT -p tcp --dport 3128 -j DROP
  4. # Логування відхилених спроб підключення
  5. sudo iptables -A INPUT -p tcp --dport 3128 -j LOG --log-prefix "SQUID_DENIED: "

Налаштування переадресації портів:

  1. # Перенаправлення HTTP трафіку на Squid
  2. sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
  3. # Перенаправлення HTTPS трафіку
  4. sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

Як зберегти правила файрвола для різних систем.

iptables для Debian/Ubuntu:

Використовуйте iptables-persistent для збереження правил.

  1. sudo apt install iptables-persistent
  2. sudo netfilter-persistent save
iptables для CentOS:

Використовуйте службу iptables.

  1. sudo service iptables save
ufw для Ubuntu/Debian:

Дозвольте потрібний порт через UFW.

  1. sudo ufw allow 3128/tcp
firewalld для CentOS:

Збережіть правило для потрібного порту через firewalld.

  1. sudo firewall-cmd --permanent --add-port=3128/tcp
  2. 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

Перевірка роботи.

Для перевірки роботи проксі-сервера можна використати команду:

  1. 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.

Інформуємо: для отримання додаткової інформації можете скористатись офіційними ресурсами.