Настройка SOCKS5 прокси сервера в Ubuntu, через Dante и SSH.

Основные настройки squid

Прежде чем начнется изменение файла конфигурации, соберем немного важной информации, которая касается логики обработки файла конфигурации при выполнении программы. 

В рамках этой инструкции изменение порта и интерфейса нас не интересуют, перейдем к дальнейшей настройке. Для работы Squid используются списки контроля доступа (ACL). Синтаксис списка доступа следующий: acl имя_списка параметр содержимое.

Таким образом строка: acl localnet src 172.16.0.0/12 добавляет список с именем localnet, в котором объявляетсяпул IP-адресов (172.16.0.0-172.31.255.255) для входящих соединений (параметр src).

Введение

В этому мануале рассмотрим установку и настройку прокси-сервера Squid. Инсталляцию установим на операционную систему Ubuntu 20.04 семейства Linux и коротко рассмотрим, как установить на Windows. Также в этой инструкции мы расскажем, как использовать сервер в качестве шлюза для сети.

Firefox

Приведенные ниже шаги одинаковы для Windows, macOS и Linux.

  1. В правом верхнем углу щелкните значок гамбургера, чтобы открыть меню Firefox:

  2. Щелкните ⚙ Preferences ссылку.

  3. Прокрутите вниз до Network Settings раздела и нажмите Settings... кнопку.

  4. Откроется новое окно.

Prerequisites

To complete this guide, you will need:

You will use the domain name your_domain in this tutorial, but you should substitute this with your own domain name, or IP address.

Proto и port

Теперь рассмотрим параметр для протоколов proto и портов port. Его синтаксис: 

Socks через ssh

Для того чтоб поднять SOCKS5 через SSH нужен только доступ к SSH сервера.

Вводим в терминале или SSH клиенте (PuTTY для Windows)

Srcdomain

При появлении задачи с указанием домена источника требуется использовать srcdomain. Синтаксис выглядит следующим образом:

Step 3 — connecting through squid

In order to demonstrate your Squid server, you’ll use a command line program called curl, which is popular for making different types of web requests. In general, if you want to verify whether a given connection should be working in a browser under ideal circumstances, you should always test first with curl.

Url_regex

Параметр url_regex позволяет обработать шаблон регулярного выражения в ссылке.

acl videosAvi url_regex .avi$

Директива, указанная в примере, позволяет добавить в acl-список для обработки видеофайлы формата avi. Очень удобно использовать url_regex с ключом -i , так как он позволяет игнорировать регистр символов при использовании регулярных выражений.

Команды управления процессом

Прежде чем установить прокси-сервер Squid, необходимо ознакомиться с командами управления процессом, а также с директориями важных файлов.

Запуск демона Squid:

sudo systemctl start squid

Статус:

sudo systemctl status squid 

Добавить демона Squid в автозагрузку:

sudo systemctl enable squid

Перезапустить:

sudo systemctl restart squid

Остановить процесс Squid:

sudo systemctl stop squid

Убрать из автозагрузки:

sudo systemctl disable squid

Важные файлы и директории рассмотрены далее в инструкции, основные моменты настройки и проверки будут произведены с их использованием:

  • /etc/squid/squid.conf一 основной файл конфигурации Squid;
  • /var/log/squid/access.log 一 файл доступа;
  • /var/log/squid/cache.log一 лог кэша.

Настройка squid

Squid можно настроить, отредактировав /etc/squid/squid.conf файл. Вы также можете использовать отдельные файлы с параметрами конфигурации, которые можно включить с помощью директивы «include».

Настройка браузера

Сейчас сервис готов к проверке прав пользователей на доступ. Осталось лишь настроить браузер на использование нашего прокси-сервера. Я расскажу об этом на примере Firefox, но практически также можно настроить Chrome.

Для автоматического изменения настроек прокси-сервера в зависимости от ресурса, который вы посещаете, есть замечательное расширение Proxy SwitchyOmega. После установки этого расширения вы можете добавить профиль своего сервера:

Добавление профиля прокси-сервера в расширении Proxy SwitchyOmega
Добавление профиля прокси-сервера

затем ввести адрес, порт

Настройка адреса и порта прокси-сервера в расширении Proxy SwitchyOmega
Настройка адреса и порта прокси-сервера

и данные пользователя

Настройка пользователя и пароля прокси-сервера в расширении Proxy SwitchyOmega
Настройка пользователя и пароля прокси-сервера

