Skip to content

Прокси который шифрует трафик самыми криптостойкими протоколами, и применяет механизмы маскировки sni

Notifications You must be signed in to change notification settings

cat228608/ChaCha20-Proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ Stealth Tunnel: Ваш личный защищенный и замаскированный туннель

Stealth Tunnel — это простое, но мощное Proxy-решение, созданное для обеспечения приватности и обхода блокировок. Его ключевая особенность — маскировка трафика под обычный HTTPS (TLS), что делает его крайне сложным для обнаружения и блокировки системами глубокого анализа пакетов (DPI).

Проект использует современную асинхронную архитектуру на Python (asyncio) для высокой производительности и минимального потребления ресурсов.

!!!ПРОЕКТ БЫЛ СОЗДАН В ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ, ВСЯ ОТВЕТСТВЕННОСТЬ ЗА ВАШИ ДЕЙСТВИЯ ТОЛЬКО НА ВАС!!!


✨ Ключевые особенности

  • Маскировка под TLS (HTTPS): Весь трафик упаковывается в стандартный TLS 1.3, неотличимый для провайдера от посещения обычного сайта.
  • Стойкое шифрование: Используется двойной слой защиты: внешний TLS и внутренний слой с аутентифицированным шифрованием ChaCha20-Poly1305.
  • Защита от DPI: Применение поддельного SNI и случайного паддинга пакетов делает поведенческий анализ трафика практически невозможным.
  • Активная защита от атак: Встроенный механизм Fail2Ban автоматически блокирует IP-адреса атакующих, которые пытаются сканировать сервер или подобрать ключ.
  • Мультиплексирование: Поддержка множества одновременных TCP-соединений через один VPN-туннель.
  • Кроссплатформенность: Работает на любой ОС, где есть Python 3 (Linux, Windows, macOS).
  • Авто-переподключение: Клиент автоматически восстанавливает соединение в случае обрыва.
  • Простота настройки: Всего один файл конфигурации config.json.

🏗️ Принцип работы

Система состоит из двух частей: сервера и клиента.

  1. Клиент запускает на вашем компьютере локальный SOCKS5-прокси.
  2. Вы настраиваете ваши приложения (браузер, Telegram и т.д.) на использование этого прокси.
  3. Когда приложение отправляет запрос, VPN-клиент перехватывает его, шифрует собственным протоколом и отправляет на VPN-сервер внутри защищенного TLS-соединения.
  4. Сервер принимает трафик, расшифровывает его и перенаправляет в интернет к целевому ресурсу.
  5. Ответ от ресурса проходит тот же путь в обратном порядке.
[Ваши приложения] <--> [SOCKS5 прокси] <--> [VPN Клиент] <== (Интернет) ==> [VPN Сервер] <--> [Целевой сайт]
 (localhost)         (localhost)         (Зашифрованный туннель)

🚀 Пошаговая настройка

Шаг 0: Предварительные требования

Убедитесь, что на вашем сервере (VDS/VPS на Linux) и клиенте установлены:

  • Python 3.8+
  • pip для установки библиотек
  • На сервере: openssl (для генерации сертификата) и iptables (для защиты).

Шаг 1: Установка зависимостей

Клонируйте репозиторий и на сервере, и на клиенте установите необходимую крипто-библиотеку:

git clone https://github.com/cat228608/ChaCha20-Proxy.git
cd ChaCha20-Proxy
pip install pycryptodome

Шаг 2: Настройка сервера

Все следующие действия выполняются на вашем удаленном сервере.

1. Генерация главного ключа

Этот ключ является основой всей криптографии. Он должен быть уникальным и храниться в строжайшем секрете.

python3 key_generator.py

Эта команда создаст файл secret.key.

От передачи ключа зависит безопасность вашего трафика!

2. Генерация самоподписанного SSL-сертификата

Чтобы маскироваться под HTTPS, нам нужен SSL-сертификат. Мы сгенерируем самоподписанный сертификат, который будет выглядеть как легитимный.

💡 Совет: В поле CN (Common Name) укажите домен, под который вы маскируетесь (например, тот, что указан в fake_sni_hostname в конфиге).

