Интернет-пространство становится все более ограниченным, и многие пользователи сталкиваются с блокировкой популярных ресурсов, таких как YouTube и Instagram.
Это не типичная копипаст статья (ну вроде), тут мы рассмотрели как ру трафик пускать вне сервера, как получить сертификат и защитить сервер, удели немного внимания :)
В современном мире безопасность и анонимность в интернете становятся все более важными. Один из лучших способов защитить свои данные и обойти блокировки любых сервисов (в том числе Ютуб) — это создание собственного VPN-сервера.
В этой статье рассмотрен способ обхода цензуры путем создания своего VPN, используя протокол VLESS XTLS Reality, который позволяет получить доступ к сайтам, блокирующим пользователей из Российской Федерации. На данный момент vless-xtls-reality не может быть обнаружен с помощью DPI (глубокой проверки пакетов) даже в таких странах, как Китай. Однако следует учитывать, что регуляторы могут применить другие методы блокировки. Для повышения надежности обратите внимание на следующие советы:
Что нельзя делать:
1. Не используйте VPS для протоколов, которые могут быть обнаружены. Например, такие как WireGuard, OpenVPN, Shadowsocks и другие. Некоторые провайдеры блокируют VPS, на которых ранее использовались подобные протоколы.
2. Не заходите в рунет через VPS. Лучше осуществлять доступ к российским сайтам напрямую, минуя прокси. В крайнем случае, используйте цепочку Я->VPS->Warp->Рунет. Это предотвратит подозрения со стороны цензоров, так как двойное пересечение границы (туда и обратно) в короткий промежуток времени может вызвать подозрения и блокировку прокси.
3. Ограничьте доступ к прокси небольшим кругом пользователей. Идеально — до 5-10 человек. В Китае аномальный трафик к серверу от большого числа пользователей может привести к блокировке сервера, и российские провайдеры могут перенять этот опыт.
Соблюдая эти правила, доступ к серверу будет трудно заблокировать. Однако для дополнительной безопасности рекомендуется подготовить “План Б” — проксирование трафика через CDN (сеть доставки контента).
CloudFlare Warp
Warp — это публичная сеть прокси, предоставляемая CloudFlare, использующая протокол WireGuard. В России подключение к Warp невозможно, но с зарубежного VPS — вполне реально. В этом сценарии Warp выполняет две функции:
1. Обход западной цензуры — некоторые западные сайты могут блокировать доступ с вашего VPS, но с помощью Warp можно обойти эти ограничения.
2. Дополнительная защита от блокировок — проксирование запросов от VPS в российский интернет, чтобы не компрометировать VPS.
Первое что вам будет нужно - VPS сервер. Говоря о том, что нам там предлагают под наши цели — это виртуальные VPS сервера, расположенные в странах европы, России и США. С реальной скоростью соединения с сервером примерно 700-800 мбит/с и безлимитным трафиком (что очень важно для VPN сервера) . Лично я буду использовать хостера Aeza - дешевый и стабильный, с нормальными характеристиками сервера, он полностью подходит под наши требования.
1. Пошаговая инструкция: настройка VPS
1. Зарегистрируйтесь на сайте хостинг-провайдера и перейдите в личный кабинет.
2. Выберите виртуальный сервер с тарифом Shared, минимальной конфигурацией и операционной системой Ubuntu 22.04.
3. Отключите бэкапы и оплатите аренду сервера.
4. Подождите активации сервера, после чего получите данные для авторизации.
Подключение и настройка сервера
1. Подключитесь к серверу по SSH, используя команду ssh root@<IP вашего сервера>.
2. Обновите систему:
apt update && apt full-upgrade -y
3. Перезагрузите сервер: reboot
4. Установите необходимые пакеты:
apt install docker.io docker-compose git curl bash openssl nano -y
5. Установите панель управления 3X-UI версии 2.0.2:
Внимание: я делал инструкцию для версии 2.0.2, если вы хотите сделать все в точности по инструкции, используйте эту же версию. В новых поменялся интерфейс и логика работы с WARP, я же создавал инструкцию и делал скриншоты именно с версии v2.0.2, она стабильная и самодостаточная.
Склонируйте репозиторий и установите 3x-ui v2.0.2:
git clone https://github.com/MHSanaei/3x-ui.git
cd 3x-ui
nano docker-compose.yml
откроется текстовый редактор:
в 6 строке замените "latest" на "v2.0.2"
было: image: ghcr.io/mhsanaei/3x-ui:latest
стало: image: ghcr.io/mhsanaei/3x-ui:v2.0.2
чтобы сохранится, нажмите: CTRL+X, Y, ENTER
docker-compose up -d
6. Установите Warp, используя скрипт:
Удалите старую версию:
warp u
Установите новую версию:
bash <(curl -sSL https://raw.githubusercontent.com/hamid-gh98/x-ui-scripts/main/install_warp_proxy.sh)
Во время установки скрипт спросит у вас цифру, нужно ответить 40000.
7. Сгенерируйте самоподписанный TLS-сертификат и скопируйте его в панель 3X-UI:
openssl req -x509 -newkey rsa:4096 -nodes -sha256 -keyout private.key -out public.key -days 3650 -subj "/CN=APP"
docker cp private.key 3x-ui:private.key
docker cp public.key 3x-ui:public.key
Пока что остановимся с настройкой сервера, вернемся к этому еще раз позже.
2. Настройка панели 3X-UI
1. Откройте панель управления в браузере по адресу http://<IP вашего сервера>:2053/.
2. Войдите в систему, используя логин admin и пароль admin.
3. В разделе “Panel Settings” укажите следующие параметры:
Panel Port: (любое случайное число от 1000 до 65535, кроме 40000 - оно уже занято варпом, в инструкции я буду использовать 54321 - но вы придумайте своё). Далее везде вместо порта 54321 вставляйте своё число.
Panel Certificate Public Key Path: /public.key
Panel Certificate Private Key Path: /private.key
Panel URL Root Path: секретная строка для доступа к панели, которая начинается и заканчивается "/". Я использую /mysecreturl/, но вы придумайте свою. Далее везде вместо строки /mysecreturl/ используйте свою.
Нажмите кнопку “Save”, а затем “Restart Panel”. После перезапуска панели обновите страницу, изменив порт в адресной строке на новый.
4. В разделе “Security Settings” замените стандартные логин и пароль на новые.
Теперь панель будет доступна по HTTPS-адресу вида https://<IP вашего сервера>:<ваш порт>/<ваш путь>/
Настройка Xray
1. Перейдите в раздел “Xray Settings” и включите следующие опции:
IPv4 Configs -> Use IPv4 for Google.WARP Configs -> Route OpenAI (ChatGPT) через WARP.
Сохраните настройки и перезагрузите Xray.
2. В разделе “Routing Rules” настройте правила маршрутизации, чтобы направить весь российский трафик через WARP:
Отредактируйте строку “geosite:openai”, добавив geosite:category-gov-ru,regexp:.*\.ru$,geosite:openai
Добавьте новое правило: IP: geoip:ru, Outbound tag: WARP.
В итоге благодаря этому мы видим следующую картину - РУ трафик идет через WARP, а зарубежный через сервер.
Сохраните настройки и перезагрузите Xray.
Маскировка под сайт
Найдите сайт для маскировки. Не советую использовать малоизвестные и мелкие сайты, в моменте они могут перестать работать должным образом, сам недавно с этим столкнулся. Пробуйте yadndex.ru, google.com, cloudflare.com и подобное. Проверьте время отклика сайта с сервера, найдите сайт м наименьшим откликом и используйте его.
Проверяем командой ping <адрес сайта>, например ping cloudflare.com.
Настройте VLESS:
В разделе (Inbound) - (Add inbound) надо заполнить указанные на скриншоте поля.
Самое важное:
- Remark и Email - любые строки (не обязательно адрес эл.почты), ни на что не влияют.
- Listening IP - укажите ваш IP
- Port - строго 443, чтобы маскироваться под обычный https-сайт.
- Только после выбора Security: Reality появится возможность выбора Flow: xtls-rprx-vision
- uTLS - именно Chrome, чтобы маскироваться под самый популярный браузер
- Dest, Server Names - указать сайт-донор (хотя можно оставить yahoo.com )
- Кнопка (Get new cert) генерирует ключи.
- (Create) завершает создание.
Добавление пользователя.
Нажимаем на три точки и Add Client.
Тут вводим Email - это название профиля (необязательно, можно оставить то, что изначально). И выбираем Flow - xtls-rprx-vision.
Нажимаем Add Client, идем дальше.
Получите ключ VLESS:
Жмем на QR код в строке с вашим профилем.
Открывается QR, нажатием на него копируется ключ vless, выглядит следующим образом:
vless://e034d537-b028-41f0-9e53-5f0838ea8b3b@111.111.111.111:443?type=tcp&security=reality&pbk=D0Bfsax3Ble2KiqDrOu3_qMJw7qVKyrnWgpvDTVkb3M&fp=chrome&sni=nltimes.nl&sid=64edf3b5&spx=%2F&flow=xtls-rprx-vision#NiceVPN-%D0%94%D0%BB%D1%8F%20%D1%81%D1%82%D0%B0%D1
Сохраните его в удобном месте, нужен для подключения.
3. Настройка защиты сервера:
3.1. Установка и настройка UFW, обязательно сделать:
Идем обратно в cmd, подключаемся по ssh.
Убедитесь, что находитесь не в репозитории 3x-ui, просто введите cd и нажмите Enter.
Для защиты сервера установите и настройте брандмауэр UFW:
sudo apt install ufw -y
Откройте только необходимые порты:
sudo ufw allow 22/tcp # SSH, оставляем 22
sudo ufw allow 54321/tcp # Порт панели 3x-ui, меняем на ваш, который указывали выше
sudo ufw allow 443/tcp # Порт для VLESS/XTLS Reality, оставляем 443
Включите UFW:
sudo ufw enable
3.2. Настройка Fail2ban, делаем по желанию, но советую сделать, 5 минут по времени.
Установка
Если до этого вы не обновляли базы данных apt, то установку можно начать с этого:
sudo apt update
sudo apt upgrade
После обновления apt можно переходить к установке Fail2ban:
sudo apt install fail2ban
Теперь активируем Fail2ban, чтобы она автоматически запускалась после перезагрузки сервера:
sudo systemctl enable fail2ban
Перед запуском Fail2ban в работу осталось настроить параметры фильтрации, по которым будет происходить блокировка IP.
Настройка
По умолчанию Fail2ban использует правила блокировки, указанные в файле jail.conf. Это системный файл, который обновляется вместе с программой, поэтому использовать его в качестве основного файла с параметрами блокировки не рекомендуется.
Мы создадим собственный конфигурационный файл jail.local. Система приоритетов в Fail2ban настроена таким образом, что в качестве основных применяются правила, указанные в jail.local.
Структура конфигурационного файла
Конфигурационный файл Fail2ban состоит из так называемых jail-ов — отдельных блоков правил для разных служб. В одном файле jail.local можно не только указать все правила для всех сетевых служб сервера, но и управлять их включением и выключением.
Структура всех jail-ов одинакова:
- В первой строке в квадратных скобках указывают название службы, к которой будет применяться следующий ниже набор правил. В нашем случае это [sshd].
- Далее определяют параметр enabled, отвечающий за включение или отключение данного jail-а. Мы установим его true, чтобы наш jail был активен.
- После этого указывают условия блокировки: максимальное количество попыток подключения (maxretry), время, за которое эти попытки были произведены (findtime), и время, на которое нужно запретить доступ с этого IP (bantime).
- В последней части jail-а указывают IP-адреса, которые считаются надёжными (ignoreip), например, IP-адрес вашего домашнего компьютера.
Мы рекомендуем добавить в строку ignoreip домашний адрес вашего компьютера, чтобы в случае особо жёстких настроек фильтрации программа не заблокировала вам доступ к серверу — например, после нескольких неудачных попыток ввода пароля.
Создадим конфигурационный файл:
sudo vim /etc/fail2ban/jail.local
Текст конфигурационного файла будет примерно таким:
[sshd] enabled = true
maxretry = 6 findtime = 1h
bantime = 1d
ignoreip = 127.0.0.1/8 23.34.45.56
Этот набор условий означает, что IP-адрес, с которого было произведено 6 неудачных попыток SSH-подключения за последний час (3600 секунд), будет заблокирован на одни сутки (86400 секунд). Не будут блокироваться IP-адреса в диапазоне от 127.0.0.1 до 127.0.0.8 и адрес 23.34.45.56 (указываем свое).
Время для параметров findtime и bantime можно указывать не только в секундах, но и в минутах, часах, днях и даже неделях. Для этого необходимо сразу после численного значения параметра указать соответствующую букву (m, h, d, w).
Получение уведомлений
После строки с указанием надёжных IP можно добавить параметр, отвечающий за отправку на e-mail уведомлений о заблокированных IP.
Добавьте в конфигурационный файл строку:
destemail=admin@example.com
Теперь на указанную здесь почту будут приходить уведомления о каждом заблокированном программой IP-адресе.
Чтобы получать более детальную информацию о заблокированных IP, на сервер можно установить службу whois:
sudo apt install whois
В этом случае в письма о блокировке будут добавлены более подробные сведения, получаемые службой whois.
Будьте внимательны при настройке уведомлений!
Fail2ban отправляет отдельным письмом сведения о каждом заблокированном IP, а в случае брутфорс-атаки количество IP, с которых проводится подключение, может достигать нескольких сотен.
Начало работы
После создания конфигурационного файла, содержащего все необходимые правила, можно запускать Fail2ban и наблюдать за его работой.
Команда для запуска программы:
sudo systemctl start fail2ban
Команда для вывода на экран сведений о работе jail-а, отвечающего за службу sshd:
sudo fail2ban-client status sshd
Если в данный момент сервер не подвергается атаке, сразу после установки и запуска программы на экране будет следующая информация:
Status for the jail: sshd
|- Filter
| |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
Здесь приведены сведения о попытках подключения к серверу и о заблокированных IP-адресах.
Если вы решите изменить настройки, указанные в конфигурационном файле jail.local, не забудьте перезапустить Fail2ban, чтобы изменения вступили в силу:
sudo systemctl restart fail2ban
Теперь ты можешь настроить свой VPN, обойти блокировку Ютуба и других сервисов.
Спасибо, что дочитал эту статью, оцени ее пожалуйста лайком и комментарием!)
Удачной настройки.