Обновлено 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 можно просмотреть заголовки отправленные вашим прокси-сервером. Вот так выглядят заголовки по умолчанию.
На изображении видно что прокси-сервер передал свое название и версию. Но ничего указывающего на реальный ip-адрес клиента нет. Адрес 93.170.169.118 - это ip-адрес моего сайта и по совместительству прокси-сервера, поэтому я его не прячу.
Чтобы не передавать версию сервера и тем самым не указывать на использование прокси, нужно раскомментировать DisableViaHeader и выставить значение Yes.
DisableViaHeader Yes
Мы добились высокого уровня анонимности (элитный прокси) заголовок Via исчез и ничего не указывает на использование прокси-сервера.
По умолчанию присутствует включенная директива ViaProxyName "tinyproxy". Если ее отключить (закомментировать), то прокси сервер вместе со своей версией будет передавать еще и название вашего хоста.
XTinyproxy - еще одна из важнейших директив. По умолчанию она отключена и включать ее не стоит, она должна быть или закомментирована или выставлена в значение No. Именно она передает ваш реальный ip-адрес!
#XTinyproxy Yes или так: XTinyproxy No
Вот что бывает если включить XTinyproxy.
С анонимностью разобрались, в итоге получили следующий минимальный конфиг, который я рекомендую использовать.
# Пользователь и группа 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
На этом все. Спасибо за внимание.