Простой прокси север
По мотивам этой записи.
Очень простой прокси сервер. Один бинарный файл. Вся конфигурация передается в момент запуска команды.
Функции которые мы посмотрим:
- HTTPS. Т.е. зашифрованное подключение к прокси серверу
CONNECTметод. Т.е. поддержка запросов к HTTPS сайтуBasicаутентификация
Функции которые доступны:
- Защита от активных проверок
- Аутентификация через htpasswd файл
- Аутентификация сертификатом
Автор dumbproxy Владислав Ярмак.
-
Скачиваем бинарный файл в папку
/usr/local/binwget -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 была описана здесь.
Больше настроек доступно в источнике