- PVSM.RU - https://www.pvsm.ru -

„Я унаследовал эту неразбериху,
начиная с бессовестных Zello; LinkedIn
и кончая «всеми прочими» на платформе Telegram
в моём мире.А потом икнув,
чиновник торопливо и громко добавил:
но я наведу (здесь в IT) порядок“
(...).
Дуров, справедливо полагает, что это авторитарные государства должны его, шифропанка, бояться, а роскомнадзоры и золотые щиты со своим DPI-фильтрами его не очень-то беспокоят»
(Политическая техника)
Моя техническая политика — проще, я могу тут расписать свои размышления по беспечным блокировкам в рунете, но полагаю, что прогрессивные граждане Modern Russian и юзеры Хабра ощутили на своей шкуре непрофессионализм действующей власти, поэтому ограничусь единственной фразой: наша техническая политика — «Цифровое Сопротивление». «обеспечение родных и близких устойчивым каналом связи».
Поднимать наш TelegramProxy будем на «бесплатных/персональных» мощностях Amazon-ec2: t2.micro. Я использовал эту [1] машину.
Окей, развернули свой бесплатный сервер, переходим на официальный сайт dockerhub [2] и скачиваем docker-контейнер.
Не нужно искать какой-то образ, файл, или волшебную кнопку — «их нет», вся магия делается в CLI:
$ docker pull telegrammessenger/proxy #образ скачан.
Но перед «этим» установите docker для CLI:
sudo apt-get install docker.io docker
Далее, в официальной документации MtprotoProxyTelegram нам предлагают сделать примерно следующее, делаем:
$ sudo su && docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest #запускаем наш контейнер «mtproto-proxy».
После этой команды в выводе терминала появится HEX-строка, но она нам не интересна.
Пишем в CLI:
$ docker logs mtproto-proxy
И получаем нужные данные:

В выводе данного лога нам показывают (замазал):
А) наш ip сервера (внешний ip сервера);
Б) и случайный секрет — случайная строка в HEX.
Перед тем, как зарегать наш MtproProxy, нужно настроить главный файрволл над iptables (как бы вы не перенаправляли трафик на данной VPC, он будет непослушный, так как самый главный файрволл в Amazon-EC2 находится в web-интерфейсе и имеет более высокий приоритет над iptables).
Заходим в «консоль [3] Amazon-EC2» в Security Group и открываем входящий 443 порт (логичная маскировка трафика [4] на первое время).

Берём из лога наши данные «ip и секрет» и идем в мессенджер Telegram, находим официальный MTProxy Admin Bot (@MTProxybot) и регистрируем наш MtproProxy: запускаем команду [/newproxy] и вводим [наш_ip:443], а потом и наш [секрет/HEX].
Если накосячите при вводе данных, бот будет сердиться и слать вас на…
Если две строчки заполните без ошибок, то получите одобрение и рабочую ссылку, на ваш действующий MtprotoProxyTelegram, которым вы можете поделиться с кем угодно.

