Простой прокси север
По мотивам этой записи.
Очень простой прокси сервер. Один бинарный файл. Вся конфигурация передается в момент запуска команды.
Функции которые мы посмотрим:
- 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 была описана здесь.
Больше настроек доступно в источнике