Введение
Squid — известное решение управления сетевым трафиком. Существует множество ипостасей его применения, самые популярные из которых - улучшение конфиденциальности (анонимизация), повышение безопасности или скорости соединения. Например, вы можете воспользоваться squid чтобы парсить содержимое сайта не «выдавая» свой IP-адрес. Прокси может быть полезен, чтобы избежать «географических» блокировок или исследовать различия в «поведении» целевого хоста в зависимости от местоположения клиента.
Подготовка
Перед началом работ стоит убедиться, что у вас есть компьютер с Ubuntu 20.04, с полномочиями root (sudo тоже сгодится). «Внешний» доступ по доменному имени возможен и удобен, но если его нет – не страшно, достаточно только знать IP сервера.
Настройка службы
Во-первых, авторизуйтесь как root и обновите кэш системных пакетов.
sudo -s
apt-get update
Squid уже давно является частью большинства "мейнстримных" репозиториев Ubuntu, разработчики скомпилировали готовый пакет и есть возможность не собирая его из исходного кода самостоятельно провести установку «в один клик».
apt-get -y install squid
Для того, чтобы свежеустановленный squid стартовал как системный демон, при каждой перезагрузке машины, дайте в терминале команду:
systemctl enable squid
Кастомизация
Squid будет "считывать" параметры работы из файла /etc/squid/squid.conf. Стоит несколько подредактировать данный конфиг, найдите параметр http_port и вместо предустановленного значения подставьте любой неиспользуемый сетевой порт, предпочтительно номером выше 1024.
Затем перейдите к строчке http_access deny all. Дальнейшие действия зависят от того, что вы хотите в итоге увидеть. Чтобы просто предоставить доступ всем, установите для этого параметра значение "allow all". Несколько более разумным будет проксировать соединения только с некоторых "доверенных" IP-адресов. Для этого вставьте директиву acl whitelist src "/etc/squid/whitelist" перед "http_access deny all".
Не забудьте разрешить пропуск трафика squid через системный брандмауэр:
ufw allow squid
Затем добавьте свой настоящий IP в файл /etc/squid/whitelist и перезагрузите сервис.
curl ifconfig.me >> /etc/squid/whitelist
service squid restart
Допуск только авторизованных пользователей
Большинство прокси-сервисов с одной стороны, и многие клиентские приложения, (например, веб-браузеры), с другой стороны, поддерживают тот или иной механизм авторизации. Это могут быть токены или выделенные серверы авторизации, но в основном используется парольный доступ. Устойчивый пароль для squid можно создать с помощью внутренних механизмов операционной системы. Создайте файл с именем /etc/squid/pswds и затем «внесите» его в конфигурацию прокси-сервиса. Первый шаг - установка необходимого инструментария
apt-get install apache2-utils -y
Затем нужно будет создать учетные данные для последующей авторизации. Введите в терминале строку:
htpasswd -c /etc/squid/pswds <имя_пользователя>
Утилита запросит создаваемый пароль. Придумайте его, затем введите дважды.
Впоследствии нужно «интегрировать» только что созданную пару с демоном squid. Снова откройте файл с настройками squid текстовым редактором, раскомментируйте (или создайте, если их не существует) директивы:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/pswds
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
Помните, что система будет "читать" свои конфиг-файлы "сверху вниз", данные параметры необходимо поместить выше опции "http_access deny all". Следует перезапустить сервис как только закончите редактирование:
service squid restart
Тест сервиса
Самый быстрый способ проверить что в итоге получилось - утилита curl. Просто выполните команду:
curl -v -x http://<имя пользователя>:<пароль>@:<порт> https://google.com
Полученный в итоге "код 200" свидетельствует об успехе:
Настройка клиента
Если предыдущий шаг прошел успешно, вы готовы к настройке более "удобного" в использовании клиента. Например, популярный кейс - использование прокси в браузере. Покажу на примере Google Chrome. Чтобы «научить» его работать через прокси, выполните следующие действия:
Откройте настройки браузера (3 точки справа вверху окна, затем Настройки):
Перейдите на вкладку «Система» и нажмите "Открыть настройки прокси-сервера для компьютера":
Откроются общесистемные настройки. Нажмите "Настройка вручную", затем введите IP-адрес сервера, где вы устанавливали squid, а также порт прокси в соответствующие поля:
Запустите Google Chrome и посетите адрес https://whoer.net. Вместо вашего реального IP должен отобразиться IP-адрес squid.
Итоги
Из этого материала вы узнали, как можно легко развернуть стабильный сервис для проксирования трафика практически без накладных расходов. Теперь вы знаете, как защитить его и отклонять подключения от неизвестных пользователей. Также вы умеете использовать веб-браузер в роли прокси-клиента и можете «скрыть» свой реальный IP за собственным анонимайзером.