Category: Руководства

  • Как сделать собственный мессенджер?

    В связи с медленно наступающими изменениями государственной политики по отношению, к, в частности, мессенджеру Telegram, вопрос о «построении» своей платформы для коммуникации может скоро встать «ребром» для определённой части российского общества.

    Стоит отметить, что сейчас сделать свой мессенджер относительно просто; За последний десяток лет «расплодилось» множество протоколов для децентрализованной коммуникации, в числе которых — Matrix, SMP, и прочие. Ввиду простоты первого именно о нем далее пойдёт речь.

    Что потребуется?

    • VPS/VDS с 2GB ОЗУ и 2 vCPU;
    • Доменное имя*;
    • Базовое знание терминала *nix.

    Примечание: лучше регистрировать домен у зарубежного регистрара ввиду отсутствия необходимости «показывать паспорт». В дальнейшем на работу сервера это не повлияет.

    I. Подготовительные работы

    В качестве ОС для сервера мы будем использовать Ubuntu 24.04. Можно и Debian 12, но работа конкретно этого руководства на нем не проверялась.

    Откройте панель управления вашего регистрара и зайдите в параметры зон DNS вашего домена. Тут вам необходимо создать запись типа A, которая указывает на IP вашего сервера. «Выглядеть» она должна следующим образом:

    • Хост: @
    • IP-адрес: IP вашего сервера

    Обновление записей DNS может занять несколько часов, ввиду чего желательно не «тянуть» с этим пунктом.

    II. Настройка сервера

    Подключитесь к своему серверу по протоколу Secure Shell:

    ssh root@{IP сервера}

    Можно заменить непосредственный IP сервера на ваш домен, если вы «подождали» от его настройки достаточное количество времени.

    Далее вам покажут отпечаток ключа вашего сервера и попросят ввести пароль. Если ваш хостинг-провайдер не предоставляет возможность посмотреть отпечаток из веб-интерфейса, «сверку показаний» можно пропустить.

    После успешного подключения обновите кэш пакетного менеджера APT и системные пакеты:

    apt update && apt upgrade

    Скорее всего, к вам «заедет» несколько гигабайт новых «пакетов», в числе которых будет, например, новый образ ядра. Чтобы загрузить это «счастье» в память, перезагрузите систему:

    reboot

    Подождите несколько минут и подключитесь по Secure Shell вновь. Далее, необходимо установить «базу», которая потребуется в дальнейшем:

    apt install python3-full python3-virtualenv nginx certbot

    После установки пакетов создайте «среду» для сервера:

    mkdir -p ~/synapse
    python3.12 -m venv ~/synapse/env

    Переключитесь в свежесозданную «среду»:

    source ~/synapse/env/bin/activate

    Обновите пакеты PIP и setuptools:

    pip install --upgrade pip
    pip install --upgrade setuptools

    Установите непосредственно сам сервер Synapse:

    pip install matrix-synapse

    На данный момент у вас уже есть сервер, но в состоянии «слепого котёнка». Для того, чтобы до него можно было «достучаться», необходимо провести некоторое количество дополнительных конфигурационных работ.

    III. Конфигурация

    Создайте конфигурационный файл сервера Synapse:

    cd ~/synapse
    python -m synapse.app.homeserver \
        --server-name my.domain.name \
        --config-path homeserver.yaml \
        --generate-config \
        --report-stats=[yes|no]


    В параметре –server-name замените kremlinkernel.com на ваше доменное имя.

    Запросите сертификаты TLS для вашего домена:

    certbot certonly

    Если вас попросят выбрать способ подтверждения, выбирайте первый. Далее проблем возникнуть не должно.

    Для того, чтобы до вашего сервера можно было «достучаться», вам необходимо настроить reverse proxy с использованием nginx. Создайте конфигурационный файл для вашего сервера:

    cd /etc/nginx/conf.d
    nano {доменное имя вашего сайта}.conf

    Скопируйте данную конфигурацию в этот файл:

    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        # For the federation port
        listen 8448 ssl default_server;
        listen [::]:8448 ssl default_server;
        server_name doradura.com;
        ssl_certificate /etc/letsencrypt/live/doradura.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/doradura.com/privkey.pem;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location ~ ^(/_matrix|/_synapse/client) {
            # note: do not add a path (even a single /) after the port in `proxy_pass`,
            # otherwise nginx will canonicalise the URI and cause signature verification
            # errors.
            proxy_pass http://localhost:8008;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header Host $host:$server_port;
            # Nginx by default only allows file uploads up to 1M in size
            # Increase client_max_body_size to match max_upload_size defined in homeserver.yaml
            client_max_body_size 50M;
       
        # Synapse responses may be chunked, which is an HTTP/1.1 feature.
        proxy_http_version 1.1;
        }
    }

    Замените kremlinkernel.com на своё доменное имя в параметре server_name и в путях до сертификатов Let’s encrypt.

    Перезапустите nginx:

    systemctl restart nginx

    Вернитесь в директорию сервера Synapse:

    cd ~/synapse

    Запустите сервер Synapse:

    synctl start

    Если вы сделали все правильно, сервер запустится успешно с сообщением started synapse.app.homeserver(homeserver.yaml)

    Теперь у вас есть полнофункциональный сервер. Проверить его доступность можно, например, с помощью WEB-клиента Element.

    IV. Управление

    После перезагрузки сервера запустить его заново можно следующим образом:

    cd ~/synapse
    source ~/synapse/env/bin/activate
    synctl start

    Зарегистрировать пользователя можно так:

    cd ~/synapse
    source ~/synapse/env/bin/activate
    register_new_matrix_user -c homeserver.yaml

    Далее вас интерактивно проведут по созданию нового аккаунта.

    Стоит отметить, что данное руководство не подразумевает возможности регистрировать аккаунты без непосредственного участия администратора. Открытая регистрация — верный способ превратить ваш сервер в «помойку».

    V. Приложения

    Для iOS/Android существует клиент Element, которым я и рекомендую пользоваться. Его страницы в магазинах приложений:

    Вместо регистрации на matrix.org используйте кнопку «sign in manually», потом «change account provider».

    Для настольных компьютеров существует как и клиент Element, так и Nheko.

  • Руководство по мобильной безопасности

    Завершая цикл о «мобильной безопасности», я хочу привести все данные мною советы к единому «руководству по мобильной безопасности»

    I. Храните секреты

    Секрет, он же пароль или ПИН-код, для доступа в ваш телефон должен быть максимально сильным в пределах разумного. Зачастую, модели устройств с Secure Element и так «противодействуют» перебору паролей, но надеяться на «авось» не стоит.

    Можно делать любой, но, главное — он должен быть длинный, от 20-ти символов, запоминающийся, и сильный, девяносто бит энтропии минимум.
    (Грубо говоря, энтропия — насколько ваша комбинация случайна. Проверить энтропию можно с помощью KeepassXC для компьютера и IYPS/KeepassDX для Android.)

    Личный совет — связывайте определенне последовательности букв с яркими воспоминаниями. Так проще запомнить.

    II. Тушите свет, перед тем как клеить ласты

    Обязательно выключайте свой телефон, если не планируете пользоваться им продолжительное время. Желательно это делать при входе в общественные пространства, в т. ч. метро, если вы думаете, что вас могут задержать. GrapheneOS может вам с этим помочь.

    Почему это важно я подробно описывал в разборе цифровой криминалистики.

    III. В мире, где твое лицо — пароль

    Если у вас длинный пароль, биометрия может сильно облегчить вам «ношу». Если вы следуете пункту два, или используете GrapheneOS, где можно поставить «второй фактор» на биометрию, я рекомендую не отключать ее почем зря.

    IV. Не болтай!

    Если вы планируете использовать телефон в общественных местах, отключайте ненужные беспроводные протоколы, в особенности Bluetooth. По идентификаторам и особенностям поведения «чипа» любой человек с более-менее развитым навыком может вас отслеживать.

    V. Проверяй, не доверяй

    В заключение, я рекомендую предпочитать открытые программы закрытым, особенно отечественного происхождения.

  • Руководство по выбору сетевого оборудования

    I. Остерегайтесь китайцев

    Китайские производители обязаны вставлять в свои продукты «черные ходы» для персонала китайского государства. В связи с этим, я настоятельно рекомендую обходить стороной любое сетевое оборудование китайского происхождения, если вы не планируете «прошивать» свободное ПО сразу же после покупки.

    II. (Не)эффективность

    Стандартов WiFi несколько: 802.11a/b/g/n/ac/ax/be. Что из этого «ребуса» выбрать? Во-первых, необходимо знать, какой стандарт поддерживает большинство ваших устройств. Зачастую это WiFi 4 (N) и WiFi 5 (AC). Соответственно, если вы приобретаете роутер с WiFi 7 (BE), то никто не сможет к нему подключиться, если вы не уменьшите версию.

    Грубо говоря, каждая новая версия WiFi имеет лучшую пропускную способность, чем предыдущая. Если у вас нету каких-то специфичных задач, то роутера с WiFi 4 и/или WiFi 5 вам хватит на несколько лет.

    III. Радиопередачи

    Пропускная способность роутера также зависит от поддерживаемого диапазона частот. Есть 2.4GHz, 5GHz и 6GHz, и с повышением частоты уменьшается возможность сигнала «пробивать» препятствия — допустим, если 2.4GHz может «пробить» кирпичную стену, то 6GHz — далеко не всегда.

    Наиболее «способные» частоты — 5GHz и 6GHz. Что касается 2.4GHz, то зачастую вам необходимо «перекрикивать» своих соседей — если вы имеете такую же мощность излучения, как и другие, то производительность будет «отвратительной». Возможное решение — покупка американского роутера, где «потолок» мощности выше.

    IV. Беспроводная (без)опасность

    Существует несколько стандартов защиты WiFi — WEP и три итерации WPA.
    WEP и первый WPA имеют множество уязвимостей связанных с векторами инициализации (IV), и не считается безопасным. Сложность их взлома находится на уровне «подождать две минуты, пока умная программа собирает пакеты».

    WPA2 также можно «сломать», но уже несколько сложнее. Ввиду того, что рукопожатие PSK можно легко «перехватить», это позволяет «перебирать» ваш ключ полностью оффлайн. Единственная защита — длинный ключ, 40 и более случайных символов. Также, «сломав» одно рукопожатие можно начать расшифровывать весь трафик, в том числе ретроспективно, ибо ключ PSK на всех один.

    WPA3 решает проблемы второй итерации благодаря рукопожатию SAE. Ввиду того, что SAE нельзя «перехватить», это заставляет атакующего взаимодействовать с точкой доступа, в следствии чего «цена» атаки растет экспоненциально. Также, WPA3 обеспечивает «Forward Secrecy», т. е. каждая сессия имеет свой ключ, вместо одного «общего» в WPA2-PSK.

    V. Облачный надзор

    Я рекомендую обходить стороной модели с «облаком» в «прошивке». Вам не нужен ни родительский контроль, ни «антивирус», поверьте мне. «Антивирус» на уровне сети — пустышка(большинство вирусов используют HTTPS, т. е. шифрование), которая, к тому же, может отправлять ваши метаданные на какой-нибудь китайский сервер.

    VI. Обход блокировок

    Модели с поддержкой VPN позволяют «обходить» блокировки, не задумываясь об этом. Данный незаурядный «бонус» сэкономит вам часы попыток установки VPN на умные и «недоумные» устройства.

    VII. Открытая душа

    Если вы с компьютерами на «ты», я рекомендую присмотреться к моделям с поддержкой OpenWRT. OpenWRT — свободное ПО, которое позволяет осуществлять полный контроль над вашим сетевым окружением, а также поддерживает великое множество «средств обхода блокировок».