Также через данного бота можно добавить Ваш спонсоркий канал (но не чат), где Вы будете ваши взгляды навязывать пользователям, которые подключились к вашему серверу, а можно не «спамить», и не беспокоить своих будучи-потенциальных клиентов, не показывая канал в закрепленном списке мессенджера.
Еще пару слов о боте, там можно запрашивать статистику, но «тоже бублик». Видимо «статистика» доступна, когда за тобой Махачкала «толпа нахлебников».
А сколько мы можем подключить юзеров на наш сервер? И вообще, кто/что там? Чего? И сколько?
Смотрим, что там по официальной документации… Ага, вот, сделать так:
$ curl http://localhost:2398/stats или вот так $ docker exec mtproto-proxy curl http://localhost:2398/stats # и нам выдадут статистику прямо в CLI.
«Держи карман шире» По предложенным командам мы всегда будем получать подобную ошибку:
«curl: (7) Failed to connect to localhost port 2398: В соединении отказано»
Прокси наш будет работать. Но! Бублик, а не статистику мы получим.
Можно заняться делами для красноглазиков: проверить
$ netstat -an | grep 2398 и...
Сначала я подумал, что это очередной косяк за разработчиками Telegram (и я до сих пор так думаю), потом нашёл временное неплохое решение: полирнуть напильником Docker-Контейнер.
Позже на глаза попалась инфа:
«Мы заблокировали на своих серверах часть публичных прокси, воспользовавшись базами проекта firehol. Этот проект мониторит списки с публичными прокси и делает базы с ними.
С этого момента (то есть уже почти двое суток) не было заблокировано ни одного IP-адреса нашего российского прокси.
3. Рассказываем, как сделать почти неуязвимый для Роскомнадзора прокси и делимся скриптом блокировки публичных прокси.
— Обновите docker-контейнер (или демон) MTProto proxy до последней версии: РКН вычисляет старые версии по порту статистики, который биндился на 0.0.0.0 и однозначно себя идентифицировал для всего интернета. А лучше — откройте нужны порты с помощью iptables, а остальные — закройте (помните, что в случае с docker-контейнером следует использовать правило FORWARD).
— Роскомнадзор давно научился дампить трафик: они видят обращения внутри HTTP- и SOCKS5-прокси, а так же видят старую версию обфускации MTProto proxy.
Когда клиенты некоторых провайдеров, у которых установлены такие дампилки, обращаются к Telegram через такие прокси, то РКН видит такие обращения и сразу блокируют эти прокси. Тоже самое касается MTProto proxy со старой обфускацией.
Решение: раздавайте клиентам, которые подключаются к прокси, secret только с dd в начале (не нужно указывать дополнительные буквы dd в настройках самого mtproto proxy). Это включит версию обфускации, которую не умеют определять дампилки.
И никаких HTTP- и SOCKS5-прокси.
— Подгон, с помощью которого каждый владелец телеграм-прокси, который регулярно банится РКН, может полностью (или почти полностью) прекратить блокировки (а заодно и убедиться в том, что РКН лжёт).
Скрипт, который банит публичные прокси и небольшой мануал к нему».
→ Источник [5]
Наш прокси прозападный, ни каких проблем/блокировок за весенние и прохладные летние деньки я не встретил, на творческую задачку это тоже не тянуло, поэтому потерей темпа не занимался и префикс dd* к ключу не добавлял.
Мануал «получение статистики/мониторинг» по официальной инструкции MtprotoProxyTelegram — нерабочий/устаревший, придется чинить docker-образ.
Чиним.
Контейнер у нас всё еще запущен:
$ docker stop mtproto-proxy #останавливаем наш запущенный docker-контейнер и запускаем новый образ с пропущенным флагом статистики
$ docker run --net=host --name=mtproto-proxy2 -d -p443:443 -v proxy-config:/data -e SECRET=ваш_предыдущий_секрет_hex telegrammessenger/proxy:latest
Проверим статистику:
$ curl http://localhost:2398/stats
curl: (7) Failed to connect to 0.0.0.0 port 2398: В соединении отказано
Статистика всё еще недоступна .!..
Узнаем идентификатор docker-контейнера:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f423c209cfdc telegrammessenger/proxy:latest "/bin/sh -c '/bin/ba…" About an hour ago Up About a minute 0.0.0.0:443->443/tcp mtproto-proxy2
Идём со своим уставом внутрь docker-контейнера:
$ sudo docker exec -it f423c209cfdc /bin/bash
$ apt-get update
$ apt-get install nano
$ nano -$ run.sh
И в самой последней строке скрипта «run.sh» добавляем пропущенный флаг:
«--http-stats»
«exec /usr/local/bin/mtproto-proxy -p 2398 -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD»
Добавляете "--http-stats", что- то вроде этого должно получиться:
«exec /usr/local/bin/mtproto-proxy -p 2398 --http-stats -H 443 -M "$WORKERS" -C 60000 --aes-pwd /etc/telegram/hello-explorers-how-are-you-doing -u root $CONFIG --allow-skip-d h --nat-info "$INTERNAL_IP:$IP" $SECRET_CMD $TAG_CMD»
Ctrl+o/Ctrl+x/Ctrl+d (сохранить/выход из nano/выход из контейнера).
Перезапускаем наш docker-контейнер:
$ docker restart mtproto-proxy2
Всё, теперь по команде:
$ curl http://localhost:2398/stats #получаем объемную статистику

В статистике много «мусора» (на скрине 1/3 её часть), создаём alias:
$ echo "alias telega='curl localhost:2398/stats | grep -e total_special -e load_average_total'" >> .bashrc && bash
Получаем то, ради чего полировали docker-контейнер: кол-во подключений и нагрузку:
$ telega

Docker-контейнер работает, статистика крутится.
Как бы ты не был крут Стюарт Редман даже ты оставляешь след от го.на на своих трусах. Работающий Docker-образ оставляет немаленький след.
Расписывать преимущества и недостатки docker-образов не имеет смысла, docker-контейнер — это мини-виртуальная машина, потребляющая ресурсы менее, чем «реальная» виртуальная машина, например VirtualBox, но потребляющая.
1) Запущен со статистикой docker-образ или без неё, два клиента резвятся или десять — ресурсы утилизируются ~одинаково: 75% от всей производительности CPU t2.micro.
2) Смотрим мониторинг VPC-сервера:

Из графика утилизации ресурсов на VPC видим, что docker-контейнер потребляет постоянно ~7,5% от общей макс. производительности CPU и 28 мая был остановлен мною намеренно/временно (Примечание — на сервере так же крутятся OpenVPN & pptp).
Почему 10% постоянной загрузки CPU — это предел для данного сервера?
Потому что есть ограничения со стороны Amazon EC2 и исчисляются они в кредитах:

1 кредит CPU = 1 ЦП, работающему со 100% загрузкой в течение одной минуты, а у нас кредитов 6 (то есть в пиках 100%-я утилизация CPU возможна в течении 6 минут, а дальше мощность CPU снизится). Другие комбинации: например, 1 кредит CPU = 1 ЦП, работающему с 50%-й нагрузкой в течение двух минут (то есть мы можем исполльзовать CPU с 50%-й нагрузкой в течении 12 минут), или, пример, постоянной 10%-й нагрузкой CPU в течение всего времени и д.п
Перепечатка своей статьи.
Автор: ne555
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/325494
Ссылки в тексте:
[1] эту: https://aws.amazon.com/marketplace/pp/Kali-Linux-Kali-Linux/B01M26MMTT
[2] dockerhub: https://hub.docker.com/r/telegrammessenger/proxy/
[3] консоль: https://signin.aws.amazon.com/signin?redirect_uri=https%3A%2F%2Fconsole.aws.amazon.com%2Fconsole%2Fhome%3Fstate%3DhashArgs%2523%26isauthcode%3Dtrue&client_id=arn%3Aaws%3Aiam%3A%3A015428540659%3Auser%2Fhomepage&forceMobileApp=0
[4] трафика: https://ru.wikipedia.org/wiki/HTTPS
[5] Источник: https://t.me/unkn0wnerror/1154
[6] Источник: https://habr.com/ru/post/461837/?utm_source=habrahabr&utm_medium=rss&utm_campaign=461837
Нажмите здесь для печати.