Tinyproxy это такой маленький http/https прокси-сервер, на мой взгляд, очень простой в использовании и конфигурировании, вполне подходящий для несложных задач пропускания http(s) трафика. Например в офисе или дома. Лично я использую его, чтоб можно было посещать статистику и личный кабинет собственного провайдера в обход VPN.
Если у вас есть специальный network namespace для прокси, перед установкой сервера настраиваем его (добавляем нужные файлы hosts
и resolv.conf
, как это описано здесь Копия)
Рестартируем систему (или сетевой менеджер/демон, тут уж зависит от вашей ОС).
Для Sclackware можно скачать пакет с исходниками с помощью sbopkg
, взять готовый и откомпилированный здесь (Для Slackware 12-14.2), или собрать из исходников на GitHub и готовый пакет установить с помощью installpkg
.
1. Создаем группу для proxy-сервера, например proxy
:
groupadd proxy
2. Создаем отдельного пользователя для запуска прокси-сервера:
Можно сделать это с помощью скрипта-обертки adduser
над программой useradd
.
— На первый вопрос вводим имя пользователя, например, provproxy
.
— Далее пропускаем (нажимаем enter)
— В ответ на initial group, вводим имя ранее созданной группы для прокси-сервера, в данном случае proxy
(в вашем — ту группу, которую создали вы).
— Далее, на вопрос о дополнительных группах, нельзя устанавливать что-либо, нажимаем Enter
— Home directory нужна, там будет лежать PID-файл, логи (если нужно) и конфигурационный файл. По умолчанию директория совпадает с именем пользователя и располагается в подкаталоге /home
.
— Shell должна быть установлена строго в /bin/false
, поскольку это не интерактивный пользователь. Если скрипт ответил вам: - Warning: /bin/false is not in /etc/shells (potential problem using FTP)
Do you wish to change the shell ? (Y/n)
То отвечаем n
, а потом в /etc/shells
добавляем строчку
/bin/false
— Expiry date пропускаем (Enter)
— Далее пропускаем всю User Information
— На вопрос о пароле придумываем что-нибудь чтоб прошло.
Далее правим /etc/shadow
, находим строчку с именем пользователя и удаляем все, что между первым и вторым двоеточием. Было:
provproxy:$5$S8/tp/ap2wF/K$qaYnfHuR8opsWO0WwTaXCjiHjmge7mWuH5WwEd5Kn70:17888:0:99
Стало:
provproxy::17888:0:99
Права на каталог надо установить в 700 (полный доступ для пользователя
provproxy
):
chmod 700 /home/provproxy
Можно не пользоваться интерактивным скриптом, а сделать все с помощью базовых команд:
1. Добавить пользователя
useradd -g proxy -d /home/provproxy -s /bin/false provproxy
где:
-g proxy
группа пользователя (ранее созданная proxy
)
-d /home/provproxy
домашний каталог пользователя
-s /bin/false
— оболочка для пользователя. Обычно здесь прописывается /bin/sh
, /bin/bash
для интерактивных пользователей, или /bin/false
для неинтерактивных, что нам и надо в данном случае.
Строчка /bin/false
должна быть в файле /etc/shells
— если ее нет, дописать.
2. Создаем домашний каталог:
mkdir /home/provproxy
3. Меняем владельца каталога на пользователя
provproxy
chown provproxy:proxy /home/provproxy
4. Меняем права доступа на каталог:
chmod 700 /home/provproxy
Был подробно описан в этой заметке: Запускающий скрипт для tinyproxy Копия
Сам скрипт:
— На PasteBin
— На GitHub
— Скачать с Mega.nz
Поскольку сам инициализационный скрипт описан довольно полно, то я остановлюсь лишь на двух важных моментах.
PID-файл: в скрипте необходимо правильно указать путь к PID-файлу, но об этом поговорим ниже. У меня PID-файл создается в домашнем каталоге пользователя provproxy
. Местоположение PID-файла задается в этой строке скрипта. Если надо, не забудьте исправить на свое значение:
PIDFILE="/home/provproxy/tinyproxy.pid"
Команда запуска прокси-сервера:
По умолчанию там просто указан путь к исполняемому файлу tinyproxy
:
TINYPROXYCMD="/usr/sbin/tinyproxy"
Но я хочу эту команду немного подправить.
Запуск сервера при старте системы.
При старте системы все обычно запускается от root
‘а, а нам не надо совершенно, чтоб под root
‘ом крутились всякие там сервера. Не зря же мы отдельного пользователя делали. Дополняем команду:
TINYPROXYCMD="sudo -u provproxy /usr/sbin/tinyproxy"
В таком виде, скрипт, запускаемый при старте из-под root
‘а вызовет tinyproxy
от имени нужного нам пользователя. Справедливости ради, надо заметить, что tinyproxy
, как любой уважающий себя сервер, умеет сам себе понижать права до определенного пользователя, указанного в файле конфигурации. Но на этом остановимся ниже. На мой взгляд, одно другому не мешает, зато так виднее и жестко задано, от какого пользователя стартовать.
Альтернативный файл конфигурации.
По умолчанию tinyproxy
ищет свой файл конфигурации в /etc/tinyproxy.conf
, но можно задать альтернативный, в домашнем каталоге пользователя. Делается это путем добавления ключа -с
и пути к файлу. Объединю этот вариант с предыдущим:
TINYPROXYCMD="sudo -u provproxy /usr/sbin/tinyproxy -c /home/provproxy/tinyproxy.conf"
Раз уж началось с альтернативного файла конфигурации, так давайте его сделаем (от root
). Копируем файл /etc/tinyproxy.conf
в /home/provproxy/tinyproxy.conf
cp /etc/tinyproxy.conf /home/provproxy/tinyproxy.conf
Далее устанавливаем ему владельца (можно перейти в директорию /home/provproxy
перед этим, я перешел — пути будут неполные):
chown provproxy:proxy tinyproxy.conf
И права — пользователю provproxy
на tinyproxy.conf
нужны права только на чтение, ничего он не пишет в конфигурационный файл, и тем более не пытается исполнить.
chmod 400 tinyproxy.conf
root
‘а и настраиваем параметры прокси-сервера.
Подробно описывается конфингурационный файл
Прописываем нужный адрес прокси в браузере:
Проверяем соединение:
Вот тут не показывается, что используется прокси, потому что прокси настроен верно — с отключением via
и других заголовков, передающих IP-адрес.