D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
В этой статье я расскажу вам о пошаговом процессе создания безопасного и анонимного сервера Matrix с помощью Tor, Caddy, Privoxy и Synapse. Эта настройка не только обеспечивает зашифрованные коммуникации, но и использует сеть Tor, чтобы сделать ваш сервер полностью анонимным и неотслеживаемым. Моя цель - создать руководство, которому смогут следовать даже пользователи с ограниченным опытом работы с Linux, что позволит им создать свой собственный частный и безопасный сервер обмена сообщениями.
Если вы хотите узнать, как создать систему, устойчивую к вторжениям, слежке и цензуре, эта статья - именно то, что вам нужно. В следующих разделах я дам подробные инструкции по установке необходимых инструментов, настройке параметров и подготовке сервера к работе. Давайте начнем!
Прежде всего, что такое Matrix?
Matrix - это открытый децентрализованный коммуникационный протокол, созданный на основе федеративной архитектуры для безопасного, масштабируемого и прозрачного удовлетворения современных коммуникационных потребностей. Он специально создан для обмена текстовыми сообщениями, голосовых и видеозвонков, обмена файлами и даже взаимодействия между устройствами и IoT. Однако его отличительные особенности заключаются в децентрализованной архитектуре и сквозном шифровании Матрица использует событийную модель, то есть каждое сообщение, изменение состояния или файл хранится как событие в истории комнаты. Эти события организуются в структуру DAG (Directed Acyclic Graph), что позволяет отслеживать состояние комнаты на всех подключенных серверах. Каждый сервер Matrix может управляться независимо, при этом синхронизируя информацию о комнате с другими серверами в сети. Такая конструкция не только повышает устойчивость к цензуре, но и устраняет зависимость от центральной точки управления.
- Функции безопасности matrix :
1 .End-to-End Encryption:
Для шифрования сообщений в Matrix используются протоколы Olm и Megolm. Olm используется для чатов один на один, а Megolm - для групповых чатов. Эти протоколы гарантируют, что расшифровать сообщения смогут только отправитель и адресаты.
2. Аутентификация и управление ключами:
В Matrix используются передовые механизмы управления ключами шифрования, в том числе Cross-Signing, который позволяет проверить устройство и предотвратить атаки типа «человек посередине» (MITM).
3. Безопасность на уровне федерации:
Благодаря распределенной архитектуре, даже если конкретный сервер скомпрометирован или вышел из строя, остальные серверы и коммуникации остаются в безопасности.
Матрица дополнительных возможностей :
- Федерация:
Серверы взаимодействуют с помощью протоколов RESTful HTTP и стандартов JSON. Это позволяет пользователям взаимодействовать с другими пользователями независимо от того, на каком сервере они зарегистрированы.
- Поддержка мостов:
Matrix может взаимодействовать с другими протоколами и сервисами, такими как Slack, Telegram, IRC и даже WhatsApp, с помощью программных мостов.
- Постоянная история:
В отличие от других протоколов, Matrix сохраняет постоянную историю сообщений, которая синхронизируется между серверами. Это обеспечивает доступ к истории сообщений даже для пользователей, присоединившихся к комнате после ее создания.
Преимущества для специалистов по безопасности:
- Полный контроль над данными:
Размещение персонального сервера позволяет локально хранить все коммуникационные данные.
- Устойчивость к цензуре:
Децентрализованная природа сети гарантирует, что ни один субъект не сможет заблокировать доступ к матрице.
- Гибкость внедрения:
Matrix можно настроить для работы в анонимных сетях типа Tor, что добавляет дополнительный уровень конфиденциальности и безопасности.
Caddy Web Server современный и мощный веб-сервер, выбранный для этого проекта благодаря своим уникальным возможностям Ключевые особенности и причины выбора:
1. Простая и гибкая конфигурация:
- Caddy использует простой конфигурационный файл `Caddyfile`, который удобен для определения маршрутов, прокси и настроек SSL.
- По сравнению с другими веб-серверами, такими как Nginx или Apache, Caddy предлагает лучшую читаемость и более простую настройку.
2. Автоматическое управление HTTPS:
- Одной из отличительных особенностей Caddy является возможность автоматического выпуска и управления SSL-сертификатами. Хотя стандартные сертификаты не нужны для доменов .onion в сети Tor, Caddy все равно может управлять HTTPS-соединениями для внешнего доступа.
3. Встроенная поддержка обратного прокси:
- Caddy эффективно перенаправляет входящие запросы на сервер Matrix, разделяя веб-уровень и уровень приложений и обеспечивая лучшее управление сервером.
4. Поддержка HTTP/3 и высокая производительность:
- Caddy поддерживает HTTP/3 и QUIC, повышая производительность и снижая задержки при общении с пользователями.
5. Расширенные модули:
- Caddy поддерживает плагины и модули для создания пользовательских функций, таких как подробное протоколирование или управление пользователями.
Сочетание Caddy с Privoxy для максимальной безопасности и гибкости
Caddy:
Управляет маршрутами HTTP/S, обрабатывает запросы и улучшает работу пользователей.
- Privoxy:
Действует как безопасный слой для фильтрации, управления нагрузкой и защиты основного сервера.
Почему Tor для нашего проекта? Для настройки Matrix в этом проекте:
- Анонимность:
Tor обеспечивает полную анонимность сервера, делая его местоположение и идентификационную информацию неотслеживаемой.
- Конфиденциальность пользователей:
Пользователи могут подключаться к серверу через сеть Tor, не раскрывая своих IP-адресов и личных данных.
- Дополнительное шифрование:
Зашифрованные коммуникации Tor добавляют еще один уровень безопасности в дополнение к сквозному шифрованию Matrix.
- Доступ к домену .onion:
Доступ к сервису Matrix будет осуществляться через домен .onion, что является значительным преимуществом для безопасных и конфиденциальных коммуникаций.
Таким образом, Tor создает многоуровневый щит конфиденциальности и безопасности, обеспечивая анонимность и безопасность как сервера, так и пользователей. Сочетание Matrix и Tor обеспечивает полностью неотслеживаемую связь, устойчивую к перехвату и цензуре. Я планирую подробно рассказать обо всем в этом проекте, чтобы сделать его доступным для всех, даже для тех, кто имеет минимальные знания или опыт работы с Linux. Дайте мне знать, какие еще аспекты вы хотели бы, чтобы я осветил!
Основные области применения Privoxy в этой статье
1. Маршрутизация трафика в сеть Tor
Privoxy выступает в роли посредника между клиентами и сервисом Tor:
- Он получает все входящие HTTP-запросы и направляет их в Tor.
- Используя настройку forward-socks5t, он перенаправляет трафик на порт SOCKS5, предоставленный Tor.
- Этот процесс обеспечивает анонимность и неотслеживаемость всех соединений.
2. Фильтрация запросов
Privoxy может проверять HTTP-трафик перед отправкой в сеть Tor и блокировать нежелательные или рискованные запросы:
- Он фильтрует cookies, изменяет заголовки, блокирует рекламу или специфический контент.
- Эти функции обеспечивают повышенную безопасность и конфиденциальность для пользователей вашего сервера.
Инструменты для установки
1.Python
Почему стоит использовать Python?
- Synapse, основное программное обеспечение сервера Matrix, написано на Python и зависит от него.
- Многие инструменты управления и тестирования (например, скрипты управления пользователями) требуют Python.
Установка Python на Ubuntu:
Код: Скопировать в буфер обмена
2.caddy
Установка Caddy на Ubuntu:
1. Добавьте официальный репозиторий Caddy:
Код: Скопировать в буфер обмена
Код: Скопировать в буфер обмена
3. Установка Privoxy :
Проверка установки Privoxy :
Код: Скопировать в буфер обмена
4.Установка Tor :
Apache-конфиг: Скопировать в буфер обмена
Отредактируйте файл конфигурации Tor :
добавить :
Код: Скопировать в буфер обмена
Эти инструменты обеспечивают необходимую инфраструктуру для развертывания безопасного и анонимного сервера Matrix в сети Tor:
- Python: Для Synapse и скриптов управления.
- Caddy: В качестве веб-сервера для обработки трафика HTTP/S.
- Privoxy: В качестве прокси-сервера для повышения уровня конфиденциальности.
- Tor: Для обеспечения анонимности и создания скрытого сервиса.
Установив эти компоненты, мы готовы перейти к настройке их совместной работы и развертыванию нашего сервиса. Дайте мне знать, если хотите, чтобы я провёл вас через следующие шаги!
5 .Добавление репозитория Synapse
Synapse доступен в официальных репозиториях Matrix. Сначала добавьте репозиторий:
Код: Скопировать в буфер обмена
Во время установки, когда вам будет предложено ввести имя домена, оставьте его пустым.g
Код: Скопировать в буфер обмена
Теперь, прежде чем настраивать его вручную, давайте сначала получим доступ к нашему сервису Onion. Чтобы улучшить поток проекта, я хочу создать пользовательский домен с помощью инструмента `mkp224o`. Это позволит нам продемонстрировать настройку пользовательского домена и одновременно достичь цели проекта!
Шаги по установке и загрузке mkp224o:
Сначала установите необходимые условия:
Код: Скопировать в буфер обмена
Клонируйте репозиторий с GitHub:
Перейдите в каталог mkp224o:
начните компиляцию с помощью:
Далее создайте Makefile с помощью:
Наконец, запустите make, чтобы завершить процесс установки и сборки. Теперь можно приступить к выполнению команды для создания пользовательского домена
Код: Скопировать в буфер обмена
Сначала сгенерируйте свой собственный адрес Onion. Затем вам нужно поместить файлы public-key и private-key в каталог, указанный в файле torrc. В файл torr нужно добавить строку User debian-tor, поскольку служба Tor по умолчанию должна работать под пользователем debian-tor. Запустите службу Tor для генерации случайного скрытого сервиса Перед настройкой пользовательских ключей запустите службу Tor, чтобы сгенерировался случайный скрытый сервис. Это позволит нам заменить имя хоста, public-key и private-key на ваши собственные.
Директория скрытого сервиса была задана как /var/lib/tor/matrix_hidden_service/. Каталоги, связанные с сервисом Tor, должны принадлежать пользователю debian-tor. Чтобы установить правильное право собственности, используйте следующие команды :
Код: Скопировать в буфер обмена
Теперь приступайте к тор :
Код: Скопировать в буфер обмена
Чтобы проверить, была ли создана произвольная скрытая служба:
Код: Скопировать в буфер обмена
Замените имя хоста, публичный и личный ключи После того как вы убедитесь, что скрытая служба создана, замените файлы на свои собственные:
Код: Скопировать в буфер обмена
Наконец, перезапустите Tor, чтобы убедиться, что все настроено правильно:
Код: Скопировать в буфер обмена
Теперь у вас должен быть настроен и работать ваш пользовательский Onion-адрес!
Поскольку мы будем вручную генерировать конфигурационный файл homeserver.yaml с помощью инструмента Matrix Synapse, выполните следующую команду в каталоге /etc/matrix-synapse, чтобы сохранить файлы там:
Код: Скопировать в буфер обмена
После создания файла убедитесь, что установлены необходимые разрешения. Теперь нам нужно создать пользователя Matrix, который будет иметь необходимые разрешения для этих каталогов:
Код: Скопировать в буфер обмена
--system: Создает системного пользователя.
--no-create-home: Не создает домашний каталог для пользователя.
--group: Создает группу с тем же именем, что и у пользователя.
--disabled-login: Запрещает данному пользователю напрямую входить в систему (в целях безопасности).
Все файлы, связанные с Matrix-Synapse, должны быть назначены этому новому пользователю. Пути к файлам по умолчанию: /etc/matrix-synapse для конфигураций и /var/lib/matrix-synapse для данных. Установите права собственности на эти каталоги:
Код: Скопировать в буфер обмена
Далее необходимо настроить службу systemd для Matrix-Synapse, чтобы ограничить ее выполнение этим пользователем. Отредактируйте файл службы systemd:
Код: Скопировать в буфер обмена
Убедитесь, что заданы следующие параметры:
Кроме того, в директории conf.d, расположенной по адресу /etc/matrix-synapseedit файл server_name.yaml и добавьте в качестве имени сервера ваш Onion-адрес. После обновления файла службы перезагрузите конфигурацию systemd и перезапустите службу Matrix-Synapse:
Код: Скопировать в буфер обмена
Теперь перейдем к настройке Privoxy. Откройте конфигурационный файл Privoxy
Также установите значение listen-address:
запустите службы Privoxy:
Код: Скопировать в буфер обмена
Теперь на клиентской системе настройте параметры прокси для маршрутизации трафика через сеть Tor. Задайте IP-адрес машины и порт 8118:
настройка прокси > 0.0.0.0 8118
Наконец, проверьте, проходит ли весь трафик через сеть Tor, посетив сайт Check Tor Project https://check.torproject.org . Это подтвердит, что все работает так, как ожидалось.
На этом ваша настройка завершена!
Отлично! Теперь, когда домашний сервер, onion-адрес, Privoxy и Caddy работают должным образом, давайте перейдем к настройке Caddy, homeserver.yaml matrix-synapse и созданию самоподписанного сертификата для вашего Onion-сервиса. Мы также протестируем его функциональность на клиенте
Создание самоподписанного SSL-сертификата
Для повышения безопасности и шифрования коммуникаций на сервере Synapse я решил использовать самоподписанный SSL-сертификат. Это позволит нам устанавливать безопасные и зашифрованные соединения даже для доменов .onion, обеспечивая тем самым повышенную безопасность для пользователей. Может возникнуть вопрос, почему мы не используем бесплатные сертификаты, предоставляемые Let's Encrypt для доменов .onion. Вот почему:
Почему не использовать Let's Encrypt? Let's Encrypt выдает сертификаты только для публичных DNS-доменов, которые могут быть разрешены через стандартную систему DNS. Домены .onion не используют публичные DNS, вместо этого они управляются сетью Tor изнутри. В результате Let's Encrypt не может подтвердить эти домены. Самогенерирующиеся домены .onion автоматически и случайно генерируются сетью Tor и не регистрируются ни в какой системе DNS. Поскольку Let's Encrypt требует процесса проверки (например, DNS-запроса или HTTP-запроса) для выдачи сертификатов, он не может предоставить сертификаты для этих доменов. Чтобы решить эту проблему, я написал скрипт, который полностью автоматизирует процесс создания сертификата. Сценарий разработан так, чтобы быть удобным для пользователя, поэтому даже если вы не знакомы с OpenSSL или конфигурацией сертификатов, вы сможете создать нужный вам сертификат с помощью всего нескольких простых команд.
Принцип работы сценария
1. Проверка уровня доступа
Сначала скрипт проверяет, запущен ли он с правами root. Это гарантирует, что у него есть необходимые разрешения на доступ к файлам и каталогам.
2. Сбор информации о пользователе
Скрипт собирает у вас следующую информацию:
- Доменное имя (например, xss-matrix.onion).
- Путь к файлу для хранения сертификата и закрытого ключа
- Срок действия сертификата (по умолчанию: 365 дней)
- Размер ключа (по умолчанию: 4096 бит)
- Право собственности пользователей и групп на файлы.
3. Генерация закрытого ключа
Используя OpenSSL, сценарий генерирует закрытый ключ, который необходим для подписания сертификата и защиты связи.
4. Создание запроса на подписание сертификата (CSR)
Создается CSR, содержащий информацию о домене и некоторые организационные данные. Это служит основой для сертификата.
5. Настройка атрибутов сертификата
Создается файл с именем .ext, в котором определяются атрибуты сертификата, включая поддержку альтернативного имени субъекта (SAN).
6. Создание окончательного сертификата
Наконец, используя закрытый ключ и CSR, сценарий генерирует самоподписанный сертификат. Этот сертификат подписан закрытым ключом и готов к использованию в различных службах.
7. Перенос файлов и установка разрешений
Файлы сертификата и закрытого ключа перемещаются по указанным путям, а права собственности на них устанавливаются для указанных пользователей и групп.
Необходимость использования HTTPS для Matrix Протокол HTTPS (Hypertext Transfer Protocol Secure) является неизбежным требованием для работы Synapse (сервера протоколов Matrix). Эта необходимость обусловлена безопасностью, функциональностью и даже тем, как серверы общаются с другими серверами и клиентами. Требования к клиентам Matrix Клиенты Matrix (такие как Element) требуют HTTPS для связи с сервером. Если вместо него используется HTTP:
- Большинство клиентов не разрешат взаимодействие по умолчанию.
- Пользователи будут получать предупреждения о безопасности.
- Доступ к серверу будет полностью ограничен.
Чтобы решить эти проблемы, необходимо создать самоподписанный SSL-сертификат.
ssl.sh :
Bash: Скопировать в буфер обмена
Настройка Caddyfile для вашего сервера Matrix
Теперь, когда мы установили самоподписанный сертификат для нашего сервиса .onion и убедились, что HTTPS готов, следующим шагом будет настройка Caddy, который будет выступать в качестве обратного прокси для вашего сервера Synapse. Caddy - отличный выбор благодаря своей простоте, встроенному управлению HTTPS и высокой производительности. Вот описание конфигурации, которую я написал для настройки Caddy в качестве обратного прокси для сервера Matrix на Tor. Давайте пройдемся по каждому разделу, чтобы понять, что он делает.
Раздел 1: Трафик федерации
Код: Скопировать в буфер обмена
Здесь мы обрабатываем запросы, поступающие на порт 8448, который специально используется для федерации - когда наш сервер Matrix взаимодействует с другими серверами в сети.
tls: Указывает путь к сертификату и закрытому ключу для включения HTTPS.
reverse_proxy (обратный прокси): Перенаправляет все запросы, связанные с /federation/*, на сервер Matrix, работающий на localhost на порту 8008.
Раздел 2: Перенаправление HTTP на HTTPS
Код: Скопировать в буфер обмена
Этот раздел гарантирует, что любой HTTP-трафик (порт 80) будет немедленно перенаправлен на HTTPS. В этом случае он перенаправляет пользователей на другой домен .onion (`xss.onion`) для дополнительной безопасности.
Раздел 3: HTTPS и клиентские конфигурации
Код: Скопировать в буфер обмена
Здесь мы обрабатываем HTTPS-трафик на порту 443. Каждая часть имеет определенную роль:
- bind 0.0.0.0: Слушает все локальные IP-адреса.
- tls: Настраивает SSL-сертификаты и ограничивает протокол до TLS 1.2 и 1.3 для большей безопасности.
- encode gzip: Включает сжатие для повышения скорости загрузки.
Специальные маршруты:
- reverse_proxy /_matrix/client/*: Направляет все запросы, связанные с клиентом (например, Element), на сервер Matrix, работающий на порту `8008`.
- .well-known/matrix/client: Возвращает JSON-файл, информирующий клиента о том, где находится Homeserver.
- .well-known/matrix/server: Возвращает JSON-файл для других серверов, указывающий, куда отправлять сообщения для нашего сервера Matrix.
- .well-known/matrix/support: Предоставляет простой ответ, указывающий на то, что информация о поддержке недоступна.
Эта конфигурация гарантирует, что:
- Федерация работает: Другие серверы Matrix могут обмениваться сообщениями с нашим сервером.
- Безопасное HTTPS-соединение: Все соединения зашифрованы и безопасны.
- Клиенты могут подключаться: Клиенты могут найти и подключиться к нашему серверу без проблем.
Проблема федерации с самоподписанным сертификатом Хотя мы настроили федерацию в настройках Caddy и направили запросы по правильному пути (/_matrix/federation/*), проблема все еще существует. Проблема заключается в том, что наш сервер не может взаимодействовать с другими серверами, такими как matrix.org. Причина кроется в самоподписном сертификате, который мы используем. Почему самоподписной сертификат вызывает проблемы?
Когда серверы Matrix (например, matrix.org) пытаются установить связь с нашим сервером, они проверяют наш сертификат. Поскольку самоподписанный сертификат не выдан доверенным центром сертификации (ЦС), другие серверы не доверяют ему и отклоняют запросы. Хотя наш сервер может отправлять запросы Федерации, сервер назначения (например, matrix.org) при попытке ответить на запрос определяет наш сертификат как недействительный, и соединение отклоняется. В результате сообщения, которые должны обмениваться между нашим сервером и другими серверами, не отправляются и не принимаются.В настоящее время проблема Федерации сохраняется из-за самоподписанного сертификата, и наш сервер не может установить соединение с `matrix.org` или другими серверами, которым требуются действительные сертификаты. Я активно ищу лучшее решение для устранения этой проблемы.
Конфигурация homeserver.yaml synapse
Этот конфигурационный файл предназначен для основных настроек Synapse. Каждая секция служит определенной цели, управляя такими вещами, как связь с клиентами, федерация, база данных и многими другими настройками. Давайте пройдемся по каждой секции шаг за шагом, чтобы объяснить, что она делает.
добавить
Настройки основного сервера :
Код: Скопировать в буфер обмена
- server_name: Это имя нашего сервера Matrix, которое мы установили на адрес .onion.
- public_baseurl: Публичный URL-адрес сервера, используемый клиентами и другими серверами.
- pid_file: Путь к файлу PID для управления процессами сервера.
Настройки слушателей :
Код: Скопировать в буфер обмена
- порт: 8008: Сервер прослушивает порт 8008 для внутреннего HTTP-трафика, поскольку TLS обрабатывается Caddy.
- tls: false: Сам Synapse не обрабатывает TLS. Это делегируется Caddy.
- x_forwarded: true: Поддержка обратных прокси, таких как Caddy, путем переадресации IP-адреса клиента на сервер.
- resources: Указывает, что этот слушатель обрабатывает как клиентские запросы, так и запросы федерации.
Конфигурация базы данных :
Код: Скопировать в буфер обмена
- sqlite3: Использует SQLite, который подходит для небольших или тестовых сред. Для производства рекомендуется использовать PostgreSQL.
- база данных: Путь к файлу базы данных SQLite.
Настройки регистрации:
Код: Скопировать в буфер обмена
- enable_registration: Позволяет пользователям регистрироваться.
- enable_registration_without_verification: Разрешает регистрацию без проверки по электронной почте или CAPTCHA.
- registration_shared_secret: ключ, используемый для создания новых пользователей через API.
Пути к носителям и журналам:
Код: Скопировать в буфер обмена
-media_store_path: Указывает место хранения загруженных медиафайлов.
-log_config: Путь к файлу конфигурации журнала.
Федерация и связанные с ней настройки :
Код: Скопировать в буфер обмена
- federation_verify_certificates: Включает проверку сертификатов для федерации.
- federation_certificate_verification_whitelist: Разрешает домены .onion, даже если их сертификаты недействительны.
- outbound_proxy: Настраивает исходящий прокси на маршрутизацию через сеть Tor.
singup hCAPTCHA :
перейдите на сайт: https://hcaptcha.com
1. зайдите на сайт и выберите бесплатный тарифный план
2.добавьте ключ сайта
hCAPTCHA и ограничение скорости входа :
Код: Скопировать в буфер обмена
-rc_login: Настраивает CAPTCHA для входа в систему. В настоящее время используется hCaptcha.
- siteverify_api: Конечная точка API для проверки CAPTCHA.
Почему я включил hCaptcha:
Если hCaptcha не включена на сервере Matrix, а регистрация оставлена открытой, пользователи не смогут зарегистрироваться. Это связано с тем, что сервер Matrix по умолчанию требует наличия механизма проверки (например, CAPTCHA) для завершения регистрации.
Настройки безопасности :
Код: Скопировать в буфер обмена
Разные пути:
Код: Скопировать в буфер обмена
- room_prejoin_state: Отображает информацию о комнате для пользователей до того, как они присоединятся.
- default_room_version: Устанавливает версию по умолчанию для новых комнат (в настоящее время версия 10).
Эта конфигурация проста, но функциональна, сфокусирована на внутренних коммуникациях, федерации и регистрации пользователей. Хотя проблема самоподписанных сертификатов остается нерешенной, эта настройка хорошо подходит для тестирования и внутреннего использования.
Настройка клиентов для подключения к серверу Matrix
Теперь, когда настройка сервера завершена, следующим шагом будет настройка клиентов для подключения к нашему серверу Matrix. Поскольку мы используем самоподписанный сертификат, первым шагом будет установка сертификата на клиенте. Это очень важно, поскольку без него клиенты не смогут подключиться к серверу.
Вот как установить сертификат onion.crt на клиенте:
1. Установите сертификат
- Щелкните правой кнопкой мыши на файле сертификата и выберите Install Certificate (Установить сертификат).
- В процессе установки не забудьте добавить сертификат в список доверенных корневых центров сертификации.
2. Проверьте конфигурацию прокси-сервера
Убедитесь, что используемый прокси совпадает с тем, который вы настроили (например, prixovy). Перепроверьте настройки следующим образом:
- Шаги по проверке настроек прокси на основе вашей платформы
3. Запуск Element с игнорированием SSL-ошибок
Запустите Element с помощью следующей команды, чтобы обойти ошибки SSL:
Редактирование имени хоста
После запуска Element нажмите на Edit Hostname и введите свой адрес .onion без префикса https://
Если все настроено правильно, ваши клиенты должны подключаться к серверу без каких-либо проблем. Надеюсь, эта статья была полезной, и я с нетерпением жду ваших отзывов. Если вы найдете ошибки в руководстве или столкнетесь с проблемами при настройке или установке, не стесняйтесь сообщить мне об этом в комментариях под этой темой. Я буду рад помочь вам. Всем удачного дня!
homeserver.yaml
Код: Скопировать в буфер обмена
CaddyFile :
Код: Скопировать в буфер обмена
Дорогие друзья, пожалуйста, обратите внимание, что все связанные файлы должны иметь соответствующие права для своего пользователя. Это означает, что файлы, расположенные в matrix-synapse, должны принадлежать пользователю synapse. Обратитесь к приведенному ниже изображению.
С наилучшими пожеланиями
Статья на ENG : https://xss.is/threads/129998/
Специальный перевод для XSS.is от blackhunt
Если вы хотите узнать, как создать систему, устойчивую к вторжениям, слежке и цензуре, эта статья - именно то, что вам нужно. В следующих разделах я дам подробные инструкции по установке необходимых инструментов, настройке параметров и подготовке сервера к работе. Давайте начнем!
Прежде всего, что такое Matrix?
Matrix - это открытый децентрализованный коммуникационный протокол, созданный на основе федеративной архитектуры для безопасного, масштабируемого и прозрачного удовлетворения современных коммуникационных потребностей. Он специально создан для обмена текстовыми сообщениями, голосовых и видеозвонков, обмена файлами и даже взаимодействия между устройствами и IoT. Однако его отличительные особенности заключаются в децентрализованной архитектуре и сквозном шифровании Матрица использует событийную модель, то есть каждое сообщение, изменение состояния или файл хранится как событие в истории комнаты. Эти события организуются в структуру DAG (Directed Acyclic Graph), что позволяет отслеживать состояние комнаты на всех подключенных серверах. Каждый сервер Matrix может управляться независимо, при этом синхронизируя информацию о комнате с другими серверами в сети. Такая конструкция не только повышает устойчивость к цензуре, но и устраняет зависимость от центральной точки управления.
- Функции безопасности matrix :
1 .End-to-End Encryption:
Для шифрования сообщений в Matrix используются протоколы Olm и Megolm. Olm используется для чатов один на один, а Megolm - для групповых чатов. Эти протоколы гарантируют, что расшифровать сообщения смогут только отправитель и адресаты.
2. Аутентификация и управление ключами:
В Matrix используются передовые механизмы управления ключами шифрования, в том числе Cross-Signing, который позволяет проверить устройство и предотвратить атаки типа «человек посередине» (MITM).
3. Безопасность на уровне федерации:
Благодаря распределенной архитектуре, даже если конкретный сервер скомпрометирован или вышел из строя, остальные серверы и коммуникации остаются в безопасности.
Матрица дополнительных возможностей :
- Федерация:
Серверы взаимодействуют с помощью протоколов RESTful HTTP и стандартов JSON. Это позволяет пользователям взаимодействовать с другими пользователями независимо от того, на каком сервере они зарегистрированы.
- Поддержка мостов:
Matrix может взаимодействовать с другими протоколами и сервисами, такими как Slack, Telegram, IRC и даже WhatsApp, с помощью программных мостов.
- Постоянная история:
В отличие от других протоколов, Matrix сохраняет постоянную историю сообщений, которая синхронизируется между серверами. Это обеспечивает доступ к истории сообщений даже для пользователей, присоединившихся к комнате после ее создания.
Преимущества для специалистов по безопасности:
- Полный контроль над данными:
Размещение персонального сервера позволяет локально хранить все коммуникационные данные.
- Устойчивость к цензуре:
Децентрализованная природа сети гарантирует, что ни один субъект не сможет заблокировать доступ к матрице.
- Гибкость внедрения:
Matrix можно настроить для работы в анонимных сетях типа Tor, что добавляет дополнительный уровень конфиденциальности и безопасности.
Caddy Web Server современный и мощный веб-сервер, выбранный для этого проекта благодаря своим уникальным возможностям Ключевые особенности и причины выбора:
1. Простая и гибкая конфигурация:
- Caddy использует простой конфигурационный файл `Caddyfile`, который удобен для определения маршрутов, прокси и настроек SSL.
- По сравнению с другими веб-серверами, такими как Nginx или Apache, Caddy предлагает лучшую читаемость и более простую настройку.
2. Автоматическое управление HTTPS:
- Одной из отличительных особенностей Caddy является возможность автоматического выпуска и управления SSL-сертификатами. Хотя стандартные сертификаты не нужны для доменов .onion в сети Tor, Caddy все равно может управлять HTTPS-соединениями для внешнего доступа.
3. Встроенная поддержка обратного прокси:
- Caddy эффективно перенаправляет входящие запросы на сервер Matrix, разделяя веб-уровень и уровень приложений и обеспечивая лучшее управление сервером.
4. Поддержка HTTP/3 и высокая производительность:
- Caddy поддерживает HTTP/3 и QUIC, повышая производительность и снижая задержки при общении с пользователями.
5. Расширенные модули:
- Caddy поддерживает плагины и модули для создания пользовательских функций, таких как подробное протоколирование или управление пользователями.
Сочетание Caddy с Privoxy для максимальной безопасности и гибкости
Caddy:
Управляет маршрутами HTTP/S, обрабатывает запросы и улучшает работу пользователей.
- Privoxy:
Действует как безопасный слой для фильтрации, управления нагрузкой и защиты основного сервера.
Почему Tor для нашего проекта? Для настройки Matrix в этом проекте:
- Анонимность:
Tor обеспечивает полную анонимность сервера, делая его местоположение и идентификационную информацию неотслеживаемой.
- Конфиденциальность пользователей:
Пользователи могут подключаться к серверу через сеть Tor, не раскрывая своих IP-адресов и личных данных.
- Дополнительное шифрование:
Зашифрованные коммуникации Tor добавляют еще один уровень безопасности в дополнение к сквозному шифрованию Matrix.
- Доступ к домену .onion:
Доступ к сервису Matrix будет осуществляться через домен .onion, что является значительным преимуществом для безопасных и конфиденциальных коммуникаций.
Таким образом, Tor создает многоуровневый щит конфиденциальности и безопасности, обеспечивая анонимность и безопасность как сервера, так и пользователей. Сочетание Matrix и Tor обеспечивает полностью неотслеживаемую связь, устойчивую к перехвату и цензуре. Я планирую подробно рассказать обо всем в этом проекте, чтобы сделать его доступным для всех, даже для тех, кто имеет минимальные знания или опыт работы с Linux. Дайте мне знать, какие еще аспекты вы хотели бы, чтобы я осветил!
Основные области применения Privoxy в этой статье
1. Маршрутизация трафика в сеть Tor
Privoxy выступает в роли посредника между клиентами и сервисом Tor:
- Он получает все входящие HTTP-запросы и направляет их в Tor.
- Используя настройку forward-socks5t, он перенаправляет трафик на порт SOCKS5, предоставленный Tor.
- Этот процесс обеспечивает анонимность и неотслеживаемость всех соединений.
2. Фильтрация запросов
Privoxy может проверять HTTP-трафик перед отправкой в сеть Tor и блокировать нежелательные или рискованные запросы:
- Он фильтрует cookies, изменяет заголовки, блокирует рекламу или специфический контент.
- Эти функции обеспечивают повышенную безопасность и конфиденциальность для пользователей вашего сервера.
Инструменты для установки
1.Python
Почему стоит использовать Python?
- Synapse, основное программное обеспечение сервера Matrix, написано на Python и зависит от него.
- Многие инструменты управления и тестирования (например, скрипты управления пользователями) требуют Python.
Установка Python на Ubuntu:
Код: Скопировать в буфер обмена
Код:
apt update
apt install -y python3 python3-pip
Установка Caddy на Ubuntu:
1. Добавьте официальный репозиторий Caddy:
Код: Скопировать в буфер обмена
Код:
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /usr/share/keyrings/caddy-archive-keyring.asc
wget -qO - https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt | sudo tee /etc/apt/sources.list.d/caddy.list
Код:
apt update
apt install -y caddy
caddy version
Проверка установки Privoxy :
Код: Скопировать в буфер обмена
Код:
apt install prixovy
prixovy --version
4.Установка Tor :
Apache-конфиг: Скопировать в буфер обмена
apt install tor
Отредактируйте файл конфигурации Tor :
nano /etc/tor/torrc
добавить :
Код: Скопировать в буфер обмена
Код:
HiddenServiceDir /var/lib/tor/matrix_hidden_service/
HiddenServicePort 80 127.0.0.1:80
HiddenServicePort 443 127.0.0.1:443
HiddenServicePort 8448 127.0.0.1:8448
SOCKSPort 127.0.0.1:9050
AutomapHostsOnResolve 1
DNSPort 127.0.0.2:53
User debian-tor
- Python: Для Synapse и скриптов управления.
- Caddy: В качестве веб-сервера для обработки трафика HTTP/S.
- Privoxy: В качестве прокси-сервера для повышения уровня конфиденциальности.
- Tor: Для обеспечения анонимности и создания скрытого сервиса.
Установив эти компоненты, мы готовы перейти к настройке их совместной работы и развертыванию нашего сервиса. Дайте мне знать, если хотите, чтобы я провёл вас через следующие шаги!
5 .Добавление репозитория Synapse
Synapse доступен в официальных репозиториях Matrix. Сначала добавьте репозиторий:
Код: Скопировать в буфер обмена
Код:
wget -O /usr/share/keyrings/matrix-org-archive-keyring.gpg https://packages.matrix.org/debian/matrix-org-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/matrix-org-archive-keyring.gpg] https://packages.matrix.org/debian/ $(lsb_release -cs) main" |sudo tee /etc/apt/sources.list.d/matrix-org.list
apt update
apt install matrix-synapse
Во время установки, когда вам будет предложено ввести имя домена, оставьте его пустым.g
Код: Скопировать в буфер обмена
pip3 install matrix-synapse synapse
Теперь, прежде чем настраивать его вручную, давайте сначала получим доступ к нашему сервису Onion. Чтобы улучшить поток проекта, я хочу создать пользовательский домен с помощью инструмента `mkp224o`. Это позволит нам продемонстрировать настройку пользовательского домена и одновременно достичь цели проекта!
Шаги по установке и загрузке mkp224o:
Сначала установите необходимые условия:
Код: Скопировать в буфер обмена
apt install gcc libc6-dev libsodium-dev make autoconf
Клонируйте репозиторий с GitHub:
git clone https://github.com/cathugger/mkp224o.git
Перейдите в каталог mkp224o:
cd mkp224o
начните компиляцию с помощью:
./autogen.sh
Далее создайте Makefile с помощью:
./configure
Наконец, запустите make, чтобы завершить процесс установки и сборки. Теперь можно приступить к выполнению команды для создания пользовательского домена
Код: Скопировать в буфер обмена
./mkp224o -d xss bhxss
Сначала сгенерируйте свой собственный адрес Onion. Затем вам нужно поместить файлы public-key и private-key в каталог, указанный в файле torrc. В файл torr нужно добавить строку User debian-tor, поскольку служба Tor по умолчанию должна работать под пользователем debian-tor. Запустите службу Tor для генерации случайного скрытого сервиса Перед настройкой пользовательских ключей запустите службу Tor, чтобы сгенерировался случайный скрытый сервис. Это позволит нам заменить имя хоста, public-key и private-key на ваши собственные.
Директория скрытого сервиса была задана как /var/lib/tor/matrix_hidden_service/. Каталоги, связанные с сервисом Tor, должны принадлежать пользователю debian-tor. Чтобы установить правильное право собственности, используйте следующие команды :
Код: Скопировать в буфер обмена
Код:
chown -R debian-tor:debian-tor /var/lib/tor/
chmod -R 700 /var/lib/tor/
Теперь приступайте к тор :
Код: Скопировать в буфер обмена
Код:
systemctl start tor
systemctl status tor
Чтобы проверить, была ли создана произвольная скрытая служба:
Код: Скопировать в буфер обмена
ls -la /var/lib/tor/matrix-hidden-service
Замените имя хоста, публичный и личный ключи После того как вы убедитесь, что скрытая служба создана, замените файлы на свои собственные:
Код: Скопировать в буфер обмена
Код:
cd /var/lib/tor/matrix-hidden-service
cp /home/xss/mkp224o/xss/bhxssyjgmqdghib3dnhyntot3va6fex3dup3d2bchezlxd62iu75igid.onion/* .
Наконец, перезапустите Tor, чтобы убедиться, что все настроено правильно:
Код: Скопировать в буфер обмена
Код:
systemctl restart tor
systemctl status tor
Поскольку мы будем вручную генерировать конфигурационный файл homeserver.yaml с помощью инструмента Matrix Synapse, выполните следующую команду в каталоге /etc/matrix-synapse, чтобы сохранить файлы там:
Код: Скопировать в буфер обмена
python3 -m synapse.app.homeserver --server-name xss-matrix.onion --config-path /etc/matrix-synapse/homeserver.yaml --generate-config --report-stats=no
После создания файла убедитесь, что установлены необходимые разрешения. Теперь нам нужно создать пользователя Matrix, который будет иметь необходимые разрешения для этих каталогов:
Код: Скопировать в буфер обмена
adduser --system --no-create-home --group --disabled-login synapse
--system: Создает системного пользователя.
--no-create-home: Не создает домашний каталог для пользователя.
--group: Создает группу с тем же именем, что и у пользователя.
--disabled-login: Запрещает данному пользователю напрямую входить в систему (в целях безопасности).
Все файлы, связанные с Matrix-Synapse, должны быть назначены этому новому пользователю. Пути к файлам по умолчанию: /etc/matrix-synapse для конфигураций и /var/lib/matrix-synapse для данных. Установите права собственности на эти каталоги:
Код: Скопировать в буфер обмена
Код:
chown -R synapse:synapse /etc/matrix-synapse
chown -R synapse:synapse /var/lib/matrix-synapse
Далее необходимо настроить службу systemd для Matrix-Synapse, чтобы ограничить ее выполнение этим пользователем. Отредактируйте файл службы systemd:
Код: Скопировать в буфер обмена
nano /lib/systemd/system/matrix-synapse.service
Убедитесь, что заданы следующие параметры:
User=synapse
Кроме того, в директории conf.d, расположенной по адресу /etc/matrix-synapseedit файл server_name.yaml и добавьте в качестве имени сервера ваш Onion-адрес. После обновления файла службы перезагрузите конфигурацию systemd и перезапустите службу Matrix-Synapse:
Код: Скопировать в буфер обмена
Код:
systemctl daemon-reload
systemctl restart matrix-synapse
systemctl status matrix-synapse
/etc/privoxy/config
и найдите строку listen-address. Как только вы ее найдете, добавьте следующее:forward-socks5t / 127.0.0.1:9050 .
Также установите значение listen-address:
listen-address 0.0.0.0
запустите службы Privoxy:
Код: Скопировать в буфер обмена
Код:
systemctl start privoxy
systemctl status privoxy
Теперь на клиентской системе настройте параметры прокси для маршрутизации трафика через сеть Tor. Задайте IP-адрес машины и порт 8118:
настройка прокси > 0.0.0.0 8118
Наконец, проверьте, проходит ли весь трафик через сеть Tor, посетив сайт Check Tor Project https://check.torproject.org . Это подтвердит, что все работает так, как ожидалось.
На этом ваша настройка завершена!
Отлично! Теперь, когда домашний сервер, onion-адрес, Privoxy и Caddy работают должным образом, давайте перейдем к настройке Caddy, homeserver.yaml matrix-synapse и созданию самоподписанного сертификата для вашего Onion-сервиса. Мы также протестируем его функциональность на клиенте
Создание самоподписанного SSL-сертификата
Для повышения безопасности и шифрования коммуникаций на сервере Synapse я решил использовать самоподписанный SSL-сертификат. Это позволит нам устанавливать безопасные и зашифрованные соединения даже для доменов .onion, обеспечивая тем самым повышенную безопасность для пользователей. Может возникнуть вопрос, почему мы не используем бесплатные сертификаты, предоставляемые Let's Encrypt для доменов .onion. Вот почему:
Почему не использовать Let's Encrypt? Let's Encrypt выдает сертификаты только для публичных DNS-доменов, которые могут быть разрешены через стандартную систему DNS. Домены .onion не используют публичные DNS, вместо этого они управляются сетью Tor изнутри. В результате Let's Encrypt не может подтвердить эти домены. Самогенерирующиеся домены .onion автоматически и случайно генерируются сетью Tor и не регистрируются ни в какой системе DNS. Поскольку Let's Encrypt требует процесса проверки (например, DNS-запроса или HTTP-запроса) для выдачи сертификатов, он не может предоставить сертификаты для этих доменов. Чтобы решить эту проблему, я написал скрипт, который полностью автоматизирует процесс создания сертификата. Сценарий разработан так, чтобы быть удобным для пользователя, поэтому даже если вы не знакомы с OpenSSL или конфигурацией сертификатов, вы сможете создать нужный вам сертификат с помощью всего нескольких простых команд.
Принцип работы сценария
1. Проверка уровня доступа
Сначала скрипт проверяет, запущен ли он с правами root. Это гарантирует, что у него есть необходимые разрешения на доступ к файлам и каталогам.
2. Сбор информации о пользователе
Скрипт собирает у вас следующую информацию:
- Доменное имя (например, xss-matrix.onion).
- Путь к файлу для хранения сертификата и закрытого ключа
- Срок действия сертификата (по умолчанию: 365 дней)
- Размер ключа (по умолчанию: 4096 бит)
- Право собственности пользователей и групп на файлы.
3. Генерация закрытого ключа
Используя OpenSSL, сценарий генерирует закрытый ключ, который необходим для подписания сертификата и защиты связи.
4. Создание запроса на подписание сертификата (CSR)
Создается CSR, содержащий информацию о домене и некоторые организационные данные. Это служит основой для сертификата.
5. Настройка атрибутов сертификата
Создается файл с именем .ext, в котором определяются атрибуты сертификата, включая поддержку альтернативного имени субъекта (SAN).
6. Создание окончательного сертификата
Наконец, используя закрытый ключ и CSR, сценарий генерирует самоподписанный сертификат. Этот сертификат подписан закрытым ключом и готов к использованию в различных службах.
7. Перенос файлов и установка разрешений
Файлы сертификата и закрытого ключа перемещаются по указанным путям, а права собственности на них устанавливаются для указанных пользователей и групп.
Необходимость использования HTTPS для Matrix Протокол HTTPS (Hypertext Transfer Protocol Secure) является неизбежным требованием для работы Synapse (сервера протоколов Matrix). Эта необходимость обусловлена безопасностью, функциональностью и даже тем, как серверы общаются с другими серверами и клиентами. Требования к клиентам Matrix Клиенты Matrix (такие как Element) требуют HTTPS для связи с сервером. Если вместо него используется HTTP:
- Большинство клиентов не разрешат взаимодействие по умолчанию.
- Пользователи будут получать предупреждения о безопасности.
- Доступ к серверу будет полностью ограничен.
Чтобы решить эти проблемы, необходимо создать самоподписанный SSL-сертификат.
ssl.sh :
Bash: Скопировать в буфер обмена
Код:
#!/bin/bash
function header() {
echo "==================================================="
echo "$1"
echo "==================================================="
}
if [ "$EUID" -ne 0 ]; then
echo "This script must be run as root. Please use sudo." >&2
exit 1
fi
read -p "Enter your domain name (e.g., xss-matrix.onion): " DOMAIN
if [ -z "$DOMAIN" ]; then
echo "Domain name cannot be empty. Exiting." >&2
exit 1
fi
read -p "Enter path for the certificate file (default: /etc/matrix-synapse/onion-cert.pem): " CERT_PATH
CERT_PATH=${CERT_PATH:-/etc/matrix-synapse/onion-cert.pem}
read -p "Enter path for the key file (default: /etc/matrix-synapse/onion-key.pem): " KEY_PATH
KEY_PATH=${KEY_PATH:-/etc/matrix-synapse/onion-key.pem}
read -p "Enter the validity period for the certificate in days (default: 365): " DAYS_VALID
DAYS_VALID=${DAYS_VALID:-365}
read -p "Enter the key size (default: 4096): " KEY_SIZE
KEY_SIZE=${KEY_SIZE:-4096}
read -p "Enter the user that should own the certificate files (default: caddy): " TARGET_USER
TARGET_USER=${TARGET_USER:-caddy}
read -p "Enter the group that should own the certificate files (default: caddy): " TARGET_GROUP
TARGET_GROUP=${TARGET_GROUP:-caddy}
if ! id "$TARGET_USER" &>/dev/null; then
echo "The user '$TARGET_USER' does not exist. Please create the user first or enter a valid username." >&2
exit 1
fi
if ! getent group "$TARGET_GROUP" &>/dev/null; then
echo "The group '$TARGET_GROUP' does not exist. Please create the group first or enter a valid group name." >&2
exit 1
fi
WORK_DIR="/opt/cert_temp" # Set a safe directory for temporary work files
mkdir -p "$WORK_DIR"
header "Generating Private Key for $DOMAIN"
openssl genrsa -out "$WORK_DIR/$DOMAIN.key" $KEY_SIZE
if [ $? -ne 0 ]; then
echo "Error generating private key. Exiting." >&2
exit 1
fi
echo "Private key generated successfully at $WORK_DIR/$DOMAIN.key"
header "Creating Certificate Signing Request (CSR)"
openssl req -new -key "$WORK_DIR/$DOMAIN.key" -out "$WORK_DIR/$DOMAIN.csr" -subj "/C=US/ST=State/L=City/O=Organization/OU=Unit/CN=$DOMAIN"
if [ $? -ne 0 ]; then
echo "Error creating CSR. Exiting." >&2
exit 1
fi
echo "CSR created successfully at $WORK_DIR/$DOMAIN.csr"
header "Generating Certificate Configuration File"
cat > "$WORK_DIR/$DOMAIN.ext" <<EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $DOMAIN
EOF
header "Creating Self-Signed Certificate"
openssl x509 -req \
-in "$WORK_DIR/$DOMAIN.csr" \
-signkey "$WORK_DIR/$DOMAIN.key" \
-out "$WORK_DIR/$DOMAIN.crt" \
-days $DAYS_VALID \
-extfile "$WORK_DIR/$DOMAIN.ext"
if [ $? -ne 0 ]; then
echo "Error creating self-signed certificate. Exiting." >&2
exit 1
fi
echo "Self-signed certificate created successfully at $WORK_DIR/$DOMAIN.crt"
# Check if the certificate file was created
if [ ! -f "$WORK_DIR/$DOMAIN.crt" ]; then
echo "Error: The certificate file does not exist at $WORK_DIR/$DOMAIN.crt." >&2
exit 1
fi
header "Moving Files to Specified Paths"
# Check if certificate exists before moving
if [ ! -f "$WORK_DIR/$DOMAIN.crt" ]; then
echo "Error: The certificate file does not exist in the working directory ($WORK_DIR/$DOMAIN.crt)." >&2
exit 1
fi
# Create directories if not exist
mkdir -p "$(dirname "$CERT_PATH")"
mkdir -p "$(dirname "$KEY_PATH")"
# Move files
mv "$WORK_DIR/$DOMAIN.crt" "$CERT_PATH"
if [ $? -ne 0 ]; then
echo "Error: Failed to move certificate to $CERT_PATH." >&2
exit 1
fi
mv "$WORK_DIR/$DOMAIN.key" "$KEY_PATH"
if [ $? -ne 0 ]; then
echo "Error: Failed to move key to $KEY_PATH." >&2
exit 1
fi
echo "Files moved successfully:"
echo " - Certificate: $CERT_PATH"
echo " - Private Key: $KEY_PATH"
# Copy certificate for client
header "Copying Certificate for Client"
CLIENT_CERT_PATH="$CLIENT_CERT_DIR/$DOMAIN-client-cert.crt"
if [ ! -f "$CERT_PATH" ]; then
echo "Error: The certificate file does not exist at $CERT_PATH. Cannot create client certificate." >&2
exit 1
fi
cp "$CERT_PATH" "$CLIENT_CERT_PATH"
if [ $? -ne 0 ]; then
echo "Error: Failed to copy certificate to $CLIENT_CERT_PATH." >&2
exit 1
fi
echo "Client certificate created successfully at $CLIENT_CERT_PATH"
Теперь, когда мы установили самоподписанный сертификат для нашего сервиса .onion и убедились, что HTTPS готов, следующим шагом будет настройка Caddy, который будет выступать в качестве обратного прокси для вашего сервера Synapse. Caddy - отличный выбор благодаря своей простоте, встроенному управлению HTTPS и высокой производительности. Вот описание конфигурации, которую я написал для настройки Caddy в качестве обратного прокси для сервера Matrix на Tor. Давайте пройдемся по каждому разделу, чтобы понять, что он делает.
Раздел 1: Трафик федерации
Код: Скопировать в буфер обмена
Код:
xss:8448 {
tls /etc/matrix-synapse/onion-cert.pem /etc/matrix-synapse/onion-key.pem
reverse_proxy /_matrix/federation/* http://127.0.0.1:8008
}
tls: Указывает путь к сертификату и закрытому ключу для включения HTTPS.
reverse_proxy (обратный прокси): Перенаправляет все запросы, связанные с /federation/*, на сервер Matrix, работающий на localhost на порту 8008.
Раздел 2: Перенаправление HTTP на HTTPS
Код: Скопировать в буфер обмена
Код:
xss:80 {
redir https://xss.onion
}
Раздел 3: HTTPS и клиентские конфигурации
Код: Скопировать в буфер обмена
Код:
xss:443 {
bind 0.0.0.0
tls /etc/matrix-synapse/onion-cert.pem /etc/matrix-synapse/onion-key.pem {
protocols tls1.2 tls1.3
}
encode gzip
reverse_proxy /_matrix/client/* http://127.0.0.1:8008
handle /.well-known/matrix/client {
header Content-Type application/json
respond 200 "{\"m.homeserver\": {\"base_url\": \"https://xss.onion\"}}"
}
handle /.well-known/matrix/server {
header Content-Type application/json
respond 200 "{\"m.server\": \"xss.onion:443\"}"
}
handle /.well-known/matrix/support {
header Content-Type application/json
respond 200 "{\"message\": \"Support information not available.\"}"
}
}
- bind 0.0.0.0: Слушает все локальные IP-адреса.
- tls: Настраивает SSL-сертификаты и ограничивает протокол до TLS 1.2 и 1.3 для большей безопасности.
- encode gzip: Включает сжатие для повышения скорости загрузки.
Специальные маршруты:
- reverse_proxy /_matrix/client/*: Направляет все запросы, связанные с клиентом (например, Element), на сервер Matrix, работающий на порту `8008`.
- .well-known/matrix/client: Возвращает JSON-файл, информирующий клиента о том, где находится Homeserver.
- .well-known/matrix/server: Возвращает JSON-файл для других серверов, указывающий, куда отправлять сообщения для нашего сервера Matrix.
- .well-known/matrix/support: Предоставляет простой ответ, указывающий на то, что информация о поддержке недоступна.
Эта конфигурация гарантирует, что:
- Федерация работает: Другие серверы Matrix могут обмениваться сообщениями с нашим сервером.
- Безопасное HTTPS-соединение: Все соединения зашифрованы и безопасны.
- Клиенты могут подключаться: Клиенты могут найти и подключиться к нашему серверу без проблем.
Проблема федерации с самоподписанным сертификатом Хотя мы настроили федерацию в настройках Caddy и направили запросы по правильному пути (/_matrix/federation/*), проблема все еще существует. Проблема заключается в том, что наш сервер не может взаимодействовать с другими серверами, такими как matrix.org. Причина кроется в самоподписном сертификате, который мы используем. Почему самоподписной сертификат вызывает проблемы?
Когда серверы Matrix (например, matrix.org) пытаются установить связь с нашим сервером, они проверяют наш сертификат. Поскольку самоподписанный сертификат не выдан доверенным центром сертификации (ЦС), другие серверы не доверяют ему и отклоняют запросы. Хотя наш сервер может отправлять запросы Федерации, сервер назначения (например, matrix.org) при попытке ответить на запрос определяет наш сертификат как недействительный, и соединение отклоняется. В результате сообщения, которые должны обмениваться между нашим сервером и другими серверами, не отправляются и не принимаются.В настоящее время проблема Федерации сохраняется из-за самоподписанного сертификата, и наш сервер не может установить соединение с `matrix.org` или другими серверами, которым требуются действительные сертификаты. Я активно ищу лучшее решение для устранения этой проблемы.
Конфигурация homeserver.yaml synapse
Этот конфигурационный файл предназначен для основных настроек Synapse. Каждая секция служит определенной цели, управляя такими вещами, как связь с клиентами, федерация, база данных и многими другими настройками. Давайте пройдемся по каждой секции шаг за шагом, чтобы объяснить, что она делает.
добавить
Настройки основного сервера :
Код: Скопировать в буфер обмена
Код:
server_name: "xss.onion"
public_baseurl: "https://xss.onion"
pid_file: "/var/run/matrix-synapse.pid"
- public_baseurl: Публичный URL-адрес сервера, используемый клиентами и другими серверами.
- pid_file: Путь к файлу PID для управления процессами сервера.
Настройки слушателей :
Код: Скопировать в буфер обмена
Код:
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
bind_addresses: ['127.0.0.1']
resources:
- names: [client, federation]
compress: false
- tls: false: Сам Synapse не обрабатывает TLS. Это делегируется Caddy.
- x_forwarded: true: Поддержка обратных прокси, таких как Caddy, путем переадресации IP-адреса клиента на сервер.
- resources: Указывает, что этот слушатель обрабатывает как клиентские запросы, так и запросы федерации.
Конфигурация базы данных :
Код: Скопировать в буфер обмена
Код:
database:
name: sqlite3
args:
database: /var/lib/matrix-synapse/homeserver.db
- база данных: Путь к файлу базы данных SQLite.
Настройки регистрации:
Код: Скопировать в буфер обмена
Код:
enable_registration: true
enable_registration_without_verification: true
registration_shared_secret: ""
- enable_registration_without_verification: Разрешает регистрацию без проверки по электронной почте или CAPTCHA.
- registration_shared_secret: ключ, используемый для создания новых пользователей через API.
Пути к носителям и журналам:
Код: Скопировать в буфер обмена
Код:
media_store_path: /var/lib/matrix-synapse/media
log_config: "/etc/matrix-synapse/log.yaml"
-log_config: Путь к файлу конфигурации журнала.
Федерация и связанные с ней настройки :
Код: Скопировать в буфер обмена
Код:
federation_verify_certificates: true
federation_certificate_verification_whitelist:
- "*.onion"
federation_domain_whitelist: null
outbound_proxy:
http_proxy: "http://127.0.0.1:9050"
https_proxy: "http://127.0.0.1:9050"
- federation_certificate_verification_whitelist: Разрешает домены .onion, даже если их сертификаты недействительны.
- outbound_proxy: Настраивает исходящий прокси на маршрутизацию через сеть Tor.
singup hCAPTCHA :
перейдите на сайт: https://hcaptcha.com
1. зайдите на сайт и выберите бесплатный тарифный план
2.добавьте ключ сайта
hCAPTCHA и ограничение скорости входа :
Код: Скопировать в буфер обмена
Код:
rc_login:
enabled: true
siteverify_api: "https://hcaptcha.com/siteverify"
public_key: ""
private_key: ""
- siteverify_api: Конечная точка API для проверки CAPTCHA.
Почему я включил hCaptcha:
Если hCaptcha не включена на сервере Matrix, а регистрация оставлена открытой, пользователи не смогут зарегистрироваться. Это связано с тем, что сервер Matrix по умолчанию требует наличия механизма проверки (например, CAPTCHA) для завершения регистрации.
Настройки безопасности :
Код: Скопировать в буфер обмена
Код:
use_insecure_ssl_client_just_for_testing_do_not_use: true
federation_custom_ca_list: null
use_insecure_ssl_client_just_for_testing_do_not_use
: Разрешает соединения с недействительными сертификатами в целях тестирования. Не рекомендуется для использования в производстве.Разные пути:
Код: Скопировать в буфер обмена
Код:
room_prejoin_state:
enabled: true
default_room_version: "10"
- room_prejoin_state: Отображает информацию о комнате для пользователей до того, как они присоединятся.
- default_room_version: Устанавливает версию по умолчанию для новых комнат (в настоящее время версия 10).
Эта конфигурация проста, но функциональна, сфокусирована на внутренних коммуникациях, федерации и регистрации пользователей. Хотя проблема самоподписанных сертификатов остается нерешенной, эта настройка хорошо подходит для тестирования и внутреннего использования.
Настройка клиентов для подключения к серверу Matrix
Теперь, когда настройка сервера завершена, следующим шагом будет настройка клиентов для подключения к нашему серверу Matrix. Поскольку мы используем самоподписанный сертификат, первым шагом будет установка сертификата на клиенте. Это очень важно, поскольку без него клиенты не смогут подключиться к серверу.
Вот как установить сертификат onion.crt на клиенте:
1. Установите сертификат
- Щелкните правой кнопкой мыши на файле сертификата и выберите Install Certificate (Установить сертификат).
- В процессе установки не забудьте добавить сертификат в список доверенных корневых центров сертификации.
2. Проверьте конфигурацию прокси-сервера
Убедитесь, что используемый прокси совпадает с тем, который вы настроили (например, prixovy). Перепроверьте настройки следующим образом:
- Шаги по проверке настроек прокси на основе вашей платформы
3. Запуск Element с игнорированием SSL-ошибок
Запустите Element с помощью следующей команды, чтобы обойти ошибки SSL:
--ignore-certificate-errors
Редактирование имени хоста
После запуска Element нажмите на Edit Hostname и введите свой адрес .onion без префикса https://
Если все настроено правильно, ваши клиенты должны подключаться к серверу без каких-либо проблем. Надеюсь, эта статья была полезной, и я с нетерпением жду ваших отзывов. Если вы найдете ошибки в руководстве или столкнетесь с проблемами при настройке или установке, не стесняйтесь сообщить мне об этом в комментариях под этой темой. Я буду рад помочь вам. Всем удачного дня!
homeserver.yaml
Код: Скопировать в буфер обмена
Код:
server_name: ""
public_baseurl: "https://"
pid_file: /etc/matrix-synapse/homeserver.pid
listeners:
- port: 8008
tls: false
type: http
x_forwarded: true
bind_addresses: ['127.0.0.1']
resources:
- names: [client, federation]
compress: false
database:
name: sqlite3
args:
database: /etc/matrix-synapse/homeserver.db
log_config: "/etc/matrix-synapse/"
media_store_path: /etc/matrix-synapse/media_store
enable_registration: true
enable_registration_without_verification: true
registration_shared_secret: ""
suppress_key_server_warning: true
federation_verify_certificates: true
federation_certificate_verification_whitelist:
- "*.onion"
federation_domain_whitelist: null
outbound_proxy:
http_proxy: "http://127.0.0.1:9050"
https_proxy: "http://127.0.0.1:9050"
report_stats: false
macaroon_secret_key: ""
form_secret: ""
signing_key_path: "/etc/matrix-synapse/"
trusted_key_servers:
- server_name: "matrix.org"
accept_keys_insecurely: true
rc_login:
enabled: true
siteverify_api: "https://hcaptcha.com/siteverify"
public_key: ""
private_key: ""
room_prejoin_state:
enabled: true
default_room_version: "10"
CaddyFile :
Код: Скопировать в буфер обмена
Код:
.onion:8448 {
tls /etc/matrix-synapse/onion-cert.pem /etc/matrix-synapse/onion-key.pem
reverse_proxy /_matrix/federation/* http://127.0.0.1:8008
}
.onion:80 {
redir https://.onion
}
.onion:443 {
bind 0.0.0.0
tls /etc/matrix-synapse/onion-cert.pem /etc/matrix-synapse/onion-key.pem {
protocols tls1.2 tls1.3
}
encode gzip
reverse_proxy /_matrix/client/* http://127.0.0.1:8008
#reverse_proxy /_matrix/* http://localhost:8008
#reverse_proxy /_synapse/* http://localhost:8008
handle /.well-known/matrix/client {
header Content-Type application/json
respond 200 "{\"m.homeserver\": {\"base_url\": \"https://.onion\"}}"
}
handle /.well-known/matrix/server {
header Content-Type application/json
respond 200 "{\"m.server\": \".onion:443\"}"
}
handle /.well-known/matrix/support {
header Content-Type application/json
respond 200 "{\"message\": \"Support information not available.\"}"
}
}
Дорогие друзья, пожалуйста, обратите внимание, что все связанные файлы должны иметь соответствующие права для своего пользователя. Это означает, что файлы, расположенные в matrix-synapse, должны принадлежать пользователю synapse. Обратитесь к приведенному ниже изображению.
С наилучшими пожеланиями
Статья на ENG : https://xss.is/threads/129998/
Специальный перевод для XSS.is от blackhunt