Поднимаем приватный socks/proxy-сервер на базе 3Proxy для работы Telegram

Поднимаем приватный socks/proxy-сервер на базе 3Proxy для работы Telegram

Темная Сторона

Так как у Telegram нет никаких вменяемых альтернатив, единственное, что нам остается — это обходить блокировки. В качестве средств обхода блокировки многие пользователи начали использовать публичные VPN/прокси сервисы и телеграм боты. РКН, соответственно, пообещал начать (уже начал) блокировать их. Получится заблокировать или нет — вопрос открытый.

В любом случае, вы всегда сможете поднять свой собственный VPN/proxy сервер и ни от кого не зависеть. Сегодня мы как раз говорим о том, как поднять свой собственный proxy-сервер для максимально безопасного использования Telegram.


Telegram уже заблокирован в России, поэтому будем использовать любой зарубежный сервер, подойдет самая простая VDS в минимальной конфигурации.

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

На данном этапе выполняем настройку сервера для безопасного соединения.

Отключаем SElinux:

sed -i 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
# reboot

Изменяем порт подключения к сервису SSH:

sed -i -r "s/#Port 22/Port 54997/" /etc/ssh/sshd_config

Указываем работу только по IPv4 протоколу на определенном адресе:

sed -i -r "s/#AddressFamily any/AddressFamily inet/" /etc/ssh/sshd_config
sed -i -r "s/#ListenAddress 0.0.0.0/ListenAddress $SERVER_IP_ADDR$/" /etc/ssh/sshd_config

Где $SERVER_IP_ADDR$ — реальный IP-адрес сервера.

Отключаем IPv6 протокол:

cat << EOT > /etc/sysctl.d/01-ipv6.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOT 

Также:

sysctl -p /etc/sysctl.d/01-ipv6.conf

Принудительно устанавливаем вторую версию протокола SSH

В SSH2 используются мощные алгоритмы шифрования, кроме того поддерживается возможность обнаружения умышленного искажения данных. (Протокол SSH, версии 2 - AES-128, AES-192, AES-256, blowfish, CAST-128, ArcFour).

sed -i -r -e "s/#Protocol 2/Protocol 2/" /etc/ssh/sshd_config

Ограничиваем количество неудачных попыток входа:

sed -i -r "s/#MaxAuthTries 6/MaxAuthTries 2/" /etc/ssh/sshd_config

Перезагружаем сервис SSH и проверяем:

systemctl restart sshd

Также:

# lsof -i :54997 -P -n
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    8396 root    3u  IPv4  58553      0t0  TCP 195.209.58.112:54997 (LISTEN)

Добавляем правила на файрвол для нового порта, а также убираем дефолт:

firewall-cmd --permanent --zone=public --add-port=54997/tcp
firewall-cmd --permanent --zone=public --remove-service=ssh
firewall-cmd --reload

Шаг 2: Отключение логирования

Догадайтесь, для чего.

Отключаем хранение истории:

unset HISTFILE
echo 'unset HISTFILE' >> /etc/bashrc
rm -f ~/.bash_history

Отключаем сервисы syslog/rsyslog и аудит системы:

systemctl stop rsyslog && systemctl disable rsyslog

С сервисом Auditd придется немного пошаманить, поскольку просто так его отключить нельзя.

sed -i -r "s/RefuseManualStop=yes/RefuseManualStop=no/" /usr/lib/systemd/system/auditd.service
# reboot
auditctl -D
systemctl stop auditd &&  systemctl disable auditd

Удаляем объекты директорий:

unlink /var/log/messages && ln -s /dev/null /var/log/messages
unlink /var/log/secure && ln -s /dev/null /var/log/secure
unlink /var/log/wtmp && ln -s /dev/null /var/log/wtmp
unlink /var/log/lastlog && ln -s /dev/null /var/log/lastlog
unlink /var/log/audit/audit.log && ln -s /dev/null /var/log/audit/audit.log
unlink /var/log/btmp && ln -s /dev/null /var/log/btmp
unlink /var/log/maillog && ln -s /dev/null /var/log/maillog

Шаг 3: Установка 3proxy

Установим необходимые пакеты, которые понадобятся в процессе сборки:

yum groupinstall "Development tools" -y

Клонируем исходные файлы с git и компилируем:

