fproxy v83 — локальний проксі-сервер для фільтрації http(s)-трафіку

Опубліковано 83-ту версію кешируючого та антиспамного проксі-сервера для персонального використання з гнучкими налаштуваннями.

Основні функції (все налаштовується):

  1. фільтрація небажаного контенту (білі/чорні списки на урли, заборона кук);
  2. примусове та безстрокове кешування отриманих даних (в основному зручне для картинок та скриптів);
  3. виправлення вмісту веб-сторінок на льоту (правкою вихідника на Сі, є приклад для заміни змісту сторінок-клонів stackoverflow посиланням на оригінал);
  4. чорні/білі списки сертифікатів та certificate pinning за списком;
  5. заміна айпі-адреси/домена/шляху/протоколу http-запиту за конфігом (такий розширений варіант /etc/hosts);
  6. http/https-сніфер.

Прекрасно підходить для перегляду сайтів через повільний інтернет або з повільного пристрою (завдяки п.1 і 2, заради яких спочатку все і затівалося), але корисно в будь-якому випадку.

Проксі-сервер з метою безпеки та спрощення логіки роботи поділено на три частини: TLS-сервер (термінуючий браузерні підключення), центральний модуль проксі та клієнт, що термінує вихідні підключення.

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

Приклад списку блокування:

deny nosub all share.yandex.ru browser-updater.yandex.net deny nosub all a.ria.ru # ? deny nosub spec vk.com query /share.php deny nosub spec yastatic.net query /pcode/adfox/loader.js query /share2/share.js deny nosub spec www.youtube.com query /subscribe_widget deny nosub spec pano.img .ria.ru query /adriver/flashplagin/movie.swf deny nosub spec a.ria.ru query /ping deny nosub spec n-ssl.ria.ru query .js deny nosub spec yandex.ru pref /clck/safeclick/ pref /clck/click/ pref /clck/jclck/ deny all spec query /tnc # index.ru proxied counter exact /tnc.js # index.ru proxied counter query /pixel.gif # some spammers use this

Приклад списку роутингу:

https://my.local.site set proxy none set target http://127.0.0.1:1234/localsite set http_host new.host:1234 .intel.com resolve off set proxy socks5://127.0.0.1:3333

У разі оновлення з старішої версії ніж 78 слід конвертувати кеш: зайти в робочу директорію проксі-сервера від користувача (uid/gid) проксі-сервера і виконати fproxy-cacheconv-78 (за замовчуванням ця програма не компілюється).

Зміни з минулої версії (80):

  1. fproxy-dashboard тепер має опцію для показу розмірів контенту в байтах, а не кбайтах;
  2. підтримка багнутих серверів, що ігнорують заголовок "Connection: close";
  3. підтримка багнутих серверів, що дають некоректний заголовок "Content-Encoding: identity";
  4. відправлення TLS-опції ALPN;
  5. покращення роботи TLS-термінатора зовнішньої сторони (клієнта): він тепер підтримує не тільки TLS, але й звичайні з'єднання, підтримує роботу у вигляді незалежного демона з прийомом запитів від основного проксі по мережі, а також може прокидати свої вихідні з'єднання через інше проксі, таким як таким чином дозволяючи гнучко розділяти завдання між вузлами в умовах поганого інтернет-з'єднання та/або необхідності організувати «вихід» трафіку десь на віддаленому сервері різного ступеня довіреності; так само нова версія зручніша для використання вручну з командного рядка як консольний TLS-клієнт з підтримкою проксування;
  6. спрощена збірка, тепер є Makefile замість шелл-скриптів
  7. організовано передзбирані .deb-пакети в репозиторії (для версій Debian 8-12)
  8. зміни файлу конфігурації, зворотно-несумісні
  9. новий конфіг для керування роутингом запитів, що об'єднав раніше колишні окремі конфіги resolv і включення прокидання вихідних з'єднань на віддалений сервер, а також одержав ряд нових опцій: тепер можна для кожного URL-адреси (протокол, домен, порт, шлях) вибирати через який клієнт яке проксі він буде відправлений, через чий днс-сервер буде проводитися визначення його айпі-адреси (включаючи опціональне делегування цього завдання зовнішньому проксі-серверу http або socks5), або прописати адресу вручну, а також замінити протокол, порт або префікс шляху url -а
  10. додано підтримку SAN-сертифікатів для ip-адрес і в клієнті і в сервері (браузери з деяких пір перестали приймати ip-адреси в CommonName)

У планах на майбутнє:

  1. підтримка CGI/FastCGI/.so хуків для mitm-обробки отриманого від сайтів контенту
  2. менеджер профілів та конфігурацій проксі
  3. інтерактивне керування перевіркою сертифікатів віддалених сайтів та списками блокувань

Джерело: linux.org.ru

Додати коментар або відгук