2.5.4.1.2 Установка и настройка squid
Скачать документ Описание Squid
Установка Squid и настройка в прозрачном режиме работы
Настройка Selinux для Squid
Настройка кэширования
Контроль доступа к сайтам
Перенаправление трафика
Настройка клиента и браузера
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
- Версия ПО: squid 5.5-1
Описание Squid
Squid – программа, представляющая собой кэширующий прокси-сервер для протоколов HTTP, HTTPS, FTP и других. Используется для кэширования часто запрашиваемого веб-контента, а также для фильтрации сетевого трафика.
Установка Squid и настройка в прозрачном режиме работы
Установка
Установите прокси-сервер следующей командой:
# sudo dnf install squid
Подготовка сертификатов
Чтобы работал HTTPS, необходимо сгенерировать сертификаты. Для этого создаем папку для хранения сертификатов, например, в /etc/squid/sslcert.
# sudo mkdir /etc/squid/sslcert
Переходим в эту папку:
# cd /etc/squid/sslcert
Генерируем ключ:
# sudo openssl genrsa -out /etc/squid/sslcert/squid.key
Создаем csr-запрос, используя ключ; нужно будет указать всю необходимую информацию для csr:
# sudo openssl req -new -key /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.csr
Подписываем сертификат самим собой:
# sudo openssl x509 -req -days 3650 -in /etc/squid/sslcert/squid.csr -signkey /etc/squid/sslcert/squid.key -out /etc/squid/sslcert/squid.pem
Генерируем корневой сертификат, который нужно будет добавить в браузер:
# sudo openssl x509 -in /etc/squid/sslcert/squid.pem -outform DER -out squid.der
Далее нужно будет дать права на папку с сертификатами для squid:
# chown -R :squid /etc/squid/sslcert
Описание настроек Squid.conf
Открываем файл настроек:
# sudo nano /etc/squid/squid.conf
Блок настроек «acl localnet src …» устанавливает правила доступа для вашей локальной сети, если в списке нет IP-адреса вашей сети, то его нужно добавить, например:
acl localnet src 10.9.1.0/24
или через файл:
acl localnet src "/etc/squid/acl_localnet"
* кавычки обязательны
** после необходимо создать файл /etc/squid/acl_localnet и с каждой строчки перечислить разрешенные IP-адреса.
Блок настроек http_access устанавливает разрешения на доступ; чтобы разрешить весь трафик, добавляем следующую строчку:
http_access allow all
* важно, чтобы выше она была запрещающей – http_access deny all.
Настройка Squid с HTTPS
Открываем файл конфигурации:
# sudo nano /etc/squid/squid.conf
Находим строку с http_port 3128 и под ней дописываем строки:
- создание прозрачного HTTP-порта 3129:
http_port 3129 intercept
- создание порта 3130 для https-трафика с генерацией сертификатов по ключу:
https_port 3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/sslcert/squid.pem key=/etc/squid/sslcert/squid.key
Отключаем проверку сертификатов:
sslproxy_cert_error allow all
Указываем, что необходимо принимать сертификаты, даже если они не прошли проверку:
sslproxy_flags DONT_VERIFY_PEER
Перенаправляем весь трафик на squid:
always_direct allow all
Устанавливаем безопасное соединение с сервером, затем с клиентом, используя имитированный сертификат сервера:
ssl_bump server-first all
Устанавливаем TCP-туннель, не расшифровывая прокси-трафик:
ssl_bump none all
Указываем расположение программы генерации сертификатов и устанавливаем кэширование:
sslcrtd_program /usr/lib64/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB
Сохраняем и закрываем файл /etc/squid/squid.conf.
Дальше нужно пересоздать базу данных сертификатов:
# rm -rf /var/lib/ssl_db # sudo /usr/lib64/squid/security_file_certgen -c -s /var/lib/ssl_db -M 4MB
Устанавливаем владельца squid на папку базы данных сертификатов:
# sudo chown -R :squid /var/lib/ssl_db
Настройка Selinux для Squid
Добавляем политики:
# sudo semanage fcontext -a -t squid_conf_t '/var/lib/ssl_db/index.txt' # sudo semanage fcontext -a -t squid_conf_t '/var/lib/ssl_db/size'
Применяем политики:
# sudo /sbin/restorecon -v /var/lib/ssl_db/index.txt # sudo /sbin/restorecon -v /var/lib/ssl_db/size
Перезагружаем систему и запускаем squid:
# sudo systemctl start squid
Проверяем работоспособность squid:
# sudo systemctl status squid
Squid должен быть активен.
Добавляем squid в автозагрузку:
# sudo systemctl enable squid
Настройка кэширования
Настройте директорию для кэша в файле /etc/squid/squid.conf:
cache_dir ufs /var/spool/squid 4096 32 256
* где ufs – файловая система (ufs для SQUID является самой подходящей);
/var/spool/squid — директория хранения кэша;
4096 — объем пространства в мегабайтах, которое будет выделено под кэш;
32 — количество каталогов первого уровня, которое будет создано для размещения кэша;
256 — количество каталогов второго уровня, которое будет создано для размещения кэша.
Теперь создайте структуру папок под кэш следующей командой:
# sudo squid -z
Перезапускаем squid:
# sudo systemctl restart squid
Контроль доступа к сайтам
Открываем конфигурационный файл squid:
nano /etc/squid/squid.conf
После строки «acl Safe_ports port 777» добавляем:
acl CONNECT method CONNECT
acl BLOCKED url_regex -i '/etc/squid/blocklist'
Тем самым создается список доступа к сайтам.
Далее перед строкой «http_access allow localnet» для блокировки списка доступа прописываем:
http_access deny BLOCKED
Сохраняем конфигурационный файл.
Создаем файл со списком сайтов для блокировки:
# sudo nano /etc/squid/blocklist
Например, с таким списком сайтов:
facebook.com vk.com youtube.com
Сохраняем файл.
Перечитываем конфигурацию squid:
# sudo systemctl reload squid
Блокировка сайтов настроена, осталось только перенаправить трафик на сервер squid.
Перенаправление трафика
Установите iptables, если пакет еще не установлен:
dnf install iptables
Включаем ip_forwarding для разрешения проходящего трафика:
# sudo echo 1 >> /proc/sys/net/ipv4/ip_forward
Чтобы настройка ip_forward не сбрасывалась после перезагрузки, нужно в конце файла /usr/lib/sysctl.d/50-default.conf прописать:
# net.ipv4.ip_forward = 1
Добавляем правила для iptables:
# sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129 # sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
Для тестирования прокси-сервера с локальным трафиком, надо перенаправлять на Squid весь трафик, кроме трафика от Squid, это можно сделать правилами:
# sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner squid --dport 80 -j REDIRECT --to-port 3129 # sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner squid --dport 443 -j REDIRECT --to-port 3130
Если нужно сохранить правила iptables, чтобы после перезагрузки они не сбрасывались, необходимо ввести команду:
# sudo service iptables save
Перезапускаем squid:
# sudo systemctl restart squid
Настройка клиента и браузера
В РЕД ОС откройте Главное системное меню - Параметры - Прокси сервер.Для ручной настройки подключения к прокси заполните поля адреса сервера и порт (3128):
Настройка браузера
Сейчас большинство сайтов используют технологию HSTS для предотвращения MiTM-атак, поэтому если вы хотите настроить Squid для фильтрации трафика в своей организации, вам следует добавить сертификат .der. Рассмотрим на примере Chrome.
В меню браузера переходим по пути: Настройки->Конфиденциальность и безопасность->Безопасность->Настроить сертификаты->Центры сертификации->Импорт.
Добавляем созданный ранее сертификат для браузера по пути:
/etc/squid/sslcert/squid.pem
Устанавливаем все галочки и нажимаем «ОК».
Если все сделано правильно, то при входе на запрещенный сайт должна отобразиться такая страница:
Дата последнего изменения: 03.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.