git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy/
sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h # Определяем анонимность сервера
make -f Makefile.Linux
mkdir -p /usr/local/etc/3proxy/bin
touch /usr/local/etc/3proxy/3proxy.pid
cp ./src/3proxy /usr/local/etc/3proxy/bin
cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy
cp ./cfg/3proxy.cfg.sample /usr/local/etc/3proxy/3proxy.cfg
ln -s /usr/local/etc/3proxy/3proxy.cfg /etc/3proxy.cfg
chmod +x /etc/init.d/3proxy

Шаг 4: Настройка 3proxy

Выполняем настройку нашего прокси-сервера к конфигурационном файле nano /etc/3proxy.cfg

#!/usr/local/etc/3proxy/bin
daemon
pidfile /usr/local/etc/3proxy/3proxy.pid
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
users roman:CL:roman
users "test:CR:$1$kf3$4c2AOGcRWsc74kMNZyRzi0"
#include /usr/local/etc/3proxy/users.conf <<-- Можем подключить файл с логинами/паролям.
log /dev/null
auth strong
auth strong
flush
allow test,roman
maxconn 64
socks -p51105 -n -a -u2
proxy -p12732 -n -a
dnspr
setgid 65534
setuid 65534

Список пользователей задается с помощью команды users.

С помощью одной команды можно задать несколько пользователей, можно давать несколько команд usersUSERDESC — описание пользователя. 

Описание пользователя состоит из трех полей разделенных двоеточием — имени, типа пароля и пароля. Например:

users admin:CL:mysecret test:CL:yourpassword test1:CL:password1
users "test:CR:b771$b8745ed1295840eca15e55feb9e"
users test3:NT:BD7DFBF29A93F93C63CB84790DA00E63

Обратите внимание на двойные кавычки - они необходимы для второго пользователя, т.к. в его пароле встречается знак $, который для файла 3proxy.cfgозначает включение другого файла.

Поддерживаются следующие типы паролей:

  • тип не указан — использовать системную авторизацию для данного пользователя (пока не реализовано).
  • CL — пароль в открытом тексте
  • CR — пароль в формате crypt() (только MD5)
  • NT — пароль в формате NT в шестнадцатеричной кодировке

NT и crypt пароли могут быть использованы для импорта учетных записей из Windows/Samba и Unix соответственно (для Windows можно использовать утилиты семейства pwdump). Учетные записи удобно хранить в отдельном файле (в таком случае можно хранить их построчно в формате, типичном для файлов паролей).

Создать пароль можем командой:

openssl passwd -1 -salt xyz yourpass

Сохраняем конфигурационный файл и заупускаем сервис:

service 3proxy start

Добавляем в автозапуск:

chkconfig 3proxy on

Шаг 5: Настройка файрвола

# Открываем порт для socks-прокси:
firewall-cmd --permanent --zone=public --add-port=51105/tcp
# Открываем порт для http-прокси:
firewall-cmd --permanent --zone=public --add-port=12732/tcp 
# Блокируем ICMP трафик для того, чтоб наш сервер не отвечал на пинги:
firewall-cmd --zone=public --add-icmp-block=echo-reply --permanent
firewall-cmd --zone=public --add-icmp-block=echo-request --permanent
firewall-cmd --reload

Шаг 6: Настройка Telegram на работу через socks

Также можно использовать socks-прокси на все подключение.

Проверяем:

Troubleshooting

ERR_SOCKS_CONNECTION_FAILED в Google Chrome

Google Chrome не работает через SOCKS с авторизацией. Пока не нашел как исправить, но придумаю костыль какой-нибудь.

Too many authentication failures for username

Используйте параметр IdentitiesOnly=yes при подключении по SSH

$ ssh -o IdentitiesOnly=yes root@195.209.58.112 -p 54997
root@195.209.58.112's password:
[root@mytelegramproxy ~]#

Источник.

HeadGram - первая автоматизированная теневая биржа/доска объявлений в Telegram. Найди, предложи, купи или продай то, что нужно и заработай!

Черный Рынок - название говорит само за себя. Оригинальная одежда и техника за половину стоимости.

Гражданская Оборона - самооборона от А до Я, обзоры травматического и огнестрельного оружия, самозащита в физическом и юридическом планах.

Дурман - наркотики и их медицинское употребление, увлекательные трип-репорты, виды веществ, их свойства и последствия употребления.

привет, я Марк - мой личный блог, будни злого кардера-алкоголика. Спасибо за внимание!


Report Page