После этого вы можете настраивать правила автоматического переключения профилей или просто выбрать ваш прокси-сервер для всех соединений.

На этом настройка Squid на нашем VPS на Ubuntu завершена. Жду ваших вопросов и замечаний в комментариях.

Настройка вашего браузера для использования прокси

Теперь, когда у вас настроен Squid, последний шаг – настроить предпочитаемый вами браузер для его использования.

Настройка межсетевого экрана

Предполагая, что вы используете UFWдля управления своим брандмауэром, вам необходимо открыть порт Squid. Для этого включите профиль «Squid», который включает правила для портов Squid по умолчанию.

sudo ufw allow 'Squid'

Чтобы проверить тип статуса:

sudo ufw status

Результат будет выглядеть примерно так:

Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Squid                      ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
Squid (v6)                 ALLOW       Anywhere (v6)  

Если Squid работает по другому, не по умолчанию порт, к примеру, 8888 вы можете разрешить трафик на этот порт с: sudo ufw allow 8888/tcp .

Настройка пользователей

После этого нужно создать файл, содержащий имена пользователей и хэши их паролей. Для этого можно воспользоваться утилитой htdigest из пакета apache2-utils или следующим скриптом:

Сохраните его в папку /etc/squid под именем genpasswd. Не забудьте изменить права:

А сейчас, с помощью нашего скрипта, создадим файл с единственным, пока, пользователем:

О настройке squid на windows

Произвести установку возможно как на десктопную операционную систему, так и на серверную.

Ограничение скорости

В Squid ограничение скорости настраивается с использованием параметра delay_pools. Логика работы следующая: каждый запрашиваемый объект попадает сначала в пул, потом передается на клиента. У каждого пула 2 параметра: скорость заполнения и размер буфера.

Скорость заполнения пула определяется классом, директива delay_class. 

Возможно несколько вариантов:

  • общее ограничение скорости загрузки всем;
  • общее ограничение скорости загрузки и скорость каждого клиента;
  • общее ограничение скорости загрузки, скорости группы (сети), а также каждого клиента;
  • все ограничения предыдущего класса и ограничение отдельных пользователей 一 для этого потребуется аутентификация пользователей;
  • запросы объединяются по тегам определяемым директивой external_acl.

Директива delay_parameters  назначает параметры пула.

Тип записей delay_parameters с выбранным классом:

  • delay_parameters “номер пула” “общие ограничения для всех”
  • delay_parameters “номер пула” “общие ограничения для всех” “ограничения для хоста”
  • delay_parameters “номер пула” “общие ограничения для всех” “ограничения для подсети” “ограничения для хоста”
  • delay_parameters “номер пула” “общие ограничения для всех” “ограничения для подсети” “ограничения для хоста” “ограничения для пользователя”
  • delay_parameters “номер пула” “тегированные ограничения”

Для отдельных клиентов сети используется директива delay_access. Логика работы следующая:

delay_access номер_пула указание имя_acl

Указание осуществляет 2 операции deny и allow 一 запретить и разрешить. Указание действует на тот пул, которому разрешен, и не действует на запрещенные.

Таким образом, delay_access 1 allow gr_1 оказывает воздействия пула №1 для acl gr_1, 

а строка delay_access 1 deny gr_2 не обрабатывает gr_2.

Пример работы

Укажем количество пулов:

delay_pools 2

Присвоим класс первому пулу:

delay_class 1 1

Присвоим класс второму пулу:

delay_class 2 1

Разрешить доступ к пулу №1 пользователям,состоящим в списке us_groupe_1:

delay_access 1 allow us_groupe_1

Запрещаем всем остальным доступ к этому пулу:

delay_access 1 deny all

Разрешить доступ к пулу №2 пользователям, состоящим в списке us_groupe_2:

delay_access 2 allow us_groupe_2

Запрещаем всем остальным доступ в этот пул:

delay_access 2 deny all

Настраиваем параметры пулов. Первому пулу оставляем настройку без ограничения размера буфера и скорости:

delay_parameters 1 -1/-1

Второму пулу ограничиваем размер буфера и скорость до 64 кБ/с:

delay_parameters 2 8000/8000

Параметры acl-листа

Продолжим настройку и разберемся более детально со списками и указаниями. В acl-листе возможно выставить множество указаний, в том числе с использованием регулярных выражений для более тонкой настройки прокси-сервера. Разберем некоторые из них.

Параметры для тонкой настройки

На данном этапе разобраны основные типы элементов acl. Есть еще некое количество элементов, которые понимает Squid, но в этой инструкции они не описываются, т.к используются для более профессиональной настройки. 

Ниже приведем краткий список, чтобы было понимание, что можно найти и использовать помимо основных.

Правила доступа

Теперь разберем типы правил доступа. Для начала немного о самой логике и принципах работы правил доступа. 

  • Правило состоит из указания deny или allow с указанием имени списка контроля доступа. 
  • В правиле возможно использование одного или нескольких списков контроля доступа. 
  • При использовании нескольких acl в правиле использовано логическое «И». Следует это учитывать при добавлении элементов, т.к правило не сработает если верно только одно значение.
  • Проверка происходит построчно.
  • Отличным вариантом является запретить все, кроме того что разрешено. 

Синтаксис правил доступа следующий:

Предварительная настройка сети

Предварительно настроим сетевые интерфейсы. В используемой для создания мануала системе два физических сетевых интерфейса: eth0 и eth1. Они будут настроены следующим образом: eth0 будем использовать для работы в сети интернет, а eth1 настроим на взаимодействие с локальной сетью.

sudo nano /etc/netplan/02-networkd.yaml

И установим следующие настройки:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
    eth1:
      dhcp4: false
      addresses : [192.168.0.1/24]
      nameservers:
          addresses: [8.8.8.8]

Yaml требует строгого соблюдения пробелов, отступов и табуляции. Очень важно это учитывать при составлении файла конфигурации. Для интерфейса eth0 установлено получение адреса по dhcp, интерфейсу eth1 назначен статический IP-адрес. Проверим конфигурацию на валидность командой:

sudo netplan --debug generate

При наличии ошибок, необходимо исправить. Если все верно, применяем конфигурацию командой:

sudo netplan --debug apply

Применить конфигурацию без вывода ошибок можно так:

sudo netplan apply

Установка socks сервера

Я знаю 2 SOCKS сервера 3proxy и Dante. У себя использовал Dante Server его настройку и опишу.

Установить Dante сервер можно с помощью apt-get, по умолчанию устанавливается старая версия (v.1.1). Ниже будут настройки для старой и новой (v.1.4) версий.

Установка squid

Теперь перейдем непосредственно к установке. Отправим в терминал команду:

sudo apt -y install squid -y

Вывод процесса установки:

Установка squid на ubuntu

Пакет Squid включен в репозитории Ubuntu 18.04 по умолчанию. Чтобы установить его, введите следующие команды от имени пользователя sudo :

sudo apt updatesudo apt install squid

После завершения установки служба Squid запустится автоматически.


Чтобы убедиться, что установка прошла успешно и служба Squid запущена, введите следующую команду, которая распечатает статус службы:

sudo systemctl status squid

Установка и настройка squid

Устанавливаем squid следующей командой:

Установка новой версии dante server

sudo apt-get update
sudo apt-get install software-properties-common python-software-properties
sudo add-apt-repository ppa:dajhorn/dante
sudo apt-get update
sudo apt-get install dante-server

После этих действий Dante Server будет установлен, но ругнется и не сможет запуститься, видимо дефолтные настройки имеют ошибку.

Далее нужно отредактировать файл настроек

sudo nano /etc/danted.conf

Приведя его к такому виду

Установка старой версии dante server

sudo apt-get update
sudo apt-get install dante-server

Далее нужно отредактировать файл настроек

sudo nano /etc/danted.conf

Приведя его к такому виду

Заключение

В этой инструкции мы разобрали основы установки и настройки шлюза сети. А также подробно разобрали установку и настройку прокси-сервера Squid.

Conclusion

In this tutorial, you learned to deploy a popular, open-source API endpoint for proxying traffic with little to no overhead. Many applications have built-in proxy support (often at the OS level) going back decades, making this proxy stack highly reusable.

Next, you may want to learn how to deploy Dante, a SOCKS proxy which can run alongside Squid for proxying different types of web traffic.

Because one of the most common use cases for proxy servers is proxying traffic to and from different global regions, you may want to review how to use Ansible to automate server deployments next, in case you find yourself wanting to duplicate this configuration in other data centers.

Похожее:  Oauth2 apple signin on php laravel - Stack Overflow

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *