Добрый день. Есть большая вероятность, что к осени 2023 года в России будут заблокированы наиболее популярные VPN протоколы на основе WireGuard, IPSek, OpenVPN. Поэтому есть смысл уже сейчас смотреть в сторону решений от китайских товарищей, которые были созданы для обхода великого китайского фаервола.
Статья написана как рерайт статьи от автора на хабре — ссылка на статью источник.
Особая благодарность Слава, за ссылку на статью 🙂
Почему важно использовать VPN в 2023 году?
Потому-то информация о нас давно уже стала товаров и способом манипуляций, я думаю что каждый человек имеет право переписываться без товарища Майора за спиной. VPN — это в первую очередь безопасность т.к. весь трафик шифруется. Говорить что VPN — это для совершения преступлений, это верх двуличия.
Почему VLESS, ShadowSocks и 3X-UI?
Как одни из наиболее защищенных протоколов на данный момент. VLESS, например отлично мимикрирует под обычный https трафик.
Панель управления VPN на 3X-UI устанавливается и настраивается очень легко через Docker. По мне — это одно из лучших решений сейчас на рынке, как для личного, так и коммерческого использования.
Почему статья такая большая?
Статью необязательно читать полностью, вы можете брать только ту часть, которую хотите реализовать прямо сейчас — итерацию.
Например, при установке с нуля, вам важны части статьи про рекомендации сервера, установка 3X-UI, настройка 3X-UI и программы для VPN. Это быстрая часть. Настройка безопасности сервера — на ваше усмотрение, к ней вы можете вернуться позже.
Содержание статьи
Хостинг под VPN — 4 варианта
Вы естественно можете использовать любой удобный для Вас хостинг, я предлагаю 4 варианта, которые чем-то хороши под наши нужны. В спойлерах я описал свой короткий анализ.
Обратите внимание, что ссылки на регистрацию - реферальные. Так вы можете отблагодарить меня за материал, при этом не понеся никаких затрат. Все честно!
Установка 3X-UI
Обновляем ПО:
apt update && apt upgrade -y
Установка Docker:
bash <(curl -sSL https://get.docker.com)
Клонируем репотизиторий 3X-UI:
git clone https://github.com/MHSanaei/3x-ui.git
cd 3x-ui
Запускаем скрипт 3X-UI:
docker compose up -d
Настройка панели управления
В браузере переходим по адрecу http://Ip-адрес-вашего-сервера:2053/panel/ логин и пароль — admin.
Panel Setting
Panel Port — меняем, например 16545
Panel URL Root Path — меняем, например /hghgj/
Делаем перезапуск панели
Panel Setting > Security Settings
Меняем логин-пароль admin — admin, например на jhfjhsjh — kfkdhr389
Получаем SSL на панель
Расскажу от 3 способах получить SSL, первый, встроен в скрипт 3X-UI. Поэтому начнем с него.
Через X-UI:
x-ui
Выбираем пункт 15 и введем наш домен, к которому прилинкован IP сервера.
Переходим в панель 3X-UI по адресу yourdomain.com:2053(или тот порт, который вы указали при установке). В разделе Panel Settings прописываем пути к сертификатам SSL:
/etc/letsencrypt/live/yourdomain.com/fullchain.pem
/etc/letsencrypt/live/yourdomain.com/privkey.pem
Пример:
Через Cloudflare. Прилинковываем наш домен к Cloudflare и выпускаем сертификат на 15 лет через их сервис
Через Acme:
apt install cron && apt install socat
curl https://get.acme.sh | sh -s [email protected]
mkdir -p /var/lib/marzban/certs/
DOMAIN и SUBDOMAIN1.DOMAIN — пишем наши домены и суб-домены. Которые мы прилинковали заранее к нашему IP. Если суб-домены не нужны, удаляем их
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt --issue --standalone \
-d DOMAIN \
--key-file /var/lib/marzban/certs/key.pem \
--fullchain-file /var/lib/marzban/certs/fullchain.pem
Добавляем наши полученные сертификаты в панель 3X-UI, вместе с доменом.
Создаем VPN пользователя
Shadowsocks
Переходим на вкладку Inbounds > Add Inbound
Remark — любое рандомное название
Protocol — shadowsocks
Нажимаем Create
Теперь можно отсканировать QR код и пользоваться VPN на Shadowsocks
VLESS + Reality
Remark — любое рандомное название
Protocol — vless
Port — 443
Ниже, где Transparent Proxy ставим галочку на Reality
uTLS — Chrome
Dest — microsoft.com:443
Server Names — microsoft.com,www.microsoft.com
И нажать кнопку Get New Key > Create
Безопасность сервера
Защитим сервер от взлома через брутфорс:
apt install fail2ban -y && apt install ufw -y && apt install nano -y
touch /etc/fail2ban/jail.local && nano /etc/fail2ban/jail.local
Откроется редактор, вставим в него код:
[sshd]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
logpath = /var/log/auth.log
findtime = 600
maxretry = 3
bantime = 43200
Нажимаем ctlr + x, далее Y и enter, чтобы сохранить.
Отключаем двухсторонний пинг
Чтобы улучшить нашу маскировку, отключим пинг
nano /etc/ufw/before.rules
Меняем концовку следующего выражения с ACCEPT на DROP:
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
Нажимаем ctlr + x, далее y + enter, чтобы сохранить.
Включаем фаервол
Чтобы включить фаервол, нужно заранее выписать все используемые порты на сервере, для этого мы установим netstat и посмотрим какие порты нужно открыть:
apt install net-tools
netstat -ntlp | grep LISTEN
Смотрите порты, которые идут после 0.0.0.0:порт или IP_адрес вашего_сервера:порт, например:
- 0.0.0.0:993
- 76.20.7.12:53
- :::22
Их необходимо открыть в UFW или через панель управления вашим сервером/хостингом. Смотря как это реализовано у вас. Ниже пример для UFW.
ufw allow 17753/tcp && ufw allow 443 && ufw allow 22918 && ufw allow 53 && ufw allow 62789 && ufw allow 22/tcp && ufw enable
Подтверждаем через Y + Enter
Напоследок очистимся и перезагрузимся:
apt update && apt upgrade -y && apt autoclean -y && apt clean -y && apt autoremove -y && reboot
Обновление Docker 3X-UI
Чтобы обновить ПО, выполните через консоль. За эту информацию моя благодарность Иван Цой 🙂
cd 3x-ui && docker compose pull 3x-ui && docker compose up -d
Удаление 3X-UI
Чтобы удалить образ Docker, нужно узнать его id и остановить. В примере ниже, id контейнера у нас будет d6f0a3616f48.
Узнаем id:
docker container ls
Останавливаем и удаляем:
docker stop d6f0a3616f48
docker rmi -f d6f0a3616f48
docker container rm -f d6f0a3616f48
Программы для VPN
Буду рекомендовать только одну программу, которая есть для всех платформа (Android, iOS, Windows, MacOS, Linux). Это Hiddify.
А как можно оптимизировать создание новых юзеров VLESS + Reality? Имеется ввиду через консоль. Не заходя при этом в админ-панель. Что-то я не нашёл инфы
Если хотите через консоль заводить user, то кажется вам подойдет эта статья (ссылка)
Дмитрий, подскажите а можно как сделать исключения для определенных сайтов типа Авито, госуслуги и т.д. что бы не отключать VPN для входа на подобные ресурсы?
Постараюсь ответить на этот вопрос, в ближайшее время
Как настроить, чтобы на российские сервера и сайты доступ шел напрямую, без прокси?
https://habr.com/ru/articles/770400/
А как входить в админку по https?
Отличный вопрос! Я написал в статье, как получить сертификат для домена, далее, нужно в настройке панели указать домен, путь к сертификату и сменить порт (кроме пустого или 443 т.к. его мы используем). Обновлю статью в ближайшие дни, но в целом, я описал процесс
Я прописывал сертификаты в файле docker-compose.yml, но они почему то не поттягиваются,когда завершается сборка пишет что значения не верны.
P.S.Спасибо за обратную связь,у вас хороший блог)
Привет, я с cертификатами тоже мучился, в итоге поставил без докера 3X-UI
Отличный вариант 🙂
Заходим в docker-compose.yml и добавляем:
— /etc/letsencrypt/live/domain.org/fullchain.pem:/root/cert/fullchain.pem
— /etc/letsencrypt/live/domain.org/privkey.pem:/root/cert/privkey.pem
чтобы всё заработало нужно скопировать 2 ключа из пути выше, в папку /root/3x-ui/cert/ командой:
cp /etc/letsencrypt/live/proxy.domain.ru/fullchain.pem /root/3x-ui/cert/
cp /etc/letsencrypt/live/proxy.domain.ru/privkey.pem /root/3x-ui/cert/
подробности здесь:
https://openode.ru/topic/529-3x-ui-xray-shadowsocks-kak-zamena-wireguard-docker-edition/
Спасибо! Добавлю в статью
Уже какой раз вижу ссылку на openode, а прочитать там можно только за деньги…
Действительно, это максимально странная монетизация. Знания должны быть доступны, а не за деньги.
Дмитрий, привет, как сам? используешь эту панель? добавь еще ссылку для яблочных, а то у тебя на платную прогу https://apps.apple.com/us/app/foxray/id6448898396
Спасибо, я добавил
Спасибо за работу!
Дополнительные рекомендации:
ufw allow 443 comment 'Allow VLESS proxy connections'
Очень ценный комментарий, спасибо большое!!
Подскажите, как обновить 3x-ui в Docker до версии 1.7.9? После обновления настроенные подключения не слетят?
Может кому-то пригодится. Настройки сохраняются
cd 3x-ui
docker compose pull 3x-ui
docker compose up -d
Спасибо, добавил в статью!
Подскажите, а как сделать так чтобы проксировался трафик только к заблокированным сайтам реестра без настройки на клиенте андроид?
Вот честно не знаю. Посмотрел настройки панели, не нашел
Подскажите пожалуйста, почему обрыв соединения может быть периодами? Через FoxRay на iPhone подрубать, но часто достаточно вырубает…
Не очень понятно, что за обрывы. Попробуйте другую программу, например Hiddify (next)
Да просто отрубается VPN) Спасибо, попробую.