Поднимаем приватный 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.
С помощью одной команды можно задать несколько пользователей, можно давать несколько команд users. USERDESC — описание пользователя.
Описание пользователя состоит из трех полей разделенных двоеточием — имени, типа пароля и пароля. Например:
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. Найди, предложи, купи или продай то, что нужно и заработай!
Черный Рынок - название говорит само за себя. Оригинальная одежда и техника за половину стоимости.
Гражданская Оборона - самооборона от А до Я, обзоры травматического и огнестрельного оружия, самозащита в физическом и юридическом планах.
Дурман - наркотики и их медицинское употребление, увлекательные трип-репорты, виды веществ, их свойства и последствия употребления.
привет, я Марк - мой личный блог, будни злого кардера-алкоголика. Спасибо за внимание!