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

5 хв. читання
3 тижні тому

Враховуючи специфіку сучасних Веб-стандартів, при відвідуванні веб-сайтів у мережі Yggdrasil, можливі та цілком ймовірні фонові запити до зовнішніх Інтернет вузлів. Таким чином, може не контрольовано здійснюватись підвантаження сторонніх ресурсів сторінки, зокрема - графіки, стилів, скриптів та іншого. Наприклад, це може бути випадкове або спеціальне звернення веб сайту до ресурсів у зоні .ru (зокрема Yandex) або ви просто не бажаєте витоків персональної IP адреси до будь-яких вузлів Інтернет, наприклад - користуючись Yggdrasil в режимі інкогніто.

Нижче наведу невеличку нотатку, про те, як особисто я фільтрую не бажаний вихідний трафік з використанням SOCKS5 проксі Yggstack і окремим браузером для навігації в цій мережі - LibreWolf, на прикладі системи Fedora Linux.

Звертаю увагу, що дана інструкція не включає кроки з анонімізації - маскування відбитків, оновлення сесій, cookies, вимкнення акселерації та іншого. Це окрема тема, для якої існують спеціалізовані софт, додатки і навички. Тут ми просто контролюємо вихідний трафік в режимі Yggdrasil-only.

Yggstack

Yggstack - це невеличкий проксі сервер на базі Netstack, що містить в собі ізольований екземпляр вузла Yggdrasil (так само, як Yggmail) і надає локальний інтерфейс для підключення до нього браузеру (чи іншого додатку) для проксування в діапазоні 0200::/7.

Залежності

Тут достатньо встановити актуальну версію Go. Про це я вже писав у матеріалі Встановлення останньої версії Go в Debian.

Встановлення

Збираємо приблизно так само, як Yggdrasil:

  1. git clone https://github.com/yggdrasil-network/yggstack.git
  2. cd yggstack - переходимо в робочу теку
  3. ./build - компілюємо
  4. sudo ./yggstack -genconf > /etc/yggstack.conf - генеруємо конфігурацію
    • якщо користуєтесь в оверлеї, також не забудьте вказати екзіт-ноду в Peers
  5. sudo mv yggstack /usr/local/bin/yggstack - копіюємо в штатну директорію бінарних програм
  6. sudo restorecon -rv /usr/local/bin/yggstack - корегуємо доступи на виконання

Systemd

Оскільки Yggstack, в принципі, створений щоб запускатись без tun інтерфейсу і root, створимо системний сервіс з виконанням від поточного системного користувача. Якщо не плануєте його запускати на фоні, можна цей крок пропустити і запуститись командою:

/usr/local/bin/yggstack -useconffile /etc/yggstack.conf -socks 127.0.0.1:1080

Або ж створіть файл конфігурації командою sudo nano /etc/systemd/system/yggstack.service, додавши наступний вміст:

[Unit]
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=USER
Group=GROUP
ExecStart=/usr/local/bin/yggstack -useconffile /etc/yggstack.conf -socks 127.0.0.1:1080
StandardOutput=null
StandardError=null
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • USER/GROUP змінюємо на актуальні
  • StandardOutput і StandardError можна вказати як file:///path/to/log, якщо потрібне ведення журналу у файл
  • sudo systemctl daemon-reload - потрібно якщо файл вже існує (оновлення)
  • sudo systemctl restart yggstack - якщо потрібен автозапуск при старті системи
  • sudo systemctl restart yggstack - запуск (в режимі рестарт)
  • sudo systemctl status yggstack - перевіряємо чи сервіс працює

Браузер

Як писав вище, для цієї мережі я користуюсь окремим браузером LibreWolf з трохи іншим пресетом, для зручності. В принципі, ті само кроки актуальні й для FireFox.

  1. Переходимо в Settings -> Proxy / Network settings -> Manual proxy configuration
  2. В SOCKS Host пишемо наші локальні хост 127.0.0.1 і порт 1080
  3. Переконуємось, щоб версія була відмічена як SOCKS v5

Конфігурація PAC

Я додатково користуюсь файлом PAC, щоб зароутити всі запити, що не відносяться до мережі Yggdrasil на фіктивний проксі, щоб швидше прискорити відвантаження сторінки. Інакше браузер буде намагатись відрезольвити ресурси з незначною затримкою.

Цього можна не робити, адже Yggstack і так відфільтрує подібні запити, оскільки він працює виключно в діапазоні IPv6/0200::/7. Але приклад нижче лишу, якщо ви хочете користуватись цим проксі на обидві мережі, закоментувавши останній return:

function FindProxyForURL(url, host)
{
  // спрямовуємо трафік Yggdrasil по регулярному виразу на проксі Yggstack
  // цей приклад також включає доменні зони .ygg якщо користуєтесь Alfis DNS
  if (/^0{0,1}[2-3][a-f0-9]{0,2}:/.test(host) || /\.ygg$/.test(host)) {
    return 'SOCKS5 127.0.0.1:1080; DIRECT';
  }
  return 'PROXY 127.0.0.1:123'; // видаліть цей рядок, якщо хочете працювати з усіма мережами
                                // або вкажіть окремий проксі для цих мереж, наприклад Tor
}
  • шлях до даного файлу потрібно вказати у полі Automatic proxy configuration URL у форматі file:///path/to/file (якщо зберігаєте його локально)
  • також, в мене працює окремий від Yggstack інтерфейс Yggdrasil для інших служб, таких як Bittorrent і радіо Rhythmbox. Тому для основного браузеру Firefox, я створив інший файл PAC з протилежними умовами, щоб виключити випадкове звернення до ресурсів Yggdrasil з нього.
  • щоб не плутатись в обох клонах Firefox, я користуюсь різними темами оформлення.

Тестування підключення

Відкриваємо будь який сайт з каталогу http://[21e:a51c:885b:7db0:166e:927:98cd:d186], переходимо в режим дебагу Ctrl+Shift+i та дивимось заблоковані запити, якщо такі є.

  • щоб вимкнути форсований редірект HTTP > HTTPS, в about:config встановіть опцію browser.fixup.fallback-to-https:false

Для аналізу системного трафіку, мені подобається TUI утиліта iptraf (iptraf-ng), або GUI etherape, Sniffnet та інші.

Додаткова фільтрація

Опціонально, можна додати правила на iptables, особливо це зручно, якщо користуєтесь окремим контейнером:

ufw default deny outgoing
ufw allow out to PUBLIC_PEER_IP
ufw allow out to 0200::/7 from any
  • на Fedora, замість CLI ufw, для firewalld мені зручніше налаштовувати потрібні зони через GUI за допомогою firewall-config

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

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
p.s. 767
Приєднався: 1 рік тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід