Tinyproxy - установка и настройка прокси-сервера.

Обновлено 06.11.2018 — настройка для Ubuntu 18.04 (есть небольшие отличия).

Статья описывает установку и настройку прокси-сервера Tinyproxy для операционной системы Ubuntu Server 16.04.

Tinyproxy - HTTP/HTTPS прокси-сервер имеющий небольшой размер и потребляющий мало системных ресурсов, что позволяет ему работать на слабых конфигурациях без заметного влияния на производительность. А метод CONNECT позволяет передавать защищенные HTTPS-соединения.

Я полагаю что у вас уже есть VPS/VDS сервер расположенный за рубежом или вы его вот-вот заведете. Если у вас совсем туго с финансами, то есть вариант за 1 евро в месяц, но с лимитированным в 2 ТБ месячным объемом трафика (ссылку не даю, ибо там нет партнерки, а за бесплатно рекламу не делаю, кто гуглит - тот всегда найдет).

Установка Tinyproxy

Чтобы установить Tinyproxy достаточно выполнить следующую команду.

apt-get install tinyproxy -y

Настройка Tinyproxy

Чтобы настроить прокси-сервер нужно отредактировать файл tinyproxy.conf, который располагается в каталоге /etc.

nano /etc/tinyproxy.conf

Стоит обратить внимание на следующие директивы.

  • Port - порт на котором работает прокси-сервер. По умолчанию используется 8888 порт. Можно изменить на любой другой.
  • ConnectPort - данная директива определяет использование метода CONNECT позволяющего передавать зашифрованные HTTPS-соединения. По умолчанию Tinyproxy настроен на прослушивание двух портов по методу CONNECT - 443 и 563. Если выставить значение данных директив в 0 или закомментировать их, то Tinyproxy не сможет подключаться к HTTPS сайтам.
  • Listen - по умолчанию закомментирована/отключена. Listen используется для указания сетевого интерфейса, с использованием которого будет работать прокси-сервер, если на машине несколько сетевых интерфейсов и каждый из них имеет свой ip-адрес.
  • Allow - разрешает доступ к прокси-серверу. По умолчанию разрешены подключения на только localhost (Allow 127.0.0.1). Чтобы разрешить подключение к серверу нужно добавить свой ip-адрес/подсеть или ip-адрес/подсеть того человека, которому вы хотите дать доступ на сервер. Если вы хотите разрешить доступ всем подряд, то нужно добавить Allow 0.0.0.0/0 (категорически не стоит этого делать).
  • Timeout - определяет временной отрезок, по истечении которого неактивное соединение будет закрыто. Значение по умолчанию равно 600 секунд, можно уменьшить до 300 (если у вас хороший канал).
  • MaxClients - определяет максимальное количество одновременно подключенных клиентов. Если сервер используется в частных целях (не публичный), то количество можно уменьшить, например до 20.
  • MinSpareServers - минимальное количество процессов. Если количество процессов меньше минимального значения, то будут созданы новые. По умолчанию 5.
  • MaxSpareServers - максимальное количество процессов. Если количество процессов больше максимального, то лишние будут закрыты. По умолчанию 20.
  • StartServers - количество одновременно запускаемых процессов при загрузке. Значение не должно быть меньше чем MinSpareServers.

Остальные настройки оставляем со значениями по умолчанию. Tinyproxy и по дефолту неплохо работает. Настройки отвечающие за анонимность рассмотрим отдельно.

Обновлено 06.11.2018 — настройка для Ubuntu 18.04 (есть небольшие отличия).

Анонимность Tinyproxy

По уровню анонимности HTTP прокси разделяются на несколько видов:

  • Прозрачные - передают в HTTP заголовках реальный ip-адрес клиента и указывают на факт использования прокси-сервера (отправляется заголовок что при подключении используется прокси-сервер). Анонимности нет.
  • Анонимные - указывают на факт использования прокси-сервера, но не раскрывают реальный ip-адрес клиента. Средний уровень анонимности.
  • Элитные - не передают реального ip-адреса и не указывают на использование прокси. Высокий уровень анонимности.

Уровень анонимности определяется передачей специфических HTTP заголовков при каждом подключении к конечному узлу. По умолчанию Tinyproxy передает заголовок указывающий название и версию сервера, но не передает реального ip-адреса клиента, то есть обеспечивает средний уровень анонимности.

С помощью сервиса FoxTools можно просмотреть заголовки отправленные вашим прокси-сервером. Вот так выглядят заголовки по умолчанию.

tinyproxy

На изображении видно что прокси-сервер передал свое название и версию. Но ничего указывающего на реальный ip-адрес клиента нет. Адрес 93.170.169.118 - это ip-адрес моего сайта и по совместительству прокси-сервера, поэтому я его не прячу.

Чтобы не передавать версию сервера и тем самым не указывать на использование прокси, нужно раскомментировать DisableViaHeader и выставить значение Yes.

DisableViaHeader Yes

Мы добились высокого уровня анонимности (элитный прокси) заголовок Via исчез и ничего не указывает на использование прокси-сервера.

tinyproxy

По умолчанию присутствует включенная директива ViaProxyName "tinyproxy". Если ее отключить (закомментировать), то прокси сервер вместе со своей версией будет передавать еще и название вашего хоста.

XTinyproxy - еще одна из важнейших директив. По умолчанию она отключена и включать ее не стоит, она должна быть или закомментирована или выставлена в значение No. Именно она передает ваш реальный ip-адрес!

#XTinyproxy Yes

или так:

XTinyproxy No

Вот что бывает если включить XTinyproxy.

tinyproxy

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

# Пользователь и группа
User nobody
Group nogroup

# Порт (НЕ ЗАБУДЬТЕ ОТКРЫТЬ ЕГО В ФАЕРВОЛЕ!!!)
Port 8888

# Таймаут
Timeout 300

# Дефолтный html-файл ошибок
DefaultErrorFile "/usr/share/tinyproxy/default.html"

# html stat файл
StatFile "/usr/share/tinyproxy/stats.html"

# Лог-файл
Logfile "/var/log/tinyproxy/tinyproxy.log"

# Уровень логгирования
LogLevel Info

# Pid-файл
PidFile "/var/run/tinyproxy/tinyproxy.pid"

# Максимальное количество одновременно подключенных клиентов.
MaxClients 20

# Минимальное и максимальное количество рабочих процессов.
MinSpareServers 5
MaxSpareServers 20

# Количество процессов одновременно запускающихся при старте сервера 
StartServers 10

# Количество соединений на один процесс, 0 по дефолту
MaxRequestsPerChild 0

# Разрешаем локальные соединения
Allow 127.0.0.1

# Разрешаем соединения от клиента (ваш ip-адрес или подсеть)
Allow XXX.XXX.XXX.XXX

# Разрешаем соединения по методу CONNECT для работы с HTTPS сайтами
ConnectPort 443
ConnectPort 563

# Имя прокси заголовка
ViaProxyName "tinyproxy"

# Отключаем Via-заголовки передающие версию сервера
DisableViaHeader Yes

# Отключаем передачу реального ip-адреса клиента
XTinyproxy No

Для применения настроек перезапустим Tinyproxy.

systemctl restart tinyproxy

Чтобы сервер не разжирался оперативной памятью будем перезапускать его каждые сутки ровно в 23:50. Добавим задание в cron.

crontab -e

Добавить в файл, сохранить и выйти.

# Перезапуск tinyproxy в 23:50
50 23 * * * systemctl restart tinyproxy

На этом все. Спасибо за внимание.

Ответить:

Please enter your comment!
Please enter your name here