Простой прокси север

По мотивам этой записи.

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

Функции которые мы посмотрим:
— HTTPS. Т.е. зашифрованное подключение к прокси серверу
— CONNECT метод. Т.е. поддержка запросов к HTTPS сайту
— Basic аутентификация

Функции которые доступны:
— Защита от активных проверок
— Аутентификация через htpasswd файл
— Аутентификация сертификатом

Автор dumbproxy Владислав Ярмак.

Скачиваем бинарный файл в папку /usr/local/bin

wget -O dumbproxy https://github.com/Snawoot/dumbproxy/releases/download/v1.4.0/dumbproxy.linux-amd64

Назначаем права на запуск файла под root
Это не безопасно

chmod a+x /usr/local/bin/dumbproxy
chmod u+s /usr/local/bin/dumbproxy

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

/usr/local/bin/dumbproxy -bind-address :443 -auth 'static://?username=user&password=password' -cert /etc/letsencrypt/live/example.org/fullchain.pem -key /etc/letsencrypt/live/example.org/privkey.pem

Вывод должен показать Starting proxy server…
Если ошибка CRITICAL Server terminated with a reason: listen tcp :443: bind: permission denied. Значит бинарный файл запуска без прав рута. Существует вариант использовать capabilities для этого того, чтобы не использовать учетную запись root для запуска. Это более безопасно.
Используются сертификаты Let’s Encrypt. Его настройка рассмотрена здесь.

Проверим работу прокси с использование curl

curl --proxy https://proxy.example.org:443 http://wttr.in/ --proxy-user user:password --insecure --proxy-insecure --include --verbose

Вывод должен показать прогноз погоды
Примечание к команде

  • proxy.example.org:443 — адрес:порт прокси сервера
  • wttr.in — сайт к которому обращается запрос
  • user:password — логин:пароль прокси сервера. Задается в команде запуска dumbproxy

Создадим systemd серврис, для запуска прокси автоматически
Создадим файл /usr/lib/systemd/system/dumbproxy.service

[Unit]
Description=Dumbiest HTTP proxy ever
After=network.target network-online.target nss-lookup.target

[Service]
User=nobody
ExecStart=/usr/local/bin/dumbproxy -bind-address :443 -auth 'static://?username=user&password=password' -cert /etc/letsencrypt/live/example.org/fullchain.pem -key /etc/letsencrypt/live/example.org/privkey.pem
Restart=always
KillMode=process
TimeoutStartSec=5
TimeoutStopSec=5

[Install]
WantedBy=multi-user.target

Перезагрузим сервис

systemctl daemon-reload
systemctl enable dumbproxy
systemctl restart dumbproxy

Логи сервиса можно посмотреть командой

journalctl -u dumbproxy

Использовать прокси в приложении
Для настройки приложения на использование прокси сервера под HTTPS, оно должно поддерживать автоконфигурацию файлом PAC. Самый простой пример в поле адреса на скрипт автоконфигурации указать содержимое
data:,function FindProxyForURL(u, h){return "HTTPS proxy.example.org:443";}
Это команда отправит все запросы на прокси сервер. Если прокси настроен на аутентификацию, то при первом подключении браузер выдаст запрос на логин и пароль.
Настройка Firefox была описана здесь.
Больше настроек доступно в источнике

Источник 1
Источник 2

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s