Выполните команду:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout key.pem -out cert.pem \
-subj "/C=US/ST=California/L=San Francisco/O=Cloudflare, Inc./CN=www.cloudflare.com"

Эта команда создаст два файла: cert.pem (публичный сертификат) и key.pem (приватный ключ).

3. Настройка config.json

Отредактируйте файл config.json на сервере. Для сервера важны только последние два параметра:

{
  "server_ip": "1.2.3.4", 
  "server_port": 443,
  "local_proxy_host": "127.0.0.1",
  "local_proxy_port": 1080,
  "fake_sni_hostname": "sun6-21.userapi.com",
  "secret_key_file": "secret.key",
  "cert_file": "cert.pem",
  "key_file": "key.pem"
}

Шаг 3: Настройка клиента

Теперь переходим к настройке вашего локального компьютера (клиента).

1. Копирование секретного ключа

⚠️ ВАЖНО: Это самый ответственный шаг. Вам нужно безопасно скопировать файл secret.key с сервера на клиентский компьютер. Используйте scp, sftp или просто скопируйте его содержимое через защищенный SSH-туннель. Никогда не передавайте ключ по открытым каналам!

Поместите файл secret.key в ту же папку, где лежит vpn_client.py.

2. Настройка config.json

Отредактируйте файл config.json на клиенте. Здесь нужно указать реальные данные вашего сервера.

{
  "server_ip": "108.165.164.12",  // <-- IP-адрес вашего сервера
  "server_port": 443,              // <-- Порт, который слушает сервер (443 - стандартный для HTTPS)
  "local_proxy_host": "127.0.0.1", // <-- Оставить как есть
  "local_proxy_port": 1080,        // <-- Порт SOCKS5 прокси на вашем ПК
  "fake_sni_hostname": "sun6-21.userapi.com", // <-- Домен, под который маскируемся. Должен совпадать на клиенте и сервере!
  "secret_key_file": "secret.key", // <-- Путь к вашему секретному ключу
  "cert_file": "cert.pem",         // Эти файлы клиенту не нужны но в конфиге их оставтье
  "key_file": "key.pem"            //
}

▶️ Запуск

Запуск сервера

⚠️ Запускайте сервер с правами sudo, так как ему нужен доступ к iptables для блокировки атакующих.

sudo python3 vpn_server.py

Вы должны увидеть в логах, что сервер запущен.

Запуск клиента

python3 vpn_client.py

Вы увидите сообщение о запуске SOCKS5-прокси и попытке подключения к серверу.


⚙️ Использование SOCKS5-прокси

После успешного запуска клиента, весь трафик можно направлять через него.

Адрес прокси: 127.0.0.1 Порт: 1080 (или тот, что указан в local_proxy_port) Тип: SOCKS5

Пример для Firefox:

  1. НастройкиОсновныеПараметры сетиНастроить...
  2. Выберите Ручная настройка прокси.
  3. В поле SOCKS-узел введите 127.0.0.1, порт 1080.
  4. Установите галочку SOCKS5.
  5. Обязательно установите галочку Проксировать DNS при использовании SOCKS v5.
  6. Сохраните настройки.

Теперь весь трафик Firefox будет идти через ваш VPN. Аналогично настраиваются и другие программы (Telegram, системные настройки сети и т.д.).


🔐 Аспекты безопасности

  • Ключ secret.key — это ваш мастер-ключ. Любой, у кого он есть, сможет подключиться к вашему VPN и расшифровать трафик. Храните его надежно.
  • Fail2Ban: Сервер отслеживает попытки подключения с неверным ключом. После 10 неудачных попыток IP-адрес атакующего будет навсегда заблокирован на уровне файрвола (iptables).
  • Самоподписанный сертификат: Поскольку сертификат не является доверенным, клиент игнорирует его проверку. Это безопасно, так как аутентификация происходит за счет вашего секретного ключа.

About

Прокси который шифрует трафик самыми криптостойкими протоколами, и применяет механизмы маскировки sni

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages