Підвищення рівня приватності в застосунках Linux


Цей список - створив для себе на випадок організації чистої системи, свого роду нагадування / чек-лист по якому пройтись і не забути вимкнути дірки в плані мережних витоків. Це не анти-деанон, але частково може бути корисним у даному векторі, поряд з адблоками та іншими костилями. Для більш суворої фільтрації трафіку, дивіться нотатки:


Обмеження вихідних з'єднань на Інтернет з ufw

Ізоляція Linux від прямих Інтернет з'єднань на базі QEMU / Virtual Machine Manager з VSOCK


Rhythmbox


Через плагін "Cover art search" хтось знає що ви слухаєте локально - вимикаємо:


Скріншот


Firefox


HTTP/HTML - вони такі. Для різних завдань - в мене окремі браузери:


Безпечний перегляд сайтів Yggdrasil з Yggstack

Зробив собі "білий список" засобами PAC

psocks: моє бачення фільтруючого проксі

Мій форк i2pdbrowser для приватно-орієнтованого Веб



DNS


Для резольву доменів, я користуюсь власним проксі-сервером. Також, в контексті рекомендую до читання:


Crab-hole DNS як 100% програмна альтернатива Pi-hole

Ручне встановлення Pi-hole DNS на прикладі Fedora / Linux


Alfis


Alfis DNS - це альтернативна система реєстрації доменів в блокчейн, що також включає в себе вбудований проксі-сервер для резольву локальних та глобальних доменів Інтернет. Таким чином, через нього відбувається визначення IP для усіх потрібних мені мереж. По цій темі, я написав декілька матеріалів:


Alfis DNS - реєстрація домену в блокчейн

Альтернативна гілка Alfis DNS з підтримкою Mycelium

Мій пресет Alfis DNS на роутері Yggdrasil / Mycelium


В контексті теми цього допису, звертаю увагу на стандартний файл конфігурації, в якому я вимикаю всі не явні DNS і додаю статичні внутрішньо-мережні IP Yggdrasil в парі з опцією yggdrasil_only (або yggdrasil_mode для гілки Yggdrasil/Mycelium):


[net]

peers = [
    # вимикаю не явні, міксовані DNS (постачаються в стандартній конфігурації)
    # "peer-v4.alfis.name:4244",
    # "peer-v6.alfis.name:4244",
    # "peer-ygg.alfis.name:4244",

    # додаю визначені мною вручну адреси пірів
    # * до списку треба додати актуальні вузли на момент конфігурації резольвера
    "[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:4244",
    "[200:f8e5:2383:c1f8:7c73:8e74:2a5e:197e]:4244",
    "[200:f8e5:2383:c1f8:7c73:8e74:2a5e:197e]:4244",
    "[200:31b6:1c3a:3a1c:d322:3ed7:e109:4b3]:4244",
    "[200:1106::a702:9841:e607:9b3]:4244",
    "[208:84:68:55:2f91:8484:8d60:2fca]:4244",
    "[208:25:40:bd:6ea9:89fc:ac75:87be]:4244",
    "[208:62:45:62:59b8:f1a2:62ca:f87c]:4244",
    "[225:ca89:40a8:611e:78b8:ab81:999a:d4d7]:4244",
    "[301:84f7:4bc0:2f3a::53]:4244"
]

# стандартна гілка (github.com/Revertron/Alfis)
yggdrasil_only = true

# якщо гілка mycelium-network-mode (github.com/YGGverse/Alfis/tree/mycelium-network-mode)
# yggdrasil_mode = true
# mycelium_mode = true

BitTorrent


qBittorrent


Зненацька помітив, що на бінді IPv6 цілком можливі конекти через Веб-сокет IPv4:


Потенційні витоки з'єднань на Інтернет в qBittorrent


rqbit


Мій сабж описаний в рамках тікету #469:


[librqbit] unexpected peers connection #469


Оскільки ледачий, цю проблему поки що "вирішив" засобами "blocklist".


BitCoin


Тема стосується усіх похідних BitCoin, включно з соціалками на базі цього блокчейну.


Суть в тому, що подібні програми як правило працюють на двох стеках IPv4+IPv6. При ініціальному запуску та в процесі роботи, вони можуть періодично запитувати публічну адресу з різних серверів типу wtfismyip.com або внутрішньої мережі з інших пірів для створення ідентифікатора DHT. Тобто є певний алгоритм створення "основної" адреси за NAT, яку можна побачити наприклад в треї qBittorrent.


Тому якщо ви не пускаєте "гаманці" в ізольованій від мережного адаптера віртуалці (наприклад з VSOCK) і крутите поряд з IPv4 VPN якийсь інтерфейс типу IPv6 Yggdrasil, то може "засвітитись" зв'язок користувача з mesh, надіславши його IPv6 пірам у якості анонсу поряд з однойменним портом IPv4 за VPN.


Вирішується це різними аргументами фільтрів типу `-onlynet`, `-connect`, `-externalip` і так далі, в залежності від конкретного форку та його версії.


PDF


Формат PDF є цілком та повністю дірявим:



Конкретні налаштування з фільтрації залежатимуть від бекенду операційної системи та клієнта.


Деякі тематичні матеріали на цю тему:


Opening PDFs securely

Can PDFs contain resources that are loaded from the internet?

How to enhance your PDF forms with JavaScript

How to disable JavaScript in PDF documents in Firefox


Xash3D / FWGS


Half-Life


Аудит рушія та самої гри на предмет відбитків та витоків я не проводив, але в контексті приватної гри по локалці Yggdrasil, щонайменше варто звернути увагу на опцію лаунчера "Configuration" > "Multiplayer" > "Customize" > "Adv options" > "Allow download":


Скріншот (потрібно зняти хрестик)


Окремо, я вимикаю мікрофон, не знаю чи він дійсно вимикається, але так:


voice_enable 0

Також звертаємо увагу на опції:


cl_allowdownload
cl_filterstuffcmd

Якщо десь ділимось файлами, не забуваймо прибрати особисте сміття зі Steam:

Підготовка ігрових файлів Half-Life (Steam) для релізу BitTorrent


Нагадаю, що для цього рушія було створено окремі гілки для оверлейного і гібридного режимів. Вони включають адаптації для локальної гри (зокрема локальні майстер-сервери) а звідти - підвищену приватність:


https://github.com/YGGverse/xash3d-fwgs/branches


Детальніше про рушій Xash3D / FWGS в контексті Half-Life, також можна почитати тут:


Half-Life в Linux на базі рушія Xash3D / FWGS


FreeTube / Invidious


В мережі Yggdrasil періодично з'являються експериментальні інстанси Invidious. Одного разу, мені стало цікаво перейти в режим Yggdrasil-only. Обравши відповідний проксі я помітив, що через мої налаштування фільтрації трафіку, половина функцій перестає працювати. Власне, я не розбирався як саме працює цей "приватно-орієнтований клієнт", але на практиці виходить так, що адміністратор Invidious просто налаштовує веб-проксі, забуваючи про інші складові API. Для користувача FreeTube (який обрав проксі та не заблокував трафік на інші вузли) все виглядатиме заплановано, але на практиці - трафік йтиме кудою завгодно.


Сам я все ще користуюся цим клієнтом, але для інших потреб: формування приватних підписок без підмішування туди рекламних трендів Google. Просто майте на увазі, що цей застосунок в його поточній реалізації більше підходить для обходу блокувань, а не деперсоналізації і тим більше анонімізації користувача.


Стосовно додатку FreeTube, раніше я писав про нього невеличкий огляд:

FreeTube - приватний перегляд YouTube


Згодом, зіткнувся з певними проблемами приватності:

Спроба проксування FreeTube через Yggdrasil


Та перейшов на ytsub:

ytsub: TUI-альтернатива FreeTube


VSCode


Тут, мабуть, немає сенсу зупинятись, адже "електронний" VSCode - нашпигований телеметрією та різними API синхронізації додатків. Утім, на згадку, додам одне виключення: для комерційних проєктів, я користуюсь додатком обліку часу Wakatime:


https://wakatime.com

https://open-vsx.org/extension/WakaTime/vscode-wakatime


По суті, цей (доволі зручний) додаток надсилає докладну статистику по файлам, операційній системі та всьому іншому в рамках проєкту - щоб окрім загального звіту по часу, можна було проаналізувати свою активність по мовам програмування та всьому іншому. Якщо працюємо з різними "приватними" програмами і не хочемо, щоб про це знав увесь світ (навіть якщо вимкнули галку поширення з усіма) - вимикаємо додаток і для роботи пускаємо окремий контейнер VSCode / VSCodium.


Weather


Одна справа geo-IP, зовсім інша - коли інформація уточнюється користувачем. Звісно, HTTPS, політики приватності, бла-бла...


sudo dnf remove gnome-weather

IRC


Halloy


Стандартно, цей клієнт дозволяє прев'ю віддаленого вмісту (ака мікро-розмітка) - у приватних мережах, це потенційний де-анон, вимикаємо:


[preview]
enabled = false

Також вимикаю функцію передачі файлів, оскільки та - може використовувати пасивний режим:


[file_transfer]
enabled = false


ZNC


Нещодавно поставив собі баунсер:


Встановлення та налаштування IRC-баунсера ZNC в Linux


У цьому гайді, згадується релевантний пункт з вимикання модуля "simple_away", що може використовуватись для типу атак, що базуються на тайм-трекінгу:


Модуль "simple_away" в ZNC (скріншот)


soju


Ще один, більш сучасний, баунсер:


https://soju.im


Він застосовує зміну статусу "away" за замовченням. Вимикається це командою на прикладі окремої мережі:


/msg BouncerServ network update ID -auto-away false

XMPP


Протокол залежний від DNS, для Yggdrasil існують певні інтеграції, але я поки не розібрався для чого вони і чи впливають якимось чином на підвищення конфіденційності при користуванні XMPP в рамках цієї мережі:


Barev - Bonjour like Pidgin/libpurple plugin & protocol for Yggdrasil network


Dino


Тут власне просто нагадаю, що додаток надає опції приховування індикації написання відповіді, різних статусів. Як він обробляє зовнішю графіку і чи підтримує проксі - поки не знаю.


Monero


Якось недавно запустив у якості тестів Monero і був приємно здивований функціональністю GUI гаманця. Після того як біржа з моїми донатами накрилась, я перекочував на локальний гаманець, обравши цю валюту в якості основної. За одно, почав розбирати гаманець на технічні деталі, в своєму репертуарі.


Здивувало, що хоч ця валюта позиціонується як приватна, з приватного в неї - лише модель транзакцій. Конекти при цьому йдуть на Інтернет DNS (сіди). Почав копати рішення I2P, але рішень тому немає, все лише тільки в стадії розвитку, щонайменше саме для цікавого мені формату GUI:


140.196ɱ | i2p baked into the monero GUI

Гілка на GitHub


Оверлейні мережі


Yggdrasil


Випадково наткнувся на слушне зауваження:


клиент сети прослушивает все сетевые интерфейсы в поисках локальных пиров и всегда готов к ним подключиться. Чтобы часть трафика не шла через возможных соседей, необходимо в том же файле конфигурации полностью отключить прослушивание всех интерфейсов. Для этого секцию MulticastInterfaces необходимо оставить пустой. По умолчанию в ней прописано «.*»

джерело


Для цього в конфігі видаляємо стандартний об'єкт масиву:


MulticastInterfaces: [
    {
        Regex: .*
        Beacon: true
        Listen: true
        Password: ""
    }
]

і лишаємо:


MulticastInterfaces: []

Анонимное подключение к сети: Дополнительные настройки анонимности

http://[222:a8e4:50cd:55c:788e:b0a5:4e2f:a92c]/yggdrasil:mpd


Mycelium


Технічно, схожа модель роботи й в роутера Mycelium, але в його налаштуваннях використовується аргумент запуску `--disable-peer-discovery`:


If this flag is passed, the automatic link local peer discovery will not be enabled, and peers must be configured manually. If this is disabled on all local peers, communication between them will go over configured external peers.


Загальні рекомендації


Хоч це більше стосується сервер-сайду, на десктопі також варто звернути увагу і завчасно розставити права 0400-0600 на "чутливі" файли профілю окремих застосунків типу крипто-гаманців, роутерів та інших програм, особливо робота яких базується на приватних ключах і до яких мають доступ інтерактивні служби.


Посилання


Залишити коментар на BBS


Дивіться також


mat2: очищення мета-даних для різних форматів



